From 4caacdb184ef33368ce35a7addcde06573725792 Mon Sep 17 00:00:00 2001 From: apanizo Date: Sun, 27 May 2018 12:07:58 +0200 Subject: [PATCH 01/14] WA-238 Implementation and UI adaptation to process ttransactions --- .../AddTransaction/MultisigForm/index.jsx | 2 +- .../AddTransaction/ReviewTx/index.jsx | 2 +- ...{transactions.js => createTransactions.js} | 0 .../safe/component/AddTransaction/index.jsx | 2 +- .../AddTransaction/test/transactions.test.js | 2 +- src/routes/safe/component/Safe.txs.test.js | 2 +- .../Transactions/Collapsed/index.jsx | 9 +- .../Transactions/Transaction/index.jsx | 27 +++- .../safe/component/Transactions/actions.js | 10 ++ .../safe/component/Transactions/index.jsx | 25 ++-- .../Transactions/processTransactions.js | 128 ++++++++++++++++++ .../safe/component/Transactions/selector.js | 3 + 12 files changed, 185 insertions(+), 27 deletions(-) rename src/routes/safe/component/AddTransaction/{transactions.js => createTransactions.js} (100%) create mode 100644 src/routes/safe/component/Transactions/actions.js create mode 100644 src/routes/safe/component/Transactions/processTransactions.js diff --git a/src/routes/safe/component/AddTransaction/MultisigForm/index.jsx b/src/routes/safe/component/AddTransaction/MultisigForm/index.jsx index 66771bf8..f0393c33 100644 --- a/src/routes/safe/component/AddTransaction/MultisigForm/index.jsx +++ b/src/routes/safe/component/AddTransaction/MultisigForm/index.jsx @@ -5,7 +5,7 @@ import TextField from '~/components/forms/TextField' import { composeValidators, inLimit, mustBeNumber, required, greaterThan, mustBeEthereumAddress } from '~/components/forms/validator' import Block from '~/components/layout/Block' import Heading from '~/components/layout/Heading' -import { TX_NAME_PARAM, TX_DESTINATION_PARAM, TX_VALUE_PARAM } from '~/routes/safe/component/AddTransaction/transactions' +import { TX_NAME_PARAM, TX_DESTINATION_PARAM, TX_VALUE_PARAM } from '~/routes/safe/component/AddTransaction/createTransactions' export const CONFIRMATIONS_ERROR = 'Number of confirmations can not be higher than the number of owners' diff --git a/src/routes/safe/component/AddTransaction/ReviewTx/index.jsx b/src/routes/safe/component/AddTransaction/ReviewTx/index.jsx index e8e004d6..86524b60 100644 --- a/src/routes/safe/component/AddTransaction/ReviewTx/index.jsx +++ b/src/routes/safe/component/AddTransaction/ReviewTx/index.jsx @@ -5,7 +5,7 @@ import Block from '~/components/layout/Block' import Bold from '~/components/layout/Bold' import Heading from '~/components/layout/Heading' import Paragraph from '~/components/layout/Paragraph' -import { TX_NAME_PARAM, TX_DESTINATION_PARAM, TX_VALUE_PARAM } from '~/routes/safe/component/AddTransaction/transactions' +import { TX_NAME_PARAM, TX_DESTINATION_PARAM, TX_VALUE_PARAM } from '~/routes/safe/component/AddTransaction/createTransactions' type FormProps = { values: Object, diff --git a/src/routes/safe/component/AddTransaction/transactions.js b/src/routes/safe/component/AddTransaction/createTransactions.js similarity index 100% rename from src/routes/safe/component/AddTransaction/transactions.js rename to src/routes/safe/component/AddTransaction/createTransactions.js diff --git a/src/routes/safe/component/AddTransaction/index.jsx b/src/routes/safe/component/AddTransaction/index.jsx index 1fe11a57..8acf7df8 100644 --- a/src/routes/safe/component/AddTransaction/index.jsx +++ b/src/routes/safe/component/AddTransaction/index.jsx @@ -6,7 +6,7 @@ import { sleep } from '~/utils/timer' import { type Safe } from '~/routes/safe/store/model/safe' import actions, { type Actions } from './actions' import selector, { type SelectorProps } from './selector' -import { createTransaction, TX_NAME_PARAM, TX_DESTINATION_PARAM, TX_VALUE_PARAM } from './transactions' +import { createTransaction, TX_NAME_PARAM, TX_DESTINATION_PARAM, TX_VALUE_PARAM } from './createTransactions' import MultisigForm from './MultisigForm' import ReviewTx from './ReviewTx' diff --git a/src/routes/safe/component/AddTransaction/test/transactions.test.js b/src/routes/safe/component/AddTransaction/test/transactions.test.js index c3a2894d..367403bf 100644 --- a/src/routes/safe/component/AddTransaction/test/transactions.test.js +++ b/src/routes/safe/component/AddTransaction/test/transactions.test.js @@ -1,6 +1,6 @@ // @flow import { List, Map } from 'immutable' -import { storeTransaction, buildConfirmationsFrom, EXECUTED_CONFIRMATION_HASH, buildExecutedConfirmationFrom } from '~/routes/safe/component/AddTransaction/transactions' +import { storeTransaction, buildConfirmationsFrom, EXECUTED_CONFIRMATION_HASH, buildExecutedConfirmationFrom } from '~/routes/safe/component/AddTransaction/createTransactions' import { type Transaction } from '~/routes/safe/store/model/transaction' import { SafeFactory } from '~/routes/safe/store/test/builder/safe.builder' import { type Safe } from '~/routes/safe/store/model/safe' diff --git a/src/routes/safe/component/Safe.txs.test.js b/src/routes/safe/component/Safe.txs.test.js index 5cbc1a16..1567f58c 100644 --- a/src/routes/safe/component/Safe.txs.test.js +++ b/src/routes/safe/component/Safe.txs.test.js @@ -90,7 +90,7 @@ describe('React DOM TESTS > Withdrawn funds from safe', () => { TestUtils.Simulate.click(paragraphs[2]) // expanded await sleep(1000) // Time to expand const paragraphsExpanded = TestUtils.scryRenderedDOMComponentsWithTag(Transaction, 'p') - const txHashParagraph = paragraphsExpanded[paragraphsExpanded.length - 1] + const txHashParagraph = paragraphsExpanded[3] const transactions = safeTransactionsSelector(store.getState(), { safeAddress: address }) const batteryTx = transactions.get(0) diff --git a/src/routes/safe/component/Transactions/Collapsed/index.jsx b/src/routes/safe/component/Transactions/Collapsed/index.jsx index f81ede1d..21761f47 100644 --- a/src/routes/safe/component/Transactions/Collapsed/index.jsx +++ b/src/routes/safe/component/Transactions/Collapsed/index.jsx @@ -15,7 +15,6 @@ type Props = { safeName: string, confirmations: ImmutableList, destination: string, - tx: string, } const listStyle = { @@ -25,7 +24,7 @@ const listStyle = { class Collapsed extends React.PureComponent { render() { const { - confirmations, destination, safeName, tx, + confirmations, destination, safeName, } = this.props return ( @@ -41,12 +40,6 @@ class Collapsed extends React.PureComponent { - { tx && - - - - - } diff --git a/src/routes/safe/component/Transactions/Transaction/index.jsx b/src/routes/safe/component/Transactions/Transaction/index.jsx index f36012e8..c1956410 100644 --- a/src/routes/safe/component/Transactions/Transaction/index.jsx +++ b/src/routes/safe/component/Transactions/Transaction/index.jsx @@ -11,20 +11,25 @@ import Avatar from 'material-ui/Avatar' import AttachMoney from 'material-ui-icons/AttachMoney' import Atm from 'material-ui-icons/LocalAtm' import DoneAll from 'material-ui-icons/DoneAll' +import CompareArrows from 'material-ui-icons/CompareArrows' import Collapsed from '~/routes/safe/component/Transactions/Collapsed' import { type Transaction } from '~/routes/safe/store/model/transaction' import Hairline from '~/components/layout/Hairline/index' +import Button from '~/components/layout/Button' import selector, { type SelectorProps } from './selector' type Props = Open & SelectorProps & { transaction: Transaction, safeName: string, + onProcessTx: (tx: Transaction, alreadyConfirmed: number) => void, } +export const PROCESS_TXS = 'PROCESS TRANSACTION' + class GnoTransaction extends React.PureComponent { render() { const { - open, toggle, transaction, confirmed, safeName, + open, toggle, transaction, confirmed, safeName, onProcessTx, } = this.props const txHash = transaction.get('tx') @@ -51,12 +56,30 @@ class GnoTransaction extends React.PureComponent { + + + { txHash && + + + + + } + { !txHash && + + } + + { open && } diff --git a/src/routes/safe/component/Transactions/actions.js b/src/routes/safe/component/Transactions/actions.js new file mode 100644 index 00000000..681ad469 --- /dev/null +++ b/src/routes/safe/component/Transactions/actions.js @@ -0,0 +1,10 @@ +// @flow +import fetchTransactions from '~/routes/safe/store/actions/fetchTransactions' + +export type Actions = { + fetchTransactions: typeof fetchTransactions, +} + +export default { + fetchTransactions, +} diff --git a/src/routes/safe/component/Transactions/index.jsx b/src/routes/safe/component/Transactions/index.jsx index 11c595f0..5dac8846 100644 --- a/src/routes/safe/component/Transactions/index.jsx +++ b/src/routes/safe/component/Transactions/index.jsx @@ -4,22 +4,23 @@ import { connect } from 'react-redux' import { type Transaction } from '~/routes/safe/store/model/transaction' import NoTransactions from '~/routes/safe/component/Transactions/NoTransactions' import GnoTransaction from '~/routes/safe/component/Transactions/Transaction' +import { sleep } from '~/utils/timer' +import { processTransaction } from './processTransactions' import selector, { type SelectorProps } from './selector' +import actions, { type Actions } from './actions' -type Props = SelectorProps & { +type Props = SelectorProps & Actions & { onAddTx: () => void, safeName: string, + safeAddress: string, + } - class Transactions extends React.Component { - onConfirm = () => { - // eslint-disable-next-line - console.log("Confirming tx") - } - - onExecute = () => { - // eslint-disable-next-line - console.log("Confirming tx") + onProcessTx = async (tx: Transaction, alreadyConfirmed: number) => { + const { fetchTransactions, safeAddress, userAddress } = this.props + await processTransaction(safeAddress, tx, alreadyConfirmed, userAddress) + await sleep(1200) + fetchTransactions() } render() { @@ -29,7 +30,7 @@ class Transactions extends React.Component { return ( { hasTransactions - ? transactions.map((tx: Transaction) => ) + ? transactions.map((tx: Transaction) => ) : } @@ -37,4 +38,4 @@ class Transactions extends React.Component { } } -export default connect(selector)(Transactions) +export default connect(selector, actions)(Transactions) diff --git a/src/routes/safe/component/Transactions/processTransactions.js b/src/routes/safe/component/Transactions/processTransactions.js new file mode 100644 index 00000000..b39756f7 --- /dev/null +++ b/src/routes/safe/component/Transactions/processTransactions.js @@ -0,0 +1,128 @@ +// @flow +import { List } from 'immutable' +import { type Owner } from '~/routes/safe/store/model/owner' +import { load, TX_KEY } from '~/utils/localStorage' +import { type Confirmation, makeConfirmation } from '~/routes/safe/store/model/confirmation' +import { makeTransaction, type Transaction } from '~/routes/safe/store/model/transaction' +import { getGnosisSafeContract } from '~/wallets/safeContracts' +import { getWeb3 } from '~/wallets/getWeb3' +import { EXECUTED_CONFIRMATION_HASH } from '~/routes/safe/component/AddTransaction/createTransactions' + +export const updateTransaction = ( + name: string, + nonce: number, + destination: string, + value: number, + creator: string, + confirmations: List, + tx: string, + safeAddress: string, + safeThreshold: number, +) => { + const transaction: Transaction = makeTransaction({ + name, nonce, value, confirmations, destination, threshold: safeThreshold, tx, + }) + + const safeTransactions = load(TX_KEY) || {} + const transactions = safeTransactions[safeAddress] + const txsRecord = transactions ? List(transactions) : List([]) + + const index = txsRecord.findIndex((trans: Transaction) => trans.get('nonce') === nonce) + + safeTransactions[safeAddress] = txsRecord.update(index, transaction) + + localStorage.setItem(TX_KEY, JSON.stringify(safeTransactions)) +} + +const getData = () => '0x' +const getOperation = () => 0 + +const execTransaction = async ( + gnosisSafe: any, + destination: string, + txValue: number, + nonce: number, + executor: string, +) => { + const data = getData() + const CALL = getOperation() + const web3 = getWeb3() + const valueInWei = web3.toWei(txValue, 'ether') + const txReceipt = await gnosisSafe.execTransactionIfApproved(destination, valueInWei, data, CALL, nonce, { from: executor, gas: '5000000' }) + + return txReceipt +} + +const execConfirmation = async ( + gnosisSafe: any, + txDestination: string, + txValue: number, + nonce: number, + executor: string, +) => { + const data = getData() + const CALL = getOperation() + const web3 = getWeb3() + const valueInWei = web3.toWei(txValue, 'ether') + const txConfirmationReceipt = await gnosisSafe.approveTransactionWithParameters(txDestination, valueInWei, data, CALL, nonce, { from: executor, gas: '5000000' }) + + return txConfirmationReceipt +} + +const updateConfirmations = (confirmations: List, userAddress: string, txHash: string) => + confirmations.map((confirmation: Confirmation) => { + const owner: Owner = confirmation.get('owner') + const status: boolean = owner.get('address') === userAddress ? true : confirmation.get('status') + const hash: string = owner.get('address') === userAddress ? txHash : confirmation.get('hash') + + return makeConfirmation({ owner, status, hash }) + }) + +export const processTransaction = async ( + safeAddress: string, + tx: Transaction, + alreadyConfirmed: number, + userAddress: string, +) => { + const web3 = getWeb3() + const GnosisSafe = await getGnosisSafeContract(web3) + const gnosisSafe = GnosisSafe.at(safeAddress) + + const confirmations = tx.get('confirmations') + const userHasAlreadyConfirmed = confirmations.filter((confirmation: Confirmation) => { + const ownerAddress = confirmation.get('owner').get('address') + const samePerson = ownerAddress === userAddress + + return samePerson && confirmation.get('status') + }).count() > 0 + + if (userHasAlreadyConfirmed) { + throw new Error('Owner has already confirmed this transaction') + } + + const threshold = tx.get('threshold') + const thresholdReached = threshold >= alreadyConfirmed + 1 + const nonce = tx.get('nonce') + const txName = tx.get('name') + const txValue = tx.get('value') + const txDestination = tx.get('destination') + + const txReceipt = thresholdReached + ? await execTransaction(gnosisSafe, txDestination, txValue, nonce, userAddress) + : await execConfirmation(gnosisSafe, txDestination, txValue, nonce, userAddress) + + const confirmationHash = thresholdReached ? EXECUTED_CONFIRMATION_HASH : txReceipt.tx + const executedConfirmations: List = updateConfirmations(tx.get('confirmations'), userAddress, confirmationHash) + + return updateTransaction( + txName, + nonce, + txDestination, + txValue, + userAddress, + executedConfirmations, + txReceipt.tx, + safeAddress, + threshold + 1, + ) +} diff --git a/src/routes/safe/component/Transactions/selector.js b/src/routes/safe/component/Transactions/selector.js index 1941f7c5..4d3c1a6f 100644 --- a/src/routes/safe/component/Transactions/selector.js +++ b/src/routes/safe/component/Transactions/selector.js @@ -3,11 +3,14 @@ import { List } from 'immutable' import { createStructuredSelector } from 'reselect' import { type Transaction } from '~/routes/safe/store/model/transaction' import { safeTransactionsSelector } from '~/routes/safe/store/selectors/index' +import { userAccountSelector } from '~/wallets/store/selectors/index' export type SelectorProps = { transactions: List, + userAddress: userAccountSelector, } export default createStructuredSelector({ transactions: safeTransactionsSelector, + userAddress: userAccountSelector, }) From 8e908bb5fc750c442eaaecd5f6c5ebe755899922 Mon Sep 17 00:00:00 2001 From: apanizo Date: Sun, 27 May 2018 12:16:19 +0200 Subject: [PATCH 02/14] WA-238 Added a test for assuring grantedSelector works in a case-insentive mode --- src/routes/safe/container/selector.js | 2 +- .../safe/store/test/granted.selector.js | 23 ++++++++++++++++++- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/src/routes/safe/container/selector.js b/src/routes/safe/container/selector.js index 63300566..4e3fbf83 100644 --- a/src/routes/safe/container/selector.js +++ b/src/routes/safe/container/selector.js @@ -30,7 +30,7 @@ export const grantedSelector: Selector = crea return false } - return owners.find((owner: Owner) => owner.get('address') === userAccount) !== undefined + return owners.find((owner: Owner) => owner.get('address').toLocaleLowerCase() === userAccount.toLocaleLowerCase()) !== undefined }, ) diff --git a/src/routes/safe/store/test/granted.selector.js b/src/routes/safe/store/test/granted.selector.js index 2a984643..ef611208 100644 --- a/src/routes/safe/store/test/granted.selector.js +++ b/src/routes/safe/store/test/granted.selector.js @@ -16,7 +16,7 @@ const grantedSelectorTests = () => { }) describe('Safe Selector[grantedSelector]', () => { - it('should be granted to operate when a safe when the user is owner', () => { + it('should be granted to operate a safe when the user is owner', () => { // GIVEN let map: Map = Map() map = map.set('fooAddress', SafeFactory.oneOwnerSafe(provider.account)) @@ -37,6 +37,27 @@ const grantedSelectorTests = () => { expect(granted).toBe(true) }) + it('should be granted to operate a safe when the user is owner in case-insensitive', () => { + // GIVEN + let map: Map = Map() + map = map.set('fooAddress', SafeFactory.oneOwnerSafe(provider.account.toUpperCase())) + + const match: Match = buildMathPropsFrom('fooAddress') + + const reduxStore = { + [SAFE_REDUCER_ID]: map, + providers: makeProvider(provider), + balances: undefined, + transactions: undefined, + } + + // WHEN + const granted = grantedSelector(reduxStore, { match }) + + // THEN + expect(granted).toBe(true) + }) + it('should NOT be granted to operate with a Safe when the user is NOT owner', () => { // GIVEN let map: Map = Map() From efe2905526be27f8a703f39a073861846ecfe9d0 Mon Sep 17 00:00:00 2001 From: apanizo Date: Sun, 27 May 2018 12:24:50 +0200 Subject: [PATCH 03/14] WA-238 Fix automic onClick calls --- .../safe/component/Transactions/Transaction/index.jsx | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/routes/safe/component/Transactions/Transaction/index.jsx b/src/routes/safe/component/Transactions/Transaction/index.jsx index c1956410..be4a18d5 100644 --- a/src/routes/safe/component/Transactions/Transaction/index.jsx +++ b/src/routes/safe/component/Transactions/Transaction/index.jsx @@ -27,9 +27,11 @@ type Props = Open & SelectorProps & { export const PROCESS_TXS = 'PROCESS TRANSACTION' class GnoTransaction extends React.PureComponent { + onProccesClick = () => this.props.onProcessTx(this.props.transaction, this.props.confirmed) + render() { const { - open, toggle, transaction, confirmed, safeName, onProcessTx, + open, toggle, transaction, confirmed, safeName, } = this.props const txHash = transaction.get('tx') @@ -68,7 +70,7 @@ class GnoTransaction extends React.PureComponent { From bd00e4a5174d835f4fb83c1ee385888820236afe Mon Sep 17 00:00:00 2001 From: apanizo Date: Sun, 27 May 2018 13:24:10 +0200 Subject: [PATCH 04/14] WA-238 update safe-contracts --- .../build/contracts/CreateAndAddModule.json | 1221 --- .../build/contracts/CreateAndAddModules.json | 600 +- .../build/contracts/DailyLimitModule.json | 6650 ++++++---------- .../DailyLimitModuleWithSignature.json | 2573 ------ .../contracts/DelegateConstructorProxy.json | 46 +- .../build/contracts/ERC20Token.json | 1799 +++++ safe-contracts/build/contracts/Enum.json | 86 +- .../build/contracts/GnosisSafe.json | 402 +- .../contracts/GnosisSafePersonalEdition.json | 6024 ++++++++------ .../GnosisSafeStateChannelEdition.json | 5469 ------------- .../contracts/GnosisSafeTeamEdition.json | 6968 ++++++++--------- .../build/contracts/MasterCopy.json | 302 +- .../build/contracts/Migrations.json | 634 +- safe-contracts/build/contracts/Module.json | 498 +- .../build/contracts/ModuleManager.json | 3770 ++++----- safe-contracts/build/contracts/MultiSend.json | 136 +- .../build/contracts/MultiSendStruct.json | 1688 ---- .../build/contracts/OwnerManager.json | 3766 ++++----- .../build/contracts/PayingProxy.json | 1234 ++- safe-contracts/build/contracts/Proxy.json | 434 +- .../build/contracts/ProxyFactory.json | 484 +- .../build/contracts/SelfAuthorized.json | 186 +- .../build/contracts/SocialRecoveryModule.json | 3288 ++++---- .../build/contracts/StateChannelModule.json | 2864 +++---- .../build/contracts/WhitelistModule.json | 1636 ++-- 25 files changed, 22090 insertions(+), 30668 deletions(-) delete mode 100644 safe-contracts/build/contracts/CreateAndAddModule.json delete mode 100644 safe-contracts/build/contracts/DailyLimitModuleWithSignature.json create mode 100644 safe-contracts/build/contracts/ERC20Token.json delete mode 100644 safe-contracts/build/contracts/GnosisSafeStateChannelEdition.json delete mode 100644 safe-contracts/build/contracts/MultiSendStruct.json diff --git a/safe-contracts/build/contracts/CreateAndAddModule.json b/safe-contracts/build/contracts/CreateAndAddModule.json deleted file mode 100644 index f6c838d6..00000000 --- a/safe-contracts/build/contracts/CreateAndAddModule.json +++ /dev/null @@ -1,1221 +0,0 @@ -{ - "contractName": "CreateAndAddModule", - "abi": [ - { - "constant": false, - "inputs": [ - { - "name": "module", - "type": "address" - } - ], - "name": "addModule", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "proxyFactory", - "type": "address" - }, - { - "name": "data", - "type": "bytes" - } - ], - "name": "createAndAddModule", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - } - ], - "bytecode": "0x608060405234801561001057600080fd5b50610253806100206000396000f30060806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680631ed86f1914610051578063250ad41214610094575b600080fd5b34801561005d57600080fd5b50610092600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061011d565b005b3480156100a057600080fd5b5061011b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050610122565b005b600080fd5b600061012e83836101e8565b90503073ffffffffffffffffffffffffffffffffffffffff16631ed86f19826040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b1580156101cb57600080fd5b505af11580156101df573d6000803e3d6000fd5b50505050505050565b60006040516000602082855160208701885af4141561020657600080fd5b73ffffffffffffffffffffffffffffffffffffffff815116915050929150505600a165627a7a72305820a69aa3f8b7eccb408d63a4c5990d1f9082b38369bf3c801ed918bfa3abd34d320029", - "deployedBytecode": "0x60806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680631ed86f1914610051578063250ad41214610094575b600080fd5b34801561005d57600080fd5b50610092600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061011d565b005b3480156100a057600080fd5b5061011b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050610122565b005b600080fd5b600061012e83836101e8565b90503073ffffffffffffffffffffffffffffffffffffffff16631ed86f19826040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b1580156101cb57600080fd5b505af11580156101df573d6000803e3d6000fd5b50505050505050565b60006040516000602082855160208701885af4141561020657600080fd5b73ffffffffffffffffffffffffffffffffffffffff815116915050929150505600a165627a7a72305820a69aa3f8b7eccb408d63a4c5990d1f9082b38369bf3c801ed918bfa3abd34d320029", - "sourceMap": "190:1054:15:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;190:1054:15;;;;;;;", - "deployedSourceMap": "190:1054:15:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;349:78;;8:9:-1;5:2;;;30:1;27;20:12;5:2;349:78:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;611:178;;8:9:-1;5:2;;;30:1;27;20:12;5:2;611:178:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;349:78;412:8;;;611:178;702:13;718:32;731:12;745:4;718:12;:32::i;:::-;702:48;;760:4;:14;;;775:6;760:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;760:22:15;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;760:22:15;;;;611:178;;;:::o;795:447::-;885:13;1021:4;1015:11;1122:1;1115:4;1107:6;1100:4;1094:11;1087:4;1081;1077:15;1063:12;1058:3;1045:75;1042:82;1039:2;;;1137:1;1134;1127:12;1039:2;1183:42;1174:6;1168:13;1164:62;1154:72;;987:249;;;;;:::o", - "source": "pragma solidity 0.4.23;\nimport \"../Module.sol\";\n\n\n/// @title Create and Add Module - Allows to create and add a new module in one transaction.\n/// @author Stefan George - \ncontract CreateAndAddModule {\n\n /// @dev Function required to compile contract. Gnosis Safe function is called instead.\n /// @param module Not used.\n function addModule(Module module)\n public\n {\n revert();\n }\n\n /// @dev Allows to create and add a new module in one transaction.\n /// @param proxyFactory Module proxy factory contract.\n /// @param data Module constructor payload.\n function createAndAddModule(address proxyFactory, bytes data)\n public\n {\n Module module = createModule(proxyFactory, data);\n this.addModule(module);\n }\n\n function createModule(address proxyFactory, bytes data)\n internal\n returns (Module module)\n {\n // solium-disable-next-line security/no-inline-assembly\n assembly {\n let output := mload(0x40)\n if eq(delegatecall(gas, proxyFactory, add(data, 0x20), mload(data), output, 0x20), 0) { revert(0, 0) }\n module := and(mload(output), 0xffffffffffffffffffffffffffffffffffffffff)\n }\n }\n}\n", - "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/libraries/CreateAndAddModule.sol", - "ast": { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/libraries/CreateAndAddModule.sol", - "exportedSymbols": { - "CreateAndAddModule": [ - 1604 - ] - }, - "id": 1605, - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 1561, - "literals": [ - "solidity", - "0.4", - ".23" - ], - "nodeType": "PragmaDirective", - "src": "0:23:15" - }, - { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Module.sol", - "file": "../Module.sol", - "id": 1562, - "nodeType": "ImportDirective", - "scope": 1605, - "sourceUnit": 878, - "src": "24:23:15", - "symbolAliases": [], - "unitAlias": "" - }, - { - "baseContracts": [], - "contractDependencies": [], - "contractKind": "contract", - "documentation": "@title Create and Add Module - Allows to create and add a new module in one transaction.\n @author Stefan George - ", - "fullyImplemented": true, - "id": 1604, - "linearizedBaseContracts": [ - 1604 - ], - "name": "CreateAndAddModule", - "nodeType": "ContractDefinition", - "nodes": [ - { - "body": { - "id": 1570, - "nodeType": "Block", - "src": "402:25:15", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 1567, - "name": "revert", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 2470, - 2471 - ], - "referencedDeclaration": 2470, - "src": "412:6:15", - "typeDescriptions": { - "typeIdentifier": "t_function_revert_pure$__$returns$__$", - "typeString": "function () pure" - } - }, - "id": 1568, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "412:8:15", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1569, - "nodeType": "ExpressionStatement", - "src": "412:8:15" - } - ] - }, - "documentation": "@dev Function required to compile contract. Gnosis Safe function is called instead.\n @param module Not used.", - "id": 1571, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "addModule", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1565, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1564, - "name": "module", - "nodeType": "VariableDeclaration", - "scope": 1571, - "src": "368:13:15", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$877", - "typeString": "contract Module" - }, - "typeName": { - "contractScope": null, - "id": 1563, - "name": "Module", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 877, - "src": "368:6:15", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$877", - "typeString": "contract Module" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "367:15:15" - }, - "payable": false, - "returnParameters": { - "id": 1566, - "nodeType": "ParameterList", - "parameters": [], - "src": "402:0:15" - }, - "scope": 1604, - "src": "349:78:15", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 1591, - "nodeType": "Block", - "src": "692:97:15", - "statements": [ - { - "assignments": [ - 1579 - ], - "declarations": [ - { - "constant": false, - "id": 1579, - "name": "module", - "nodeType": "VariableDeclaration", - "scope": 1592, - "src": "702:13:15", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$877", - "typeString": "contract Module" - }, - "typeName": { - "contractScope": null, - "id": 1578, - "name": "Module", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 877, - "src": "702:6:15", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$877", - "typeString": "contract Module" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1584, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1581, - "name": "proxyFactory", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1573, - "src": "731:12:15", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 1582, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1575, - "src": "745:4:15", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 1580, - "name": "createModule", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1603, - "src": "718:12:15", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_contract$_Module_$877_$", - "typeString": "function (address,bytes memory) returns (contract Module)" - } - }, - "id": 1583, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "718:32:15", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$877", - "typeString": "contract Module" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "702:48:15" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1588, - "name": "module", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1579, - "src": "775:6:15", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$877", - "typeString": "contract Module" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_Module_$877", - "typeString": "contract Module" - } - ], - "expression": { - "argumentTypes": null, - "id": 1585, - "name": "this", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2508, - "src": "760:4:15", - "typeDescriptions": { - "typeIdentifier": "t_contract$_CreateAndAddModule_$1604", - "typeString": "contract CreateAndAddModule" - } - }, - "id": 1587, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "addModule", - "nodeType": "MemberAccess", - "referencedDeclaration": 1571, - "src": "760:14:15", - "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_contract$_Module_$877_$returns$__$", - "typeString": "function (contract Module) external" - } - }, - "id": 1589, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "760:22:15", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1590, - "nodeType": "ExpressionStatement", - "src": "760:22:15" - } - ] - }, - "documentation": "@dev Allows to create and add a new module in one transaction.\n @param proxyFactory Module proxy factory contract.\n @param data Module constructor payload.", - "id": 1592, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "createAndAddModule", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1576, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1573, - "name": "proxyFactory", - "nodeType": "VariableDeclaration", - "scope": 1592, - "src": "639:20:15", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1572, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "639:7:15", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1575, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 1592, - "src": "661:10:15", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 1574, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "661:5:15", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "638:34:15" - }, - "payable": false, - "returnParameters": { - "id": 1577, - "nodeType": "ParameterList", - "parameters": [], - "src": "692:0:15" - }, - "scope": 1604, - "src": "611:178:15", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 1602, - "nodeType": "Block", - "src": "904:338:15", - "statements": [ - { - "externalReferences": [ - { - "module": { - "declaration": 1599, - "isOffset": false, - "isSlot": false, - "src": "1154:6:15", - "valueSize": 1 - } - }, - { - "data": { - "declaration": 1596, - "isOffset": false, - "isSlot": false, - "src": "1100:4:15", - "valueSize": 1 - } - }, - { - "proxyFactory": { - "declaration": 1594, - "isOffset": false, - "isSlot": false, - "src": "1063:12:15", - "valueSize": 1 - } - }, - { - "data": { - "declaration": 1596, - "isOffset": false, - "isSlot": false, - "src": "1081:4:15", - "valueSize": 1 - } - } - ], - "id": 1601, - "nodeType": "InlineAssembly", - "operations": "{\n let output := mload(0x40)\n if eq(delegatecall(gas(), proxyFactory, add(data, 0x20), mload(data), output, 0x20), 0)\n {\n revert(0, 0)\n }\n module := and(mload(output), 0xffffffffffffffffffffffffffffffffffffffff)\n}", - "src": "978:264:15" - } - ] - }, - "documentation": null, - "id": 1603, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "createModule", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1597, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1594, - "name": "proxyFactory", - "nodeType": "VariableDeclaration", - "scope": 1603, - "src": "817:20:15", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1593, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "817:7:15", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1596, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 1603, - "src": "839:10:15", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 1595, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "839:5:15", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "816:34:15" - }, - "payable": false, - "returnParameters": { - "id": 1600, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1599, - "name": "module", - "nodeType": "VariableDeclaration", - "scope": 1603, - "src": "885:13:15", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$877", - "typeString": "contract Module" - }, - "typeName": { - "contractScope": null, - "id": 1598, - "name": "Module", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 877, - "src": "885:6:15", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$877", - "typeString": "contract Module" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "884:15:15" - }, - "scope": 1604, - "src": "795:447:15", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "internal" - } - ], - "scope": 1605, - "src": "190:1054:15" - } - ], - "src": "0:1245:15" - }, - "legacyAST": { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/libraries/CreateAndAddModule.sol", - "exportedSymbols": { - "CreateAndAddModule": [ - 1604 - ] - }, - "id": 1605, - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 1561, - "literals": [ - "solidity", - "0.4", - ".23" - ], - "nodeType": "PragmaDirective", - "src": "0:23:15" - }, - { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Module.sol", - "file": "../Module.sol", - "id": 1562, - "nodeType": "ImportDirective", - "scope": 1605, - "sourceUnit": 878, - "src": "24:23:15", - "symbolAliases": [], - "unitAlias": "" - }, - { - "baseContracts": [], - "contractDependencies": [], - "contractKind": "contract", - "documentation": "@title Create and Add Module - Allows to create and add a new module in one transaction.\n @author Stefan George - ", - "fullyImplemented": true, - "id": 1604, - "linearizedBaseContracts": [ - 1604 - ], - "name": "CreateAndAddModule", - "nodeType": "ContractDefinition", - "nodes": [ - { - "body": { - "id": 1570, - "nodeType": "Block", - "src": "402:25:15", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 1567, - "name": "revert", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 2470, - 2471 - ], - "referencedDeclaration": 2470, - "src": "412:6:15", - "typeDescriptions": { - "typeIdentifier": "t_function_revert_pure$__$returns$__$", - "typeString": "function () pure" - } - }, - "id": 1568, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "412:8:15", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1569, - "nodeType": "ExpressionStatement", - "src": "412:8:15" - } - ] - }, - "documentation": "@dev Function required to compile contract. Gnosis Safe function is called instead.\n @param module Not used.", - "id": 1571, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "addModule", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1565, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1564, - "name": "module", - "nodeType": "VariableDeclaration", - "scope": 1571, - "src": "368:13:15", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$877", - "typeString": "contract Module" - }, - "typeName": { - "contractScope": null, - "id": 1563, - "name": "Module", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 877, - "src": "368:6:15", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$877", - "typeString": "contract Module" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "367:15:15" - }, - "payable": false, - "returnParameters": { - "id": 1566, - "nodeType": "ParameterList", - "parameters": [], - "src": "402:0:15" - }, - "scope": 1604, - "src": "349:78:15", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 1591, - "nodeType": "Block", - "src": "692:97:15", - "statements": [ - { - "assignments": [ - 1579 - ], - "declarations": [ - { - "constant": false, - "id": 1579, - "name": "module", - "nodeType": "VariableDeclaration", - "scope": 1592, - "src": "702:13:15", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$877", - "typeString": "contract Module" - }, - "typeName": { - "contractScope": null, - "id": 1578, - "name": "Module", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 877, - "src": "702:6:15", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$877", - "typeString": "contract Module" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1584, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1581, - "name": "proxyFactory", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1573, - "src": "731:12:15", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 1582, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1575, - "src": "745:4:15", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 1580, - "name": "createModule", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1603, - "src": "718:12:15", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_contract$_Module_$877_$", - "typeString": "function (address,bytes memory) returns (contract Module)" - } - }, - "id": 1583, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "718:32:15", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$877", - "typeString": "contract Module" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "702:48:15" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1588, - "name": "module", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1579, - "src": "775:6:15", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$877", - "typeString": "contract Module" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_Module_$877", - "typeString": "contract Module" - } - ], - "expression": { - "argumentTypes": null, - "id": 1585, - "name": "this", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2508, - "src": "760:4:15", - "typeDescriptions": { - "typeIdentifier": "t_contract$_CreateAndAddModule_$1604", - "typeString": "contract CreateAndAddModule" - } - }, - "id": 1587, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "addModule", - "nodeType": "MemberAccess", - "referencedDeclaration": 1571, - "src": "760:14:15", - "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_contract$_Module_$877_$returns$__$", - "typeString": "function (contract Module) external" - } - }, - "id": 1589, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "760:22:15", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1590, - "nodeType": "ExpressionStatement", - "src": "760:22:15" - } - ] - }, - "documentation": "@dev Allows to create and add a new module in one transaction.\n @param proxyFactory Module proxy factory contract.\n @param data Module constructor payload.", - "id": 1592, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "createAndAddModule", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1576, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1573, - "name": "proxyFactory", - "nodeType": "VariableDeclaration", - "scope": 1592, - "src": "639:20:15", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1572, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "639:7:15", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1575, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 1592, - "src": "661:10:15", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 1574, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "661:5:15", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "638:34:15" - }, - "payable": false, - "returnParameters": { - "id": 1577, - "nodeType": "ParameterList", - "parameters": [], - "src": "692:0:15" - }, - "scope": 1604, - "src": "611:178:15", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 1602, - "nodeType": "Block", - "src": "904:338:15", - "statements": [ - { - "externalReferences": [ - { - "module": { - "declaration": 1599, - "isOffset": false, - "isSlot": false, - "src": "1154:6:15", - "valueSize": 1 - } - }, - { - "data": { - "declaration": 1596, - "isOffset": false, - "isSlot": false, - "src": "1100:4:15", - "valueSize": 1 - } - }, - { - "proxyFactory": { - "declaration": 1594, - "isOffset": false, - "isSlot": false, - "src": "1063:12:15", - "valueSize": 1 - } - }, - { - "data": { - "declaration": 1596, - "isOffset": false, - "isSlot": false, - "src": "1081:4:15", - "valueSize": 1 - } - } - ], - "id": 1601, - "nodeType": "InlineAssembly", - "operations": "{\n let output := mload(0x40)\n if eq(delegatecall(gas(), proxyFactory, add(data, 0x20), mload(data), output, 0x20), 0)\n {\n revert(0, 0)\n }\n module := and(mload(output), 0xffffffffffffffffffffffffffffffffffffffff)\n}", - "src": "978:264:15" - } - ] - }, - "documentation": null, - "id": 1603, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "createModule", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1597, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1594, - "name": "proxyFactory", - "nodeType": "VariableDeclaration", - "scope": 1603, - "src": "817:20:15", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1593, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "817:7:15", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1596, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 1603, - "src": "839:10:15", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 1595, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "839:5:15", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "816:34:15" - }, - "payable": false, - "returnParameters": { - "id": 1600, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1599, - "name": "module", - "nodeType": "VariableDeclaration", - "scope": 1603, - "src": "885:13:15", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$877", - "typeString": "contract Module" - }, - "typeName": { - "contractScope": null, - "id": 1598, - "name": "Module", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 877, - "src": "885:6:15", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$877", - "typeString": "contract Module" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "884:15:15" - }, - "scope": 1604, - "src": "795:447:15", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "internal" - } - ], - "scope": 1605, - "src": "190:1054:15" - } - ], - "src": "0:1245:15" - }, - "compiler": { - "name": "solc", - "version": "0.4.23+commit.124ca40d.Emscripten.clang" - }, - "networks": { - "4": { - "events": {}, - "links": {}, - "address": "0xabb64de6d5ca20609e2f331bf3c4818a1f6f94fd", - "transactionHash": "0x61759c9f25325ca90bbd3d45b8a2c629e6ee721b995ec0ef614c3338516b530e" - }, - "1525950336085": { - "events": {}, - "links": {}, - "address": "0x544c20ddcab0459a99c93823d0c02d50f75ced36", - "transactionHash": "0x0e6adf453722b13530f4f8c8f947f6e5105156aa99a10b588447ed57e27d7b85" - }, - "1526283540628": { - "events": {}, - "links": {}, - "address": "0xdeabe313841db5cddcc1b5f01c6497ece16c2347", - "transactionHash": "0x0e6adf453722b13530f4f8c8f947f6e5105156aa99a10b588447ed57e27d7b85" - } - }, - "schemaVersion": "2.0.0", - "updatedAt": "2018-05-14T07:39:37.967Z" -} \ No newline at end of file diff --git a/safe-contracts/build/contracts/CreateAndAddModules.json b/safe-contracts/build/contracts/CreateAndAddModules.json index 337a690b..bd8cbc94 100644 --- a/safe-contracts/build/contracts/CreateAndAddModules.json +++ b/safe-contracts/build/contracts/CreateAndAddModules.json @@ -34,40 +34,40 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50610275806100206000396000f30060806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806360df7f5814610051578063610b5925146100da575b600080fd5b34801561005d57600080fd5b506100d8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505061011d565b005b3480156100e657600080fd5b5061011b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610244565b005b600080600083519250600090505b8281101561023d5780840160200151818501604001604051600060208285858c5af4141561015857600080fd5b73ffffffffffffffffffffffffffffffffffffffff8151169450602080602085010402602001840193505050503073ffffffffffffffffffffffffffffffffffffffff1663610b5925836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15801561022057600080fd5b505af1158015610234573d6000803e3d6000fd5b5050505061012b565b5050505050565b600080fd00a165627a7a72305820e1479531e7421914f006918566f778761cf7bfa2673aa10247d2f44d375165410029", - "deployedBytecode": "0x60806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806360df7f5814610051578063610b5925146100da575b600080fd5b34801561005d57600080fd5b506100d8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505061011d565b005b3480156100e657600080fd5b5061011b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610244565b005b600080600083519250600090505b8281101561023d5780840160200151818501604001604051600060208285858c5af4141561015857600080fd5b73ffffffffffffffffffffffffffffffffffffffff8151169450602080602085010402602001840193505050503073ffffffffffffffffffffffffffffffffffffffff1663610b5925836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15801561022057600080fd5b505af1158015610234573d6000803e3d6000fd5b5050505061012b565b5050505050565b600080fd00a165627a7a72305820e1479531e7421914f006918566f778761cf7bfa2673aa10247d2f44d375165410029", - "sourceMap": "245:1457:9:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;245:1457:9;;;;;;;", - "deployedSourceMap": "245:1457:9:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;815:885;;8:9:-1;5:2;;;30:1;27;20:12;5:2;815:885:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;405:81;;8:9:-1;5:2;;;30:1;27;20:12;5:2;405:81:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;815:885;907:14;945:13;968:9;924:4;:11;907:28;;980:1;968:13;;991:703;1002:6;998:1;:10;991:703;;;1170:1;1164:4;1160:12;1154:4;1150:23;1144:30;1230:1;1224:4;1220:12;1214:4;1210:23;1271:4;1265:11;1378:1;1371:4;1363:6;1344:17;1331:11;1317:12;1312:3;1299:77;1296:84;1293:2;;;1393:1;1390;1383:12;1293:2;1443:42;1434:6;1428:13;1424:62;1414:72;;1624:4;1617;1610;1591:17;1587:28;1583:39;1579:50;1573:4;1569:61;1566:1;1562:69;1557:74;;1101:544;;;1658:4;:17;;;1676:6;1658:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1658:25:9;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1658:25:9;;;;991:703;;;815:885;;;;;:::o;405:81::-;471:8;;", - "source": "pragma solidity 0.4.23;\nimport \"../Module.sol\";\n\n\n/// @title Create and Add Modules - Allows to create and add multiple module in one transaction.\n/// @author Stefan George - \n/// @author Richard Meissner - \ncontract CreateAndAddModules {\n\n /// @dev Function required to compile contract. Gnosis Safe function is called instead.\n /// @param module Not used.\n function enableModule(Module module)\n public\n {\n revert();\n }\n\n /// @dev Allows to create and add multiple module in one transaction.\n /// @param proxyFactory Module proxy factory contract.\n /// @param data Modules constructor payload. This is the data for each proxy factory call concatinated. (e.g. )\n function createAndAddModules(address proxyFactory, bytes data)\n public\n {\n uint256 length = data.length;\n Module module;\n uint256 i = 0;\n while (i < length) {\n // solium-disable-next-line security/no-inline-assembly\n assembly {\n let createBytesLength := mload(add(0x20, add(data, i)))\n let createBytes := add(0x40, add(data, i))\n\n let output := mload(0x40)\n if eq(delegatecall(gas, proxyFactory, createBytes, createBytesLength, output, 0x20), 0) { revert(0, 0) }\n module := and(mload(output), 0xffffffffffffffffffffffffffffffffffffffff)\n\n // Data is always padded to 32 bytes\n i := add(i, add(0x20, mul(div(add(createBytesLength, 0x20), 0x20), 0x20)))\n }\n this.enableModule(module);\n }\n }\n}\n", + "bytecode": "0x608060405234801561001057600080fd5b50610275806100206000396000f30060806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806360df7f5814610051578063610b5925146100da575b600080fd5b34801561005d57600080fd5b506100d8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505061011d565b005b3480156100e657600080fd5b5061011b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610244565b005b600080600083519250600090505b8281101561023d5780840160200151818501604001604051600060208285858c5af4141561015857600080fd5b73ffffffffffffffffffffffffffffffffffffffff8151169450602080601f85010402602001840193505050503073ffffffffffffffffffffffffffffffffffffffff1663610b5925836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15801561022057600080fd5b505af1158015610234573d6000803e3d6000fd5b5050505061012b565b5050505050565b600080fd00a165627a7a723058208f7a97e938c15e3356168d53d19c7667249d0a3b35454b33fa8a258c0655d6ce0029", + "deployedBytecode": "0x60806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806360df7f5814610051578063610b5925146100da575b600080fd5b34801561005d57600080fd5b506100d8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505061011d565b005b3480156100e657600080fd5b5061011b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610244565b005b600080600083519250600090505b8281101561023d5780840160200151818501604001604051600060208285858c5af4141561015857600080fd5b73ffffffffffffffffffffffffffffffffffffffff8151169450602080601f85010402602001840193505050503073ffffffffffffffffffffffffffffffffffffffff1663610b5925836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15801561022057600080fd5b505af1158015610234573d6000803e3d6000fd5b5050505061012b565b5050505050565b600080fd00a165627a7a723058208f7a97e938c15e3356168d53d19c7667249d0a3b35454b33fa8a258c0655d6ce0029", + "sourceMap": "245:1457:15:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;245:1457:15;;;;;;;", + "deployedSourceMap": "245:1457:15:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;815:885;;8:9:-1;5:2;;;30:1;27;20:12;5:2;815:885:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;405:81;;8:9:-1;5:2;;;30:1;27;20:12;5:2;405:81:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;815:885;907:14;945:13;968:9;924:4;:11;907:28;;980:1;968:13;;991:703;1002:6;998:1;:10;991:703;;;1170:1;1164:4;1160:12;1154:4;1150:23;1144:30;1230:1;1224:4;1220:12;1214:4;1210:23;1271:4;1265:11;1378:1;1371:4;1363:6;1344:17;1331:11;1317:12;1312:3;1299:77;1296:84;1293:2;;;1393:1;1390;1383:12;1293:2;1443:42;1434:6;1428:13;1424:62;1414:72;;1624:4;1617;1610;1591:17;1587:28;1583:39;1579:50;1573:4;1569:61;1566:1;1562:69;1557:74;;1101:544;;;1658:4;:17;;;1676:6;1658:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1658:25:15;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1658:25:15;;;;991:703;;;815:885;;;;;:::o;405:81::-;471:8;;", + "source": "pragma solidity 0.4.24;\nimport \"../Module.sol\";\n\n\n/// @title Create and Add Modules - Allows to create and add multiple module in one transaction.\n/// @author Stefan George - \n/// @author Richard Meissner - \ncontract CreateAndAddModules {\n\n /// @dev Function required to compile contract. Gnosis Safe function is called instead.\n /// @param module Not used.\n function enableModule(Module module)\n public\n {\n revert();\n }\n\n /// @dev Allows to create and add multiple module in one transaction.\n /// @param proxyFactory Module proxy factory contract.\n /// @param data Modules constructor payload. This is the data for each proxy factory call concatinated. (e.g. )\n function createAndAddModules(address proxyFactory, bytes data)\n public\n {\n uint256 length = data.length;\n Module module;\n uint256 i = 0;\n while (i < length) {\n // solium-disable-next-line security/no-inline-assembly\n assembly {\n let createBytesLength := mload(add(0x20, add(data, i)))\n let createBytes := add(0x40, add(data, i))\n\n let output := mload(0x40)\n if eq(delegatecall(gas, proxyFactory, createBytes, createBytesLength, output, 0x20), 0) { revert(0, 0) }\n module := and(mload(output), 0xffffffffffffffffffffffffffffffffffffffff)\n\n // Data is always padded to 32 bytes\n i := add(i, add(0x20, mul(div(add(createBytesLength, 0x1f), 0x20), 0x20)))\n }\n this.enableModule(module);\n }\n }\n}\n", "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/libraries/CreateAndAddModules.sol", "ast": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/libraries/CreateAndAddModules.sol", "exportedSymbols": { "CreateAndAddModules": [ - 1404 + 1730 ] }, - "id": 1405, + "id": 1731, "nodeType": "SourceUnit", "nodes": [ { - "id": 1361, + "id": 1687, "literals": [ "solidity", "0.4", - ".23" + ".24" ], "nodeType": "PragmaDirective", - "src": "0:23:9" + "src": "0:23:15" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Module.sol", "file": "../Module.sol", - "id": 1362, + "id": 1688, "nodeType": "ImportDirective", - "scope": 1405, - "sourceUnit": 622, - "src": "24:23:9", + "scope": 1731, + "sourceUnit": 751, + "src": "24:23:15", "symbolAliases": [], "unitAlias": "" }, @@ -77,18 +77,18 @@ "contractKind": "contract", "documentation": "@title Create and Add Modules - Allows to create and add multiple module in one transaction.\n @author Stefan George - \n @author Richard Meissner - ", "fullyImplemented": true, - "id": 1404, + "id": 1730, "linearizedBaseContracts": [ - 1404 + 1730 ], "name": "CreateAndAddModules", "nodeType": "ContractDefinition", "nodes": [ { "body": { - "id": 1370, + "id": 1696, "nodeType": "Block", - "src": "461:25:9", + "src": "461:25:15", "statements": [ { "expression": { @@ -96,21 +96,21 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 1367, + "id": 1693, "name": "revert", "nodeType": "Identifier", "overloadedDeclarations": [ - 2401, - 2402 + 2603, + 2604 ], - "referencedDeclaration": 2401, - "src": "471:6:9", + "referencedDeclaration": 2603, + "src": "471:6:15", "typeDescriptions": { "typeIdentifier": "t_function_revert_pure$__$returns$__$", "typeString": "function () pure" } }, - "id": 1368, + "id": 1694, "isConstant": false, "isLValue": false, "isPure": false, @@ -118,20 +118,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "471:8:9", + "src": "471:8:15", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1369, + "id": 1695, "nodeType": "ExpressionStatement", - "src": "471:8:9" + "src": "471:8:15" } ] }, "documentation": "@dev Function required to compile contract. Gnosis Safe function is called instead.\n @param module Not used.", - "id": 1371, + "id": 1697, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -139,31 +139,31 @@ "name": "enableModule", "nodeType": "FunctionDefinition", "parameters": { - "id": 1365, + "id": 1691, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1364, + "id": 1690, "name": "module", "nodeType": "VariableDeclaration", - "scope": 1371, - "src": "427:13:9", + "scope": 1697, + "src": "427:13:15", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$621", + "typeIdentifier": "t_contract$_Module_$750", "typeString": "contract Module" }, "typeName": { "contractScope": null, - "id": 1363, + "id": 1689, "name": "Module", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 621, - "src": "427:6:9", + "referencedDeclaration": 750, + "src": "427:6:15", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$621", + "typeIdentifier": "t_contract$_Module_$750", "typeString": "contract Module" } }, @@ -171,39 +171,39 @@ "visibility": "internal" } ], - "src": "426:15:9" + "src": "426:15:15" }, "payable": false, "returnParameters": { - "id": 1366, + "id": 1692, "nodeType": "ParameterList", "parameters": [], - "src": "461:0:9" + "src": "461:0:15" }, - "scope": 1404, - "src": "405:81:9", + "scope": 1730, + "src": "405:81:15", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1402, + "id": 1728, "nodeType": "Block", - "src": "897:803:9", + "src": "897:803:15", "statements": [ { "assignments": [ - 1379 + 1705 ], "declarations": [ { "constant": false, - "id": 1379, + "id": 1705, "name": "length", "nodeType": "VariableDeclaration", - "scope": 1403, - "src": "907:14:9", + "scope": 1729, + "src": "907:14:15", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -211,10 +211,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1378, + "id": 1704, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "907:7:9", + "src": "907:7:15", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -224,23 +224,23 @@ "visibility": "internal" } ], - "id": 1382, + "id": 1708, "initialValue": { "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1380, + "id": 1706, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1375, - "src": "924:4:9", + "referencedDeclaration": 1701, + "src": "924:4:15", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, - "id": 1381, + "id": 1707, "isConstant": false, "isLValue": false, "isPure": false, @@ -248,40 +248,40 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "924:11:9", + "src": "924:11:15", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "907:28:9" + "src": "907:28:15" }, { "assignments": [], "declarations": [ { "constant": false, - "id": 1384, + "id": 1710, "name": "module", "nodeType": "VariableDeclaration", - "scope": 1403, - "src": "945:13:9", + "scope": 1729, + "src": "945:13:15", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$621", + "typeIdentifier": "t_contract$_Module_$750", "typeString": "contract Module" }, "typeName": { "contractScope": null, - "id": 1383, + "id": 1709, "name": "Module", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 621, - "src": "945:6:9", + "referencedDeclaration": 750, + "src": "945:6:15", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$621", + "typeIdentifier": "t_contract$_Module_$750", "typeString": "contract Module" } }, @@ -289,23 +289,23 @@ "visibility": "internal" } ], - "id": 1385, + "id": 1711, "initialValue": null, "nodeType": "VariableDeclarationStatement", - "src": "945:13:9" + "src": "945:13:15" }, { "assignments": [ - 1387 + 1713 ], "declarations": [ { "constant": false, - "id": 1387, + "id": 1713, "name": "i", "nodeType": "VariableDeclaration", - "scope": 1403, - "src": "968:9:9", + "scope": 1729, + "src": "968:9:15", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -313,10 +313,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1386, + "id": 1712, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "968:7:9", + "src": "968:7:15", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -326,18 +326,18 @@ "visibility": "internal" } ], - "id": 1389, + "id": 1715, "initialValue": { "argumentTypes": null, "hexValue": "30", - "id": 1388, + "id": 1714, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "980:1:9", + "src": "980:1:15", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -346,93 +346,93 @@ "value": "0" }, "nodeType": "VariableDeclarationStatement", - "src": "968:13:9" + "src": "968:13:15" }, { "body": { - "id": 1400, + "id": 1726, "nodeType": "Block", - "src": "1010:684:9", + "src": "1010:684:15", "statements": [ { "externalReferences": [ { "module": { - "declaration": 1384, + "declaration": 1710, "isOffset": false, "isSlot": false, - "src": "1414:6:9", + "src": "1414:6:15", "valueSize": 1 } }, { "data": { - "declaration": 1375, + "declaration": 1701, "isOffset": false, "isSlot": false, - "src": "1164:4:9", + "src": "1164:4:15", "valueSize": 1 } }, { "i": { - "declaration": 1387, + "declaration": 1713, "isOffset": false, "isSlot": false, - "src": "1170:1:9", + "src": "1170:1:15", "valueSize": 1 } }, { "data": { - "declaration": 1375, + "declaration": 1701, "isOffset": false, "isSlot": false, - "src": "1224:4:9", + "src": "1224:4:15", "valueSize": 1 } }, { "i": { - "declaration": 1387, + "declaration": 1713, "isOffset": false, "isSlot": false, - "src": "1230:1:9", + "src": "1230:1:15", "valueSize": 1 } }, { "i": { - "declaration": 1387, + "declaration": 1713, "isOffset": false, "isSlot": false, - "src": "1557:1:9", + "src": "1557:1:15", "valueSize": 1 } }, { "proxyFactory": { - "declaration": 1373, + "declaration": 1699, "isOffset": false, "isSlot": false, - "src": "1317:12:9", + "src": "1317:12:15", "valueSize": 1 } }, { "i": { - "declaration": 1387, + "declaration": 1713, "isOffset": false, "isSlot": false, - "src": "1566:1:9", + "src": "1566:1:15", "valueSize": 1 } } ], - "id": 1393, + "id": 1719, "nodeType": "InlineAssembly", - "operations": "{\n let createBytesLength := mload(add(0x20, add(data, i)))\n let createBytes := add(0x40, add(data, i))\n let output := mload(0x40)\n if eq(delegatecall(gas(), proxyFactory, createBytes, createBytesLength, output, 0x20), 0)\n {\n revert(0, 0)\n }\n module := and(mload(output), 0xffffffffffffffffffffffffffffffffffffffff)\n i := add(i, add(0x20, mul(div(add(createBytesLength, 0x20), 0x20), 0x20)))\n}", - "src": "1092:570:9" + "operations": "{\n let createBytesLength := mload(add(0x20, add(data, i)))\n let createBytes := add(0x40, add(data, i))\n let output := mload(0x40)\n if eq(delegatecall(gas(), proxyFactory, createBytes, createBytesLength, output, 0x20), 0)\n {\n revert(0, 0)\n }\n module := and(mload(output), 0xffffffffffffffffffffffffffffffffffffffff)\n i := add(i, add(0x20, mul(div(add(createBytesLength, 0x1f), 0x20), 0x20)))\n}", + "src": "1092:570:15" }, { "expression": { @@ -440,14 +440,14 @@ "arguments": [ { "argumentTypes": null, - "id": 1397, + "id": 1723, "name": "module", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1384, - "src": "1676:6:9", + "referencedDeclaration": 1710, + "src": "1676:6:15", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$621", + "typeIdentifier": "t_contract$_Module_$750", "typeString": "contract Module" } } @@ -455,38 +455,38 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_Module_$621", + "typeIdentifier": "t_contract$_Module_$750", "typeString": "contract Module" } ], "expression": { "argumentTypes": null, - "id": 1394, + "id": 1720, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2427, - "src": "1658:4:9", + "referencedDeclaration": 2641, + "src": "1658:4:15", "typeDescriptions": { - "typeIdentifier": "t_contract$_CreateAndAddModules_$1404", + "typeIdentifier": "t_contract$_CreateAndAddModules_$1730", "typeString": "contract CreateAndAddModules" } }, - "id": 1396, + "id": 1722, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "enableModule", "nodeType": "MemberAccess", - "referencedDeclaration": 1371, - "src": "1658:17:9", + "referencedDeclaration": 1697, + "src": "1658:17:15", "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_contract$_Module_$621_$returns$__$", + "typeIdentifier": "t_function_external_nonpayable$_t_contract$_Module_$750_$returns$__$", "typeString": "function (contract Module) external" } }, - "id": 1398, + "id": 1724, "isConstant": false, "isLValue": false, "isPure": false, @@ -494,15 +494,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1658:25:9", + "src": "1658:25:15", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1399, + "id": 1725, "nodeType": "ExpressionStatement", - "src": "1658:25:9" + "src": "1658:25:15" } ] }, @@ -512,19 +512,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1392, + "id": 1718, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1390, + "id": 1716, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1387, - "src": "998:1:9", + "referencedDeclaration": 1713, + "src": "998:1:15", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -534,31 +534,31 @@ "operator": "<", "rightExpression": { "argumentTypes": null, - "id": 1391, + "id": 1717, "name": "length", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1379, - "src": "1002:6:9", + "referencedDeclaration": 1705, + "src": "1002:6:15", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "998:10:9", + "src": "998:10:15", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 1401, + "id": 1727, "nodeType": "WhileStatement", - "src": "991:703:9" + "src": "991:703:15" } ] }, "documentation": "@dev Allows to create and add multiple module in one transaction.\n @param proxyFactory Module proxy factory contract.\n @param data Modules constructor payload. This is the data for each proxy factory call concatinated. (e.g. )", - "id": 1403, + "id": 1729, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -566,16 +566,16 @@ "name": "createAndAddModules", "nodeType": "FunctionDefinition", "parameters": { - "id": 1376, + "id": 1702, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1373, + "id": 1699, "name": "proxyFactory", "nodeType": "VariableDeclaration", - "scope": 1403, - "src": "844:20:9", + "scope": 1729, + "src": "844:20:15", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -583,10 +583,10 @@ "typeString": "address" }, "typeName": { - "id": 1372, + "id": 1698, "name": "address", "nodeType": "ElementaryTypeName", - "src": "844:7:9", + "src": "844:7:15", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -597,11 +597,11 @@ }, { "constant": false, - "id": 1375, + "id": 1701, "name": "data", "nodeType": "VariableDeclaration", - "scope": 1403, - "src": "866:10:9", + "scope": 1729, + "src": "866:10:15", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -609,10 +609,10 @@ "typeString": "bytes" }, "typeName": { - "id": 1374, + "id": 1700, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "866:5:9", + "src": "866:5:15", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -622,56 +622,56 @@ "visibility": "internal" } ], - "src": "843:34:9" + "src": "843:34:15" }, "payable": false, "returnParameters": { - "id": 1377, + "id": 1703, "nodeType": "ParameterList", "parameters": [], - "src": "897:0:9" + "src": "897:0:15" }, - "scope": 1404, - "src": "815:885:9", + "scope": 1730, + "src": "815:885:15", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" } ], - "scope": 1405, - "src": "245:1457:9" + "scope": 1731, + "src": "245:1457:15" } ], - "src": "0:1703:9" + "src": "0:1703:15" }, "legacyAST": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/libraries/CreateAndAddModules.sol", "exportedSymbols": { "CreateAndAddModules": [ - 1404 + 1730 ] }, - "id": 1405, + "id": 1731, "nodeType": "SourceUnit", "nodes": [ { - "id": 1361, + "id": 1687, "literals": [ "solidity", "0.4", - ".23" + ".24" ], "nodeType": "PragmaDirective", - "src": "0:23:9" + "src": "0:23:15" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Module.sol", "file": "../Module.sol", - "id": 1362, + "id": 1688, "nodeType": "ImportDirective", - "scope": 1405, - "sourceUnit": 622, - "src": "24:23:9", + "scope": 1731, + "sourceUnit": 751, + "src": "24:23:15", "symbolAliases": [], "unitAlias": "" }, @@ -681,18 +681,18 @@ "contractKind": "contract", "documentation": "@title Create and Add Modules - Allows to create and add multiple module in one transaction.\n @author Stefan George - \n @author Richard Meissner - ", "fullyImplemented": true, - "id": 1404, + "id": 1730, "linearizedBaseContracts": [ - 1404 + 1730 ], "name": "CreateAndAddModules", "nodeType": "ContractDefinition", "nodes": [ { "body": { - "id": 1370, + "id": 1696, "nodeType": "Block", - "src": "461:25:9", + "src": "461:25:15", "statements": [ { "expression": { @@ -700,21 +700,21 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 1367, + "id": 1693, "name": "revert", "nodeType": "Identifier", "overloadedDeclarations": [ - 2401, - 2402 + 2603, + 2604 ], - "referencedDeclaration": 2401, - "src": "471:6:9", + "referencedDeclaration": 2603, + "src": "471:6:15", "typeDescriptions": { "typeIdentifier": "t_function_revert_pure$__$returns$__$", "typeString": "function () pure" } }, - "id": 1368, + "id": 1694, "isConstant": false, "isLValue": false, "isPure": false, @@ -722,20 +722,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "471:8:9", + "src": "471:8:15", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1369, + "id": 1695, "nodeType": "ExpressionStatement", - "src": "471:8:9" + "src": "471:8:15" } ] }, "documentation": "@dev Function required to compile contract. Gnosis Safe function is called instead.\n @param module Not used.", - "id": 1371, + "id": 1697, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -743,31 +743,31 @@ "name": "enableModule", "nodeType": "FunctionDefinition", "parameters": { - "id": 1365, + "id": 1691, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1364, + "id": 1690, "name": "module", "nodeType": "VariableDeclaration", - "scope": 1371, - "src": "427:13:9", + "scope": 1697, + "src": "427:13:15", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$621", + "typeIdentifier": "t_contract$_Module_$750", "typeString": "contract Module" }, "typeName": { "contractScope": null, - "id": 1363, + "id": 1689, "name": "Module", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 621, - "src": "427:6:9", + "referencedDeclaration": 750, + "src": "427:6:15", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$621", + "typeIdentifier": "t_contract$_Module_$750", "typeString": "contract Module" } }, @@ -775,39 +775,39 @@ "visibility": "internal" } ], - "src": "426:15:9" + "src": "426:15:15" }, "payable": false, "returnParameters": { - "id": 1366, + "id": 1692, "nodeType": "ParameterList", "parameters": [], - "src": "461:0:9" + "src": "461:0:15" }, - "scope": 1404, - "src": "405:81:9", + "scope": 1730, + "src": "405:81:15", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1402, + "id": 1728, "nodeType": "Block", - "src": "897:803:9", + "src": "897:803:15", "statements": [ { "assignments": [ - 1379 + 1705 ], "declarations": [ { "constant": false, - "id": 1379, + "id": 1705, "name": "length", "nodeType": "VariableDeclaration", - "scope": 1403, - "src": "907:14:9", + "scope": 1729, + "src": "907:14:15", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -815,10 +815,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1378, + "id": 1704, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "907:7:9", + "src": "907:7:15", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -828,23 +828,23 @@ "visibility": "internal" } ], - "id": 1382, + "id": 1708, "initialValue": { "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1380, + "id": 1706, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1375, - "src": "924:4:9", + "referencedDeclaration": 1701, + "src": "924:4:15", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, - "id": 1381, + "id": 1707, "isConstant": false, "isLValue": false, "isPure": false, @@ -852,40 +852,40 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "924:11:9", + "src": "924:11:15", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "907:28:9" + "src": "907:28:15" }, { "assignments": [], "declarations": [ { "constant": false, - "id": 1384, + "id": 1710, "name": "module", "nodeType": "VariableDeclaration", - "scope": 1403, - "src": "945:13:9", + "scope": 1729, + "src": "945:13:15", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$621", + "typeIdentifier": "t_contract$_Module_$750", "typeString": "contract Module" }, "typeName": { "contractScope": null, - "id": 1383, + "id": 1709, "name": "Module", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 621, - "src": "945:6:9", + "referencedDeclaration": 750, + "src": "945:6:15", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$621", + "typeIdentifier": "t_contract$_Module_$750", "typeString": "contract Module" } }, @@ -893,23 +893,23 @@ "visibility": "internal" } ], - "id": 1385, + "id": 1711, "initialValue": null, "nodeType": "VariableDeclarationStatement", - "src": "945:13:9" + "src": "945:13:15" }, { "assignments": [ - 1387 + 1713 ], "declarations": [ { "constant": false, - "id": 1387, + "id": 1713, "name": "i", "nodeType": "VariableDeclaration", - "scope": 1403, - "src": "968:9:9", + "scope": 1729, + "src": "968:9:15", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -917,10 +917,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1386, + "id": 1712, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "968:7:9", + "src": "968:7:15", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -930,18 +930,18 @@ "visibility": "internal" } ], - "id": 1389, + "id": 1715, "initialValue": { "argumentTypes": null, "hexValue": "30", - "id": 1388, + "id": 1714, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "980:1:9", + "src": "980:1:15", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -950,93 +950,93 @@ "value": "0" }, "nodeType": "VariableDeclarationStatement", - "src": "968:13:9" + "src": "968:13:15" }, { "body": { - "id": 1400, + "id": 1726, "nodeType": "Block", - "src": "1010:684:9", + "src": "1010:684:15", "statements": [ { "externalReferences": [ { "module": { - "declaration": 1384, + "declaration": 1710, "isOffset": false, "isSlot": false, - "src": "1414:6:9", + "src": "1414:6:15", "valueSize": 1 } }, { "data": { - "declaration": 1375, + "declaration": 1701, "isOffset": false, "isSlot": false, - "src": "1164:4:9", + "src": "1164:4:15", "valueSize": 1 } }, { "i": { - "declaration": 1387, + "declaration": 1713, "isOffset": false, "isSlot": false, - "src": "1170:1:9", + "src": "1170:1:15", "valueSize": 1 } }, { "data": { - "declaration": 1375, + "declaration": 1701, "isOffset": false, "isSlot": false, - "src": "1224:4:9", + "src": "1224:4:15", "valueSize": 1 } }, { "i": { - "declaration": 1387, + "declaration": 1713, "isOffset": false, "isSlot": false, - "src": "1230:1:9", + "src": "1230:1:15", "valueSize": 1 } }, { "i": { - "declaration": 1387, + "declaration": 1713, "isOffset": false, "isSlot": false, - "src": "1557:1:9", + "src": "1557:1:15", "valueSize": 1 } }, { "proxyFactory": { - "declaration": 1373, + "declaration": 1699, "isOffset": false, "isSlot": false, - "src": "1317:12:9", + "src": "1317:12:15", "valueSize": 1 } }, { "i": { - "declaration": 1387, + "declaration": 1713, "isOffset": false, "isSlot": false, - "src": "1566:1:9", + "src": "1566:1:15", "valueSize": 1 } } ], - "id": 1393, + "id": 1719, "nodeType": "InlineAssembly", - "operations": "{\n let createBytesLength := mload(add(0x20, add(data, i)))\n let createBytes := add(0x40, add(data, i))\n let output := mload(0x40)\n if eq(delegatecall(gas(), proxyFactory, createBytes, createBytesLength, output, 0x20), 0)\n {\n revert(0, 0)\n }\n module := and(mload(output), 0xffffffffffffffffffffffffffffffffffffffff)\n i := add(i, add(0x20, mul(div(add(createBytesLength, 0x20), 0x20), 0x20)))\n}", - "src": "1092:570:9" + "operations": "{\n let createBytesLength := mload(add(0x20, add(data, i)))\n let createBytes := add(0x40, add(data, i))\n let output := mload(0x40)\n if eq(delegatecall(gas(), proxyFactory, createBytes, createBytesLength, output, 0x20), 0)\n {\n revert(0, 0)\n }\n module := and(mload(output), 0xffffffffffffffffffffffffffffffffffffffff)\n i := add(i, add(0x20, mul(div(add(createBytesLength, 0x1f), 0x20), 0x20)))\n}", + "src": "1092:570:15" }, { "expression": { @@ -1044,14 +1044,14 @@ "arguments": [ { "argumentTypes": null, - "id": 1397, + "id": 1723, "name": "module", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1384, - "src": "1676:6:9", + "referencedDeclaration": 1710, + "src": "1676:6:15", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$621", + "typeIdentifier": "t_contract$_Module_$750", "typeString": "contract Module" } } @@ -1059,38 +1059,38 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_Module_$621", + "typeIdentifier": "t_contract$_Module_$750", "typeString": "contract Module" } ], "expression": { "argumentTypes": null, - "id": 1394, + "id": 1720, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2427, - "src": "1658:4:9", + "referencedDeclaration": 2641, + "src": "1658:4:15", "typeDescriptions": { - "typeIdentifier": "t_contract$_CreateAndAddModules_$1404", + "typeIdentifier": "t_contract$_CreateAndAddModules_$1730", "typeString": "contract CreateAndAddModules" } }, - "id": 1396, + "id": 1722, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "enableModule", "nodeType": "MemberAccess", - "referencedDeclaration": 1371, - "src": "1658:17:9", + "referencedDeclaration": 1697, + "src": "1658:17:15", "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_contract$_Module_$621_$returns$__$", + "typeIdentifier": "t_function_external_nonpayable$_t_contract$_Module_$750_$returns$__$", "typeString": "function (contract Module) external" } }, - "id": 1398, + "id": 1724, "isConstant": false, "isLValue": false, "isPure": false, @@ -1098,15 +1098,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1658:25:9", + "src": "1658:25:15", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1399, + "id": 1725, "nodeType": "ExpressionStatement", - "src": "1658:25:9" + "src": "1658:25:15" } ] }, @@ -1116,19 +1116,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1392, + "id": 1718, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1390, + "id": 1716, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1387, - "src": "998:1:9", + "referencedDeclaration": 1713, + "src": "998:1:15", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1138,31 +1138,31 @@ "operator": "<", "rightExpression": { "argumentTypes": null, - "id": 1391, + "id": 1717, "name": "length", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1379, - "src": "1002:6:9", + "referencedDeclaration": 1705, + "src": "1002:6:15", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "998:10:9", + "src": "998:10:15", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 1401, + "id": 1727, "nodeType": "WhileStatement", - "src": "991:703:9" + "src": "991:703:15" } ] }, "documentation": "@dev Allows to create and add multiple module in one transaction.\n @param proxyFactory Module proxy factory contract.\n @param data Modules constructor payload. This is the data for each proxy factory call concatinated. (e.g. )", - "id": 1403, + "id": 1729, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -1170,16 +1170,16 @@ "name": "createAndAddModules", "nodeType": "FunctionDefinition", "parameters": { - "id": 1376, + "id": 1702, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1373, + "id": 1699, "name": "proxyFactory", "nodeType": "VariableDeclaration", - "scope": 1403, - "src": "844:20:9", + "scope": 1729, + "src": "844:20:15", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1187,10 +1187,10 @@ "typeString": "address" }, "typeName": { - "id": 1372, + "id": 1698, "name": "address", "nodeType": "ElementaryTypeName", - "src": "844:7:9", + "src": "844:7:15", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1201,11 +1201,11 @@ }, { "constant": false, - "id": 1375, + "id": 1701, "name": "data", "nodeType": "VariableDeclaration", - "scope": 1403, - "src": "866:10:9", + "scope": 1729, + "src": "866:10:15", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1213,10 +1213,10 @@ "typeString": "bytes" }, "typeName": { - "id": 1374, + "id": 1700, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "866:5:9", + "src": "866:5:15", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -1226,58 +1226,52 @@ "visibility": "internal" } ], - "src": "843:34:9" + "src": "843:34:15" }, "payable": false, "returnParameters": { - "id": 1377, + "id": 1703, "nodeType": "ParameterList", "parameters": [], - "src": "897:0:9" + "src": "897:0:15" }, - "scope": 1404, - "src": "815:885:9", + "scope": 1730, + "src": "815:885:15", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" } ], - "scope": 1405, - "src": "245:1457:9" + "scope": 1731, + "src": "245:1457:15" } ], - "src": "0:1703:9" + "src": "0:1703:15" }, "compiler": { "name": "solc", - "version": "0.4.23+commit.124ca40d.Emscripten.clang" + "version": "0.4.24+commit.e67f0147.Emscripten.clang" }, "networks": { "4": { "events": {}, "links": {}, - "address": "0x824caabb57949792481937b7f2b4bb34d0d54354", - "transactionHash": "0xc8bb172c792293de7e58d6c15e6904606ba0560088570a6b465a439f96c530f8" - }, - "1526478212260": { - "events": {}, - "links": {}, - "address": "0x0dfc419b1f993f1d14459f802c5f4966a50640fe", - "transactionHash": "0x0bb1edef06266204f2710df9365b39aac03e0527a4d9b5b5ca12b7b1fbe888d8" - }, - "1526973574996": { - "events": {}, - "links": {}, - "address": "0x8dc367d2426d12c60633d4b8808f48164f5c9fce", - "transactionHash": "0x0bb1edef06266204f2710df9365b39aac03e0527a4d9b5b5ca12b7b1fbe888d8" + "address": "0x09938dc4aedf7573bea1acde27119525162caf86", + "transactionHash": "0x542ed496b9857fdad7870207cd3aa4de6ef756975a2f8f7b736e950aff77634e" }, "1527316019334": { "events": {}, "links": {}, - "address": "0x7836f09d609e4e1c6bd42ca90377ee5a30ccba75", - "transactionHash": "0x0bb1edef06266204f2710df9365b39aac03e0527a4d9b5b5ca12b7b1fbe888d8" + "address": "0x3476d04ef7a630db99177c493378763511783ecc", + "transactionHash": "0xa1f976aa57640d6f00fda50b5faa87e6395a25cb7ebcbdf43802038869c30189" + }, + "1527420696956": { + "events": {}, + "links": {}, + "address": "0xa13c4a216f6f3441841401afecdad68223f47cce", + "transactionHash": "0x5c5a77c0584fd75a1a9b7f932710af48fa6803a794ac7c28f17aea45b28c4f26" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-26T06:28:28.357Z" + "updatedAt": "2018-05-27T11:31:46.256Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/DailyLimitModule.json b/safe-contracts/build/contracts/DailyLimitModule.json index b94a18c4..aa13febb 100644 --- a/safe-contracts/build/contracts/DailyLimitModule.json +++ b/safe-contracts/build/contracts/DailyLimitModule.json @@ -1,20 +1,6 @@ { "contractName": "DailyLimitModule", "abi": [ - { - "constant": true, - "inputs": [], - "name": "TRANSFER_FUNCTION_IDENTIFIER", - "outputs": [ - { - "name": "", - "type": "bytes4" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, { "constant": true, "inputs": [], @@ -137,17 +123,17 @@ { "constant": false, "inputs": [ + { + "name": "token", + "type": "address" + }, { "name": "to", "type": "address" }, { - "name": "value", + "name": "amount", "type": "uint256" - }, - { - "name": "data", - "type": "bytes" } ], "name": "executeDailyLimit", @@ -171,73 +157,73 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50610d72806100206000396000f3006080604052600436106100a4576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806328814f03146100a9578063430e47f814610152578063481c6a75146101bb5780637de7edef1461021257806381c5e03b14610255578063a3f4df7e146102a2578063b74e452b14610332578063d7bffc921461035d578063fce7379a146103c2578063ffa1ad7414610455575b600080fd5b3480156100b557600080fd5b5061015060048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192905050506104e5565b005b34801561015e57600080fd5b50610167610584565b60405180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200191505060405180910390f35b3480156101c757600080fd5b506101d06105a8565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561021e57600080fd5b50610253600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506105ce565b005b34801561026157600080fd5b506102a0600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610693565b005b3480156102ae57600080fd5b506102b761073a565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102f75780820151818401526020810190506102dc565b50505050905090810190601f1680156103245780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561033e57600080fd5b50610347610773565b6040518082815260200191505060405180910390f35b34801561036957600080fd5b5061039e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061078b565b60405180848152602001838152602001828152602001935050505060405180910390f35b3480156103ce57600080fd5b50610453600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091929192905050506107b5565b005b34801561046157600080fd5b5061046a6107c6565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104aa57808201518184015260208101905061048f565b50505050905090810190601f1680156104d75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60006104ef6107ff565b600090505b825181101561057f57818181518110151561050b57fe5b9060200190602002015160026000858481518110151561052757fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018190555080806001019150506104f4565b505050565b7fa9059cbb0000000000000000000000000000000000000000000000000000000081565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561062a57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561065057600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156106ef57600080fd5b80600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055505050565b6040805190810160405280601281526020017f4461696c79204c696d6974204d6f64756c65000000000000000000000000000081525081565b6000620151804281151561078357fe5b064203905090565b60026020528060005260406000206000915090508060000154908060010154908060020154905083565b6107c133848484610889565b505050565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561084657600080fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600080600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f54bf6e896040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561094c57600080fd5b505af1158015610960573d6000803e3d6000fd5b505050506040513d602081101561097657600080fd5b8101908080519060200190929190505050151561099257600080fd5b600085511480156109a35750600086115b806109bb5750600085511180156109ba5750600086145b5b15156109c657600080fd5b6000855114156109df5760009350869250859150610a64565b8693506020850151905060248501519250604485015191507fa9059cbb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141515610a6357600080fd5b5b60008373ffffffffffffffffffffffffffffffffffffffff1614151515610a8a57600080fd5b600082111515610a9957600080fd5b610aa38483610c97565b1515610aae57600080fd5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160008282540192505081905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a788888860006040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200180602001836002811115610bb857fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b83811015610bf8578082015181840152602081019050610bdd565b50505050905090810190601f168015610c255780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610c4757600080fd5b505af1158015610c5b573d6000803e3d6000fd5b505050506040513d6020811015610c7157600080fd5b81019080805190602001909291905050501515610c8d57600080fd5b5050505050505050565b600080600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060020154610ce8610773565b1115610d0957610cf6610773565b8160020181905550600081600101819055505b80600001548382600101540111158015610d2c5750806001015483826001015401115b15610d3a5760019150610d3f565b600091505b50929150505600a165627a7a723058202b262db46605128446bbaae57646d72dc1cd47e08c0421acebf8b1657c881b990029", - "deployedBytecode": "0x6080604052600436106100a4576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806328814f03146100a9578063430e47f814610152578063481c6a75146101bb5780637de7edef1461021257806381c5e03b14610255578063a3f4df7e146102a2578063b74e452b14610332578063d7bffc921461035d578063fce7379a146103c2578063ffa1ad7414610455575b600080fd5b3480156100b557600080fd5b5061015060048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192905050506104e5565b005b34801561015e57600080fd5b50610167610584565b60405180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200191505060405180910390f35b3480156101c757600080fd5b506101d06105a8565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561021e57600080fd5b50610253600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506105ce565b005b34801561026157600080fd5b506102a0600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610693565b005b3480156102ae57600080fd5b506102b761073a565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102f75780820151818401526020810190506102dc565b50505050905090810190601f1680156103245780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561033e57600080fd5b50610347610773565b6040518082815260200191505060405180910390f35b34801561036957600080fd5b5061039e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061078b565b60405180848152602001838152602001828152602001935050505060405180910390f35b3480156103ce57600080fd5b50610453600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091929192905050506107b5565b005b34801561046157600080fd5b5061046a6107c6565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104aa57808201518184015260208101905061048f565b50505050905090810190601f1680156104d75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60006104ef6107ff565b600090505b825181101561057f57818181518110151561050b57fe5b9060200190602002015160026000858481518110151561052757fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018190555080806001019150506104f4565b505050565b7fa9059cbb0000000000000000000000000000000000000000000000000000000081565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561062a57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561065057600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156106ef57600080fd5b80600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055505050565b6040805190810160405280601281526020017f4461696c79204c696d6974204d6f64756c65000000000000000000000000000081525081565b6000620151804281151561078357fe5b064203905090565b60026020528060005260406000206000915090508060000154908060010154908060020154905083565b6107c133848484610889565b505050565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561084657600080fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600080600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f54bf6e896040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561094c57600080fd5b505af1158015610960573d6000803e3d6000fd5b505050506040513d602081101561097657600080fd5b8101908080519060200190929190505050151561099257600080fd5b600085511480156109a35750600086115b806109bb5750600085511180156109ba5750600086145b5b15156109c657600080fd5b6000855114156109df5760009350869250859150610a64565b8693506020850151905060248501519250604485015191507fa9059cbb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141515610a6357600080fd5b5b60008373ffffffffffffffffffffffffffffffffffffffff1614151515610a8a57600080fd5b600082111515610a9957600080fd5b610aa38483610c97565b1515610aae57600080fd5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160008282540192505081905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a788888860006040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200180602001836002811115610bb857fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b83811015610bf8578082015181840152602081019050610bdd565b50505050905090810190601f168015610c255780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610c4757600080fd5b505af1158015610c5b573d6000803e3d6000fd5b505050506040513d6020811015610c7157600080fd5b81019080805190602001909291905050501515610c8d57600080fd5b5050505050505050565b600080600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060020154610ce8610773565b1115610d0957610cf6610773565b8160020181905550600081600101819055505b80600001548382600101540111158015610d2c5750806001015483826001015401115b15610d3a5760019150610d3f565b600091505b50929150505600a165627a7a723058202b262db46605128446bbaae57646d72dc1cd47e08c0421acebf8b1657c881b990029", - "sourceMap": "296:3862:10:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;296:3862:10;;;;;;;", - "deployedSourceMap": "296:3862:10:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;991:222;;8:9:-1;5:2;;;30:1;27;20:12;5:2;991:222:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;441:67;;8:9:-1;5:2;;;30:1;27;20:12;5:2;441:67:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;262:28:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;262:28:5;;;;;;;;;;;;;;;;;;;;;;;;;;;626:208:4;;8:9:-1;5:2;;;30:1;27;20:12;5:2;626:208:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;1441:158:10;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1441:158:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;339:50;;8:9:-1;5:2;;;30:1;27;20:12;5:2;339:50:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;339:50:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4040:116;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4040:116:10;;;;;;;;;;;;;;;;;;;;;;;586:50;;8:9:-1;5:2;;;30:1;27;20:12;5:2;586:50:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3308:146;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3308:146:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;395:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;395:40:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;395:40:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;991:222;1104:9;1077:12;:10;:12::i;:::-;1116:1;1104:13;;1099:107;1123:6;:13;1119:1;:17;1099:107;;;1191:12;1204:1;1191:15;;;;;;;;;;;;;;;;;;1155:11;:22;1167:6;1174:1;1167:9;;;;;;;;;;;;;;;;;;1155:22;;;;;;;;;;;;;;;:33;;:51;;;;1138:3;;;;;;;1099:107;;;991:222;;;:::o;441:67::-;;;:::o;262:28:5:-;;;;;;;;;;;;;:::o;626:208:4:-;359:7:5;;;;;;;;;;;337:30;;:10;:30;;;329:39;;;;;;;;791:1:4;776:11;:16;;;;768:25;;;;;;;;816:11;803:10;;:24;;;;;;;;;;;;;;;;;;626:208;:::o;1441:158:10:-;359:7:5;;;;;;;;;;;337:30;;:10;:30;;;329:39;;;;;;;;1582:10:10;1550:11;:18;1562:5;1550:18;;;;;;;;;;;;;;;:29;;:42;;;;1441:158;;:::o;339:50::-;;;;;;;;;;;;;;;;;;;;:::o;4040:116::-;4102:4;4142:6;4136:3;:12;;;;;;;;4129:3;:20;4122:27;;4040:116;:::o;586:50::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3308:146::-;3403:44;3419:10;3431:2;3435:5;3442:4;3403:15;:44::i;:::-;3308:146;;;:::o;395:40::-;;;;;;;;;;;;;;;;;;;;:::o;392:268:5:-;606:1;594:7;;;;;;;;;;;586:21;;;578:30;;;;;;;;642:10;618:7;;:35;;;;;;;;;;;;;;;;;;392:268::o;1605:1319:10:-;1997:13;2020:16;2046:14;2233:25;1814:7;;;;;;;;;;;1801:29;;;1831:6;1801:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1801:37:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1801:37:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1801:37:10;;;;;;;;;;;;;;;;1793:46;;;;;;;;1939:1;1924:4;:11;:16;:29;;;;;1952:1;1944:5;:9;1924:29;:62;;;;1971:1;1957:4;:11;:15;:29;;;;;1985:1;1976:5;:10;1957:29;1924:62;1916:71;;;;;;;;2089:1;2074:4;:11;:16;2070:538;;;2114:1;2106:9;;2140:2;2129:13;;2165:5;2156:14;;2070:538;;;2217:2;2209:10;;2405:4;2399;2395:15;2389:22;2367:44;;2456:4;2450;2446:15;2440:22;2428:34;;2505:4;2499;2495:15;2489:22;2479:32;;2568:28;2546:50;;;:18;:50;;;;2538:59;;;;;;;;2070:538;2637:1;2625:8;:13;;;;2617:22;;;;;;;;2666:1;2657:6;:10;2649:19;;;;;;;;2750:27;2763:5;2770:6;2750:12;:27::i;:::-;2742:36;;;;;;;;2821:6;2788:11;:18;2800:5;2788:18;;;;;;;;;;;;;;;:29;;;:39;;;;;;;;;;;2845:7;;;;;;;;;;;:33;;;2879:2;2883:5;2890:4;2896:19;2845:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;2845:71:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2845:71:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2845:71:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2845:71:10;;;;;;;;;;;;;;;;2837:80;;;;;;;;1605:1319;;;;;;;;:::o;3460:488::-;3547:4;3567:29;3599:11;:18;3611:5;3599:18;;;;;;;;;;;;;;;3567:50;;3641:10;:18;;;3631:7;:5;:7::i;:::-;:28;3627:126;;;3696:7;:5;:7::i;:::-;3675:10;:18;;:28;;;;3741:1;3717:10;:21;;:25;;;;3627:126;3803:10;:21;;;3793:6;3769:10;:21;;;:30;:55;;:125;;;;;3873:10;:21;;;3864:6;3840:10;:21;;;:30;:54;3769:125;3762:157;;;3915:4;3908:11;;;;3762:157;3936:5;3929:12;;3460:488;;;;;;:::o", - "source": "pragma solidity 0.4.23;\nimport \"../Module.sol\";\nimport \"../ModuleManager.sol\";\nimport \"../OwnerManager.sol\";\nimport \"../Enum.sol\";\n\n\n/// @title Daily Limit Module - Allows to transfer limited amounts of ERC20 tokens and Ether without confirmations.\n/// @author Stefan George - \ncontract DailyLimitModule is Module {\n\n string public constant NAME = \"Daily Limit Module\";\n string public constant VERSION = \"0.0.1\";\n bytes4 public constant TRANSFER_FUNCTION_IDENTIFIER = hex\"a9059cbb\";\n\n // dailyLimits mapping maps token address to daily limit settings.\n mapping (address => DailyLimit) public dailyLimits;\n\n struct DailyLimit {\n uint256 dailyLimit;\n uint256 spentToday;\n uint256 lastDay;\n }\n\n /// @dev Setup function sets initial storage of contract.\n /// @param tokens List of token addresses. Ether is represented with address 0x0.\n /// @param _dailyLimits List of daily limits in smalles units (e.g. Wei for Ether).\n function setup(address[] tokens, uint256[] _dailyLimits)\n public\n {\n setManager();\n for (uint256 i = 0; i < tokens.length; i++)\n dailyLimits[tokens[i]].dailyLimit = _dailyLimits[i];\n }\n\n /// @dev Allows to update the daily limit for a specified token. This can only be done via a Safe transaction.\n /// @param token Token contract address.\n /// @param dailyLimit Daily limit in smallest token unit.\n function changeDailyLimit(address token, uint256 dailyLimit)\n public\n authorized\n {\n dailyLimits[token].dailyLimit = dailyLimit;\n }\n\n function executeInternal(address sender, address to, uint256 value, bytes data)\n internal\n {\n // Only Safe owners are allowed to execute daily limit transactions.\n require(OwnerManager(manager).isOwner(sender));\n // Data has to encode a token transfer or has to be empty.\n require(data.length == 0 && value > 0 || data.length > 0 && value == 0);\n address token;\n address receiver;\n uint256 amount;\n if (data.length == 0) {\n token = 0;\n receiver = to;\n amount = value;\n }\n else {\n token = to;\n bytes4 functionIdentifier;\n // solium-disable-next-line security/no-inline-assembly\n assembly {\n functionIdentifier := mload(add(data, 0x20))\n receiver := mload(add(data, 0x24))\n amount := mload(add(data, 0x44))\n }\n require(functionIdentifier == TRANSFER_FUNCTION_IDENTIFIER);\n }\n require(receiver != 0);\n require(amount > 0);\n // Validate that transfer is not exceeding daily limit.\n require(isUnderLimit(token, amount));\n dailyLimits[token].spentToday += amount;\n require(manager.execTransactionFromModule(to, value, data, Enum.Operation.Call));\n }\n\n /// @dev Returns if Safe transaction is a valid daily limit transaction.\n /// @param to Receiver address in case of Ether transfer, token address in case of a token transfer.\n /// @param value Ether value in case of an Ether transfer.\n /// @param data Encoded token transfer. Empty in case of Ether transfer.\n /// @return Returns if transaction can be executed.\n function executeDailyLimit(address to, uint256 value, bytes data)\n public\n {\n executeInternal(msg.sender, to, value, data);\n }\n\n function isUnderLimit(address token, uint256 amount)\n internal\n returns (bool)\n {\n DailyLimit storage dailyLimit = dailyLimits[token];\n if (today() > dailyLimit.lastDay) {\n dailyLimit.lastDay = today();\n dailyLimit.spentToday = 0;\n }\n if ( dailyLimit.spentToday + amount <= dailyLimit.dailyLimit\n && dailyLimit.spentToday + amount > dailyLimit.spentToday)\n return true;\n return false;\n }\n\n /// @dev Returns last midnight as Unix timestamp.\n /// @return Unix timestamp.\n function today()\n public\n view\n returns (uint)\n {\n return now - (now % 1 days);\n }\n}\n", + "bytecode": "0x608060405234801561001057600080fd5b50610de9806100206000396000f300608060405260043610610099576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806328814f031461009e578063481c6a751461014757806363bae7c31461019e5780637de7edef1461020b57806381c5e03b1461024e578063a3f4df7e1461029b578063b74e452b1461032b578063d7bffc9214610356578063ffa1ad74146103bb575b600080fd5b3480156100aa57600080fd5b50610145600480360381019080803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929050505061044b565b005b34801561015357600080fd5b5061015c6104ea565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101aa57600080fd5b50610209600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610510565b005b34801561021757600080fd5b5061024c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a64565b005b34801561025a57600080fd5b50610299600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b29565b005b3480156102a757600080fd5b506102b0610bd0565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102f05780820151818401526020810190506102d5565b50505050905090810190601f16801561031d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561033757600080fd5b50610340610c09565b6040518082815260200191505060405180910390f35b34801561036257600080fd5b50610397600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610c21565b60405180848152602001838152602001828152602001935050505060405180910390f35b3480156103c757600080fd5b506103d0610c4b565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104105780820151818401526020810190506103f5565b50505050905090810190601f16801561043d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6000610455610c84565b600090505b82518110156104e557818181518110151561047157fe5b9060200190602002015160026000858481518110151561048d57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000181905550808060010191505061045a565b505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f54bf6e336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1580156105cf57600080fd5b505af11580156105e3573d6000803e3d6000fd5b505050506040513d60208110156105f957600080fd5b8101908080519060200190929190505050151561061557600080fd5b60008373ffffffffffffffffffffffffffffffffffffffff161415151561063b57600080fd5b60008211151561064a57600080fd5b6106548483610d0e565b151561065f57600080fd5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001016000828254019250508190555060008473ffffffffffffffffffffffffffffffffffffffff16141561080957600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a7848460006040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018060200183600281111561078757fe5b60ff168152602001828103825260008152602001602001945050505050602060405180830381600087803b1580156107be57600080fd5b505af11580156107d2573d6000803e3d6000fd5b505050506040513d60208110156107e857600080fd5b8101908080519060200190929190505050151561080457600080fd5b610a5e565b8282604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001925050506040516020818303038152906040527fa9059cbb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050509050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a78560008460006040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018060200183600281111561098857fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b838110156109c85780820151818401526020810190506109ad565b50505050905090810190601f1680156109f55780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610a1757600080fd5b505af1158015610a2b573d6000803e3d6000fd5b505050506040513d6020811015610a4157600080fd5b81019080805190602001909291905050501515610a5d57600080fd5b5b50505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610ac057600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515610ae657600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610b8557600080fd5b80600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055505050565b6040805190810160405280601281526020017f4461696c79204c696d6974204d6f64756c65000000000000000000000000000081525081565b60006201518042811515610c1957fe5b064203905090565b60026020528060005260406000206000915090508060000154908060010154908060020154905083565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610ccb57600080fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600080600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060020154610d5f610c09565b1115610d8057610d6d610c09565b8160020181905550600081600101819055505b80600001548382600101540111158015610da35750806001015483826001015401115b15610db15760019150610db6565b600091505b50929150505600a165627a7a723058204a6f633058d32a4c7f0a2649d73dd0a0048102b89b6ddd371abdbd004bd34c790029", + "deployedBytecode": "0x608060405260043610610099576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806328814f031461009e578063481c6a751461014757806363bae7c31461019e5780637de7edef1461020b57806381c5e03b1461024e578063a3f4df7e1461029b578063b74e452b1461032b578063d7bffc9214610356578063ffa1ad74146103bb575b600080fd5b3480156100aa57600080fd5b50610145600480360381019080803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929050505061044b565b005b34801561015357600080fd5b5061015c6104ea565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101aa57600080fd5b50610209600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610510565b005b34801561021757600080fd5b5061024c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a64565b005b34801561025a57600080fd5b50610299600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b29565b005b3480156102a757600080fd5b506102b0610bd0565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102f05780820151818401526020810190506102d5565b50505050905090810190601f16801561031d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561033757600080fd5b50610340610c09565b6040518082815260200191505060405180910390f35b34801561036257600080fd5b50610397600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610c21565b60405180848152602001838152602001828152602001935050505060405180910390f35b3480156103c757600080fd5b506103d0610c4b565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104105780820151818401526020810190506103f5565b50505050905090810190601f16801561043d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6000610455610c84565b600090505b82518110156104e557818181518110151561047157fe5b9060200190602002015160026000858481518110151561048d57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000181905550808060010191505061045a565b505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f54bf6e336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1580156105cf57600080fd5b505af11580156105e3573d6000803e3d6000fd5b505050506040513d60208110156105f957600080fd5b8101908080519060200190929190505050151561061557600080fd5b60008373ffffffffffffffffffffffffffffffffffffffff161415151561063b57600080fd5b60008211151561064a57600080fd5b6106548483610d0e565b151561065f57600080fd5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001016000828254019250508190555060008473ffffffffffffffffffffffffffffffffffffffff16141561080957600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a7848460006040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018060200183600281111561078757fe5b60ff168152602001828103825260008152602001602001945050505050602060405180830381600087803b1580156107be57600080fd5b505af11580156107d2573d6000803e3d6000fd5b505050506040513d60208110156107e857600080fd5b8101908080519060200190929190505050151561080457600080fd5b610a5e565b8282604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001925050506040516020818303038152906040527fa9059cbb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050509050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a78560008460006040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018060200183600281111561098857fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b838110156109c85780820151818401526020810190506109ad565b50505050905090810190601f1680156109f55780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610a1757600080fd5b505af1158015610a2b573d6000803e3d6000fd5b505050506040513d6020811015610a4157600080fd5b81019080805190602001909291905050501515610a5d57600080fd5b5b50505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610ac057600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515610ae657600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610b8557600080fd5b80600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055505050565b6040805190810160405280601281526020017f4461696c79204c696d6974204d6f64756c65000000000000000000000000000081525081565b60006201518042811515610c1957fe5b064203905090565b60026020528060005260406000206000915090508060000154908060010154908060020154905083565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610ccb57600080fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600080600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060020154610d5f610c09565b1115610d8057610d6d610c09565b8160020181905550600081600101819055505b80600001548382600101540111158015610da35750806001015483826001015401115b15610db15760019150610db6565b600091505b50929150505600a165627a7a723058204a6f633058d32a4c7f0a2649d73dd0a0048102b89b6ddd371abdbd004bd34c790029", + "sourceMap": "296:3082:17:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;296:3082:17;;;;;;;", + "deployedSourceMap": "296:3082:17:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;918:222;;8:9:-1;5:2;;;30:1;27;20:12;5:2;918:222:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;262:28:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;262:28:7;;;;;;;;;;;;;;;;;;;;;;;;;;;1890:784:17;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1890:784:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;626:208:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;626:208:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;1368:158:17;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1368:158:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;339:50;;8:9:-1;5:2;;;30:1;27;20:12;5:2;339:50:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;339:50:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3260:116;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3260:116:17;;;;;;;;;;;;;;;;;;;;;;;513:50;;8:9:-1;5:2;;;30:1;27;20:12;5:2;513:50:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;395:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;395:40:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;395:40:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;918:222;1031:9;1004:12;:10;:12::i;:::-;1043:1;1031:13;;1026:107;1050:6;:13;1046:1;:17;1026:107;;;1118:12;1131:1;1118:15;;;;;;;;;;;;;;;;;;1082:11;:22;1094:6;1101:1;1094:9;;;;;;;;;;;;;;;;;;1082:22;;;;;;;;;;;;;;;:33;;:51;;;;1065:3;;;;;;;1026:107;;;918:222;;;:::o;262:28:7:-;;;;;;;;;;;;;:::o;1890:784:17:-;2480:17;2087:7;;;;;;;;;;;2074:29;;;2104:10;2074:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2074:41:17;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2074:41:17;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2074:41:17;;;;;;;;;;;;;;;;2066:50;;;;;;;;2140:1;2134:2;:7;;;;2126:16;;;;;;;;2169:1;2160:6;:10;2152:19;;;;;;;;2253:27;2266:5;2273:6;2253:12;:27::i;:::-;2245:36;;;;;;;;2324:6;2291:11;:18;2303:5;2291:18;;;;;;;;;;;;;;;:29;;;:39;;;;;;;;;;;2353:1;2344:5;:10;;;2340:328;;;2378:7;;;;;;;;;;;:33;;;2412:2;2416:6;2428:19;2378:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2378:70:17;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2378:70:17;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2378:70:17;;;;;;;;;;;;;;;;2370:79;;;;;;;;2340:328;;;2553:2;2557:6;2500:64;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;2500:64:17;;;;;;;38:4:-1;29:7;25:18;67:10;61:17;96:58;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;2500:64:17;2480:84;;2586:7;;;;;;;;;;;:33;;;2620:5;2627:1;2630:4;2636:19;2586:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;2586:70:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2586:70:17;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2586:70:17;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2586:70:17;;;;;;;;;;;;;;;;2578:79;;;;;;;;2340:328;1890:784;;;;:::o;626:208:5:-;359:7:7;;;;;;;;;;;337:30;;:10;:30;;;329:39;;;;;;;;791:1:5;776:11;:16;;;;768:25;;;;;;;;816:11;803:10;;:24;;;;;;;;;;;;;;;;;;626:208;:::o;1368:158:17:-;359:7:7;;;;;;;;;;;337:30;;:10;:30;;;329:39;;;;;;;;1509:10:17;1477:11;:18;1489:5;1477:18;;;;;;;;;;;;;;;:29;;:42;;;;1368:158;;:::o;339:50::-;;;;;;;;;;;;;;;;;;;;:::o;3260:116::-;3322:4;3362:6;3356:3;:12;;;;;;;;3349:3;:20;3342:27;;3260:116;:::o;513:50::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;395:40::-;;;;;;;;;;;;;;;;;;;;:::o;392:268:7:-;606:1;594:7;;;;;;;;;;;586:21;;;578:30;;;;;;;;642:10;618:7;;:35;;;;;;;;;;;;;;;;;;392:268::o;2680:488:17:-;2767:4;2787:29;2819:11;:18;2831:5;2819:18;;;;;;;;;;;;;;;2787:50;;2861:10;:18;;;2851:7;:5;:7::i;:::-;:28;2847:126;;;2916:7;:5;:7::i;:::-;2895:10;:18;;:28;;;;2961:1;2937:10;:21;;:25;;;;2847:126;3023:10;:21;;;3013:6;2989:10;:21;;;:30;:55;;:125;;;;;3093:10;:21;;;3084:6;3060:10;:21;;;:30;:54;2989:125;2982:157;;;3135:4;3128:11;;;;2982:157;3156:5;3149:12;;2680:488;;;;;;:::o", + "source": "pragma solidity 0.4.24;\nimport \"../Module.sol\";\nimport \"../ModuleManager.sol\";\nimport \"../OwnerManager.sol\";\nimport \"../Enum.sol\";\n\n\n/// @title Daily Limit Module - Allows to transfer limited amounts of ERC20 tokens and Ether without confirmations.\n/// @author Stefan George - \ncontract DailyLimitModule is Module {\n\n string public constant NAME = \"Daily Limit Module\";\n string public constant VERSION = \"0.0.1\";\n\n // dailyLimits mapping maps token address to daily limit settings.\n mapping (address => DailyLimit) public dailyLimits;\n\n struct DailyLimit {\n uint256 dailyLimit;\n uint256 spentToday;\n uint256 lastDay;\n }\n\n /// @dev Setup function sets initial storage of contract.\n /// @param tokens List of token addresses. Ether is represented with address 0x0.\n /// @param _dailyLimits List of daily limits in smalles units (e.g. Wei for Ether).\n function setup(address[] tokens, uint256[] _dailyLimits)\n public\n {\n setManager();\n for (uint256 i = 0; i < tokens.length; i++)\n dailyLimits[tokens[i]].dailyLimit = _dailyLimits[i];\n }\n\n /// @dev Allows to update the daily limit for a specified token. This can only be done via a Safe transaction.\n /// @param token Token contract address.\n /// @param dailyLimit Daily limit in smallest token unit.\n function changeDailyLimit(address token, uint256 dailyLimit)\n public\n authorized\n {\n dailyLimits[token].dailyLimit = dailyLimit;\n }\n\n /// @dev Returns if Safe transaction is a valid daily limit transaction.\n /// @param token Address of the token that should be transfered (0 for Ether)\n /// @param to Address to which the tokens should be transfered\n /// @param amount Amount of tokens (or Ether) that should be transfered\n /// @return Returns if transaction can be executed.\n function executeDailyLimit(address token, address to, uint256 amount)\n public\n {\n // Only Safe owners are allowed to execute daily limit transactions.\n require(OwnerManager(manager).isOwner(msg.sender));\n require(to != 0);\n require(amount > 0);\n // Validate that transfer is not exceeding daily limit.\n require(isUnderLimit(token, amount));\n dailyLimits[token].spentToday += amount;\n if (token == 0) {\n require(manager.execTransactionFromModule(to, amount, \"\", Enum.Operation.Call));\n } else {\n bytes memory data = abi.encodeWithSignature(\"transfer(address,uint256)\", to, amount);\n require(manager.execTransactionFromModule(token, 0, data, Enum.Operation.Call));\n }\n }\n\n function isUnderLimit(address token, uint256 amount)\n internal\n returns (bool)\n {\n DailyLimit storage dailyLimit = dailyLimits[token];\n if (today() > dailyLimit.lastDay) {\n dailyLimit.lastDay = today();\n dailyLimit.spentToday = 0;\n }\n if ( dailyLimit.spentToday + amount <= dailyLimit.dailyLimit\n && dailyLimit.spentToday + amount > dailyLimit.spentToday)\n return true;\n return false;\n }\n\n /// @dev Returns last midnight as Unix timestamp.\n /// @return Unix timestamp.\n function today()\n public\n view\n returns (uint)\n {\n return now - (now % 1 days);\n }\n}\n", "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/modules/DailyLimitModule.sol", "ast": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/modules/DailyLimitModule.sol", "exportedSymbols": { "DailyLimitModule": [ - 1694 + 1973 ] }, - "id": 1695, + "id": 1974, "nodeType": "SourceUnit", "nodes": [ { - "id": 1406, + "id": 1742, "literals": [ "solidity", "0.4", - ".23" + ".24" ], "nodeType": "PragmaDirective", - "src": "0:23:10" + "src": "0:23:17" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Module.sol", "file": "../Module.sol", - "id": 1407, + "id": 1743, "nodeType": "ImportDirective", - "scope": 1695, - "sourceUnit": 622, - "src": "24:23:10", + "scope": 1974, + "sourceUnit": 751, + "src": "24:23:17", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/ModuleManager.sol", "file": "../ModuleManager.sol", - "id": 1408, + "id": 1744, "nodeType": "ImportDirective", - "scope": 1695, - "sourceUnit": 972, - "src": "48:30:10", + "scope": 1974, + "sourceUnit": 1101, + "src": "48:30:17", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/OwnerManager.sol", "file": "../OwnerManager.sol", - "id": 1409, + "id": 1745, "nodeType": "ImportDirective", - "scope": 1695, - "sourceUnit": 1344, - "src": "79:29:10", + "scope": 1974, + "sourceUnit": 1473, + "src": "79:29:17", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Enum.sol", "file": "../Enum.sol", - "id": 1410, + "id": 1746, "nodeType": "ImportDirective", - "scope": 1695, - "sourceUnit": 7, - "src": "109:21:10", + "scope": 1974, + "sourceUnit": 31, + "src": "109:21:17", "symbolAliases": [], "unitAlias": "" }, @@ -247,46 +233,46 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 1411, + "id": 1747, "name": "Module", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 621, - "src": "325:6:10", + "referencedDeclaration": 750, + "src": "325:6:17", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$621", + "typeIdentifier": "t_contract$_Module_$750", "typeString": "contract Module" } }, - "id": 1412, + "id": 1748, "nodeType": "InheritanceSpecifier", - "src": "325:6:10" + "src": "325:6:17" } ], "contractDependencies": [ - 580, - 621, - 1359 + 652, + 750, + 1619 ], "contractKind": "contract", "documentation": "@title Daily Limit Module - Allows to transfer limited amounts of ERC20 tokens and Ether without confirmations.\n @author Stefan George - ", "fullyImplemented": true, - "id": 1694, + "id": 1973, "linearizedBaseContracts": [ - 1694, - 621, - 580, - 1359 + 1973, + 750, + 652, + 1619 ], "name": "DailyLimitModule", "nodeType": "ContractDefinition", "nodes": [ { "constant": true, - "id": 1415, + "id": 1751, "name": "NAME", "nodeType": "VariableDeclaration", - "scope": 1694, - "src": "339:50:10", + "scope": 1973, + "src": "339:50:17", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -294,10 +280,10 @@ "typeString": "string" }, "typeName": { - "id": 1413, + "id": 1749, "name": "string", "nodeType": "ElementaryTypeName", - "src": "339:6:10", + "src": "339:6:17", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -306,14 +292,14 @@ "value": { "argumentTypes": null, "hexValue": "4461696c79204c696d6974204d6f64756c65", - "id": 1414, + "id": 1750, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "369:20:10", + "src": "369:20:17", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_821ea27acfbc77b49f7a021dbe2eb92017d46b8bdda0bff9901cbc8ee143ceb3", @@ -325,11 +311,11 @@ }, { "constant": true, - "id": 1418, + "id": 1754, "name": "VERSION", "nodeType": "VariableDeclaration", - "scope": 1694, - "src": "395:40:10", + "scope": 1973, + "src": "395:40:17", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -337,10 +323,10 @@ "typeString": "string" }, "typeName": { - "id": 1416, + "id": 1752, "name": "string", "nodeType": "ElementaryTypeName", - "src": "395:6:10", + "src": "395:6:17", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -349,14 +335,14 @@ "value": { "argumentTypes": null, "hexValue": "302e302e31", - "id": 1417, + "id": 1753, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "428:7:10", + "src": "428:7:17", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_ae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc199163811885", @@ -366,89 +352,46 @@ }, "visibility": "public" }, - { - "constant": true, - "id": 1421, - "name": "TRANSFER_FUNCTION_IDENTIFIER", - "nodeType": "VariableDeclaration", - "scope": 1694, - "src": "441:67:10", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - }, - "typeName": { - "id": 1419, - "name": "bytes4", - "nodeType": "ElementaryTypeName", - "src": "441:6:10", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - "value": { - "argumentTypes": null, - "hexValue": "a9059cbb", - "id": 1420, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "495:13:10", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_abce0605a16ff5e998983a0af570b8ad942bb11e305eb20ae3ada0a3be24eb97", - "typeString": "literal_string (contains invalid UTF-8 sequence at position 0)" - }, - "value": null - }, - "visibility": "public" - }, { "constant": false, - "id": 1425, + "id": 1758, "name": "dailyLimits", "nodeType": "VariableDeclaration", - "scope": 1694, - "src": "586:50:10", + "scope": 1973, + "src": "513:50:17", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1432_storage_$", + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1765_storage_$", "typeString": "mapping(address => struct DailyLimitModule.DailyLimit)" }, "typeName": { - "id": 1424, + "id": 1757, "keyType": { - "id": 1422, + "id": 1755, "name": "address", "nodeType": "ElementaryTypeName", - "src": "595:7:10", + "src": "522:7:17", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", - "src": "586:31:10", + "src": "513:31:17", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1432_storage_$", + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1765_storage_$", "typeString": "mapping(address => struct DailyLimitModule.DailyLimit)" }, "valueType": { "contractScope": null, - "id": 1423, + "id": 1756, "name": "DailyLimit", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1432, - "src": "606:10:10", + "referencedDeclaration": 1765, + "src": "533:10:17", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1432_storage_ptr", + "typeIdentifier": "t_struct$_DailyLimit_$1765_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit" } } @@ -458,15 +401,15 @@ }, { "canonicalName": "DailyLimitModule.DailyLimit", - "id": 1432, + "id": 1765, "members": [ { "constant": false, - "id": 1427, + "id": 1760, "name": "dailyLimit", "nodeType": "VariableDeclaration", - "scope": 1432, - "src": "671:18:10", + "scope": 1765, + "src": "598:18:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -474,10 +417,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1426, + "id": 1759, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "671:7:10", + "src": "598:7:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -488,11 +431,11 @@ }, { "constant": false, - "id": 1429, + "id": 1762, "name": "spentToday", "nodeType": "VariableDeclaration", - "scope": 1432, - "src": "699:18:10", + "scope": 1765, + "src": "626:18:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -500,10 +443,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1428, + "id": 1761, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "699:7:10", + "src": "626:7:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -514,11 +457,11 @@ }, { "constant": false, - "id": 1431, + "id": 1764, "name": "lastDay", "nodeType": "VariableDeclaration", - "scope": 1432, - "src": "727:15:10", + "scope": 1765, + "src": "654:15:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -526,10 +469,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1430, + "id": 1763, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "727:7:10", + "src": "654:7:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -541,15 +484,15 @@ ], "name": "DailyLimit", "nodeType": "StructDefinition", - "scope": 1694, - "src": "643:106:10", + "scope": 1973, + "src": "570:106:17", "visibility": "public" }, { "body": { - "id": 1467, + "id": 1800, "nodeType": "Block", - "src": "1067:146:10", + "src": "994:146:17", "statements": [ { "expression": { @@ -557,18 +500,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 1441, + "id": 1774, "name": "setManager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 620, - "src": "1077:10:10", + "referencedDeclaration": 749, + "src": "1004:10:17", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()" } }, - "id": 1442, + "id": 1775, "isConstant": false, "isLValue": false, "isPure": false, @@ -576,21 +519,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1077:12:10", + "src": "1004:12:17", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1443, + "id": 1776, "nodeType": "ExpressionStatement", - "src": "1077:12:10" + "src": "1004:12:17" }, { "body": { "expression": { "argumentTypes": null, - "id": 1464, + "id": 1797, "isConstant": false, "isLValue": false, "isPure": false, @@ -601,42 +544,42 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1455, + "id": 1788, "name": "dailyLimits", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1425, - "src": "1155:11:10", + "referencedDeclaration": 1758, + "src": "1082:11:17", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1432_storage_$", + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1765_storage_$", "typeString": "mapping(address => struct DailyLimitModule.DailyLimit storage ref)" } }, - "id": 1459, + "id": 1792, "indexExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1456, + "id": 1789, "name": "tokens", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1435, - "src": "1167:6:10", + "referencedDeclaration": 1768, + "src": "1094:6:17", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 1458, + "id": 1791, "indexExpression": { "argumentTypes": null, - "id": 1457, + "id": 1790, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1445, - "src": "1174:1:10", + "referencedDeclaration": 1778, + "src": "1101:1:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -647,7 +590,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1167:9:10", + "src": "1094:9:17", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -658,21 +601,21 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1155:22:10", + "src": "1082:22:17", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1432_storage", + "typeIdentifier": "t_struct$_DailyLimit_$1765_storage", "typeString": "struct DailyLimitModule.DailyLimit storage ref" } }, - "id": 1460, + "id": 1793, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "dailyLimit", "nodeType": "MemberAccess", - "referencedDeclaration": 1427, - "src": "1155:33:10", + "referencedDeclaration": 1760, + "src": "1082:33:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -684,26 +627,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1461, + "id": 1794, "name": "_dailyLimits", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1438, - "src": "1191:12:10", + "referencedDeclaration": 1771, + "src": "1118:12:17", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[] memory" } }, - "id": 1463, + "id": 1796, "indexExpression": { "argumentTypes": null, - "id": 1462, + "id": 1795, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1445, - "src": "1204:1:10", + "referencedDeclaration": 1778, + "src": "1131:1:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -714,21 +657,21 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1191:15:10", + "src": "1118:15:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1155:51:10", + "src": "1082:51:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 1465, + "id": 1798, "nodeType": "ExpressionStatement", - "src": "1155:51:10" + "src": "1082:51:17" }, "condition": { "argumentTypes": null, @@ -736,19 +679,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1451, + "id": 1784, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1448, + "id": 1781, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1445, - "src": "1119:1:10", + "referencedDeclaration": 1778, + "src": "1046:1:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -760,18 +703,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1449, + "id": 1782, "name": "tokens", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1435, - "src": "1123:6:10", + "referencedDeclaration": 1768, + "src": "1050:6:17", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 1450, + "id": 1783, "isConstant": false, "isLValue": false, "isPure": false, @@ -779,31 +722,31 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1123:13:10", + "src": "1050:13:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1119:17:10", + "src": "1046:17:17", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 1466, + "id": 1799, "initializationExpression": { "assignments": [ - 1445 + 1778 ], "declarations": [ { "constant": false, - "id": 1445, + "id": 1778, "name": "i", "nodeType": "VariableDeclaration", - "scope": 1468, - "src": "1104:9:10", + "scope": 1801, + "src": "1031:9:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -811,10 +754,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1444, + "id": 1777, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1104:7:10", + "src": "1031:7:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -824,18 +767,18 @@ "visibility": "internal" } ], - "id": 1447, + "id": 1780, "initialValue": { "argumentTypes": null, "hexValue": "30", - "id": 1446, + "id": 1779, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1116:1:10", + "src": "1043:1:17", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -844,12 +787,12 @@ "value": "0" }, "nodeType": "VariableDeclarationStatement", - "src": "1104:13:10" + "src": "1031:13:17" }, "loopExpression": { "expression": { "argumentTypes": null, - "id": 1453, + "id": 1786, "isConstant": false, "isLValue": false, "isPure": false, @@ -857,15 +800,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "1138:3:10", + "src": "1065:3:17", "subExpression": { "argumentTypes": null, - "id": 1452, + "id": 1785, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1445, - "src": "1138:1:10", + "referencedDeclaration": 1778, + "src": "1065:1:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -876,17 +819,17 @@ "typeString": "uint256" } }, - "id": 1454, + "id": 1787, "nodeType": "ExpressionStatement", - "src": "1138:3:10" + "src": "1065:3:17" }, "nodeType": "ForStatement", - "src": "1099:107:10" + "src": "1026:107:17" } ] }, "documentation": "@dev Setup function sets initial storage of contract.\n @param tokens List of token addresses. Ether is represented with address 0x0.\n @param _dailyLimits List of daily limits in smalles units (e.g. Wei for Ether).", - "id": 1468, + "id": 1801, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -894,16 +837,16 @@ "name": "setup", "nodeType": "FunctionDefinition", "parameters": { - "id": 1439, + "id": 1772, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1435, + "id": 1768, "name": "tokens", "nodeType": "VariableDeclaration", - "scope": 1468, - "src": "1006:16:10", + "scope": 1801, + "src": "933:16:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -912,19 +855,19 @@ }, "typeName": { "baseType": { - "id": 1433, + "id": 1766, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1006:7:10", + "src": "933:7:17", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1434, + "id": 1767, "length": null, "nodeType": "ArrayTypeName", - "src": "1006:9:10", + "src": "933:9:17", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" @@ -935,11 +878,11 @@ }, { "constant": false, - "id": 1438, + "id": 1771, "name": "_dailyLimits", "nodeType": "VariableDeclaration", - "scope": 1468, - "src": "1024:22:10", + "scope": 1801, + "src": "951:22:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -948,19 +891,19 @@ }, "typeName": { "baseType": { - "id": 1436, + "id": 1769, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1024:7:10", + "src": "951:7:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 1437, + "id": 1770, "length": null, "nodeType": "ArrayTypeName", - "src": "1024:9:10", + "src": "951:9:17", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", "typeString": "uint256[]" @@ -970,31 +913,31 @@ "visibility": "internal" } ], - "src": "1005:42:10" + "src": "932:42:17" }, "payable": false, "returnParameters": { - "id": 1440, + "id": 1773, "nodeType": "ParameterList", "parameters": [], - "src": "1067:0:10" + "src": "994:0:17" }, - "scope": 1694, - "src": "991:222:10", + "scope": 1973, + "src": "918:222:17", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1484, + "id": 1817, "nodeType": "Block", - "src": "1540:59:10", + "src": "1467:59:17", "statements": [ { "expression": { "argumentTypes": null, - "id": 1482, + "id": 1815, "isConstant": false, "isLValue": false, "isPure": false, @@ -1005,26 +948,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1477, + "id": 1810, "name": "dailyLimits", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1425, - "src": "1550:11:10", + "referencedDeclaration": 1758, + "src": "1477:11:17", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1432_storage_$", + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1765_storage_$", "typeString": "mapping(address => struct DailyLimitModule.DailyLimit storage ref)" } }, - "id": 1479, + "id": 1812, "indexExpression": { "argumentTypes": null, - "id": 1478, + "id": 1811, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1470, - "src": "1562:5:10", + "referencedDeclaration": 1803, + "src": "1489:5:17", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1035,21 +978,21 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1550:18:10", + "src": "1477:18:17", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1432_storage", + "typeIdentifier": "t_struct$_DailyLimit_$1765_storage", "typeString": "struct DailyLimitModule.DailyLimit storage ref" } }, - "id": 1480, + "id": 1813, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "dailyLimit", "nodeType": "MemberAccess", - "referencedDeclaration": 1427, - "src": "1550:29:10", + "referencedDeclaration": 1760, + "src": "1477:29:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1059,68 +1002,68 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1481, + "id": 1814, "name": "dailyLimit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1472, - "src": "1582:10:10", + "referencedDeclaration": 1805, + "src": "1509:10:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1550:42:10", + "src": "1477:42:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 1483, + "id": 1816, "nodeType": "ExpressionStatement", - "src": "1550:42:10" + "src": "1477:42:17" } ] }, "documentation": "@dev Allows to update the daily limit for a specified token. This can only be done via a Safe transaction.\n @param token Token contract address.\n @param dailyLimit Daily limit in smallest token unit.", - "id": 1485, + "id": 1818, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 1475, + "id": 1808, "modifierName": { "argumentTypes": null, - "id": 1474, + "id": 1807, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 601, - "src": "1525:10:10", + "referencedDeclaration": 730, + "src": "1452:10:17", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "1525:10:10" + "src": "1452:10:17" } ], "name": "changeDailyLimit", "nodeType": "FunctionDefinition", "parameters": { - "id": 1473, + "id": 1806, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1470, + "id": 1803, "name": "token", "nodeType": "VariableDeclaration", - "scope": 1485, - "src": "1467:13:10", + "scope": 1818, + "src": "1394:13:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1128,10 +1071,10 @@ "typeString": "address" }, "typeName": { - "id": 1469, + "id": 1802, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1467:7:10", + "src": "1394:7:17", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1142,11 +1085,11 @@ }, { "constant": false, - "id": 1472, + "id": 1805, "name": "dailyLimit", "nodeType": "VariableDeclaration", - "scope": 1485, - "src": "1482:18:10", + "scope": 1818, + "src": "1409:18:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1154,10 +1097,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1471, + "id": 1804, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1482:7:10", + "src": "1409:7:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1167,26 +1110,26 @@ "visibility": "internal" } ], - "src": "1466:35:10" + "src": "1393:35:17" }, "payable": false, "returnParameters": { - "id": 1476, + "id": 1809, "nodeType": "ParameterList", "parameters": [], - "src": "1540:0:10" + "src": "1467:0:17" }, - "scope": 1694, - "src": "1441:158:10", + "scope": 1973, + "src": "1368:158:17", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1605, + "id": 1902, "nodeType": "Block", - "src": "1706:1218:10", + "src": "1979:695:17", "statements": [ { "expression": { @@ -1197,12 +1140,28 @@ "arguments": [ { "argumentTypes": null, - "id": 1501, - "name": "sender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1487, - "src": "1831:6:10", + "expression": { + "argumentTypes": null, + "id": 1832, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2598, + "src": "2104:3:17", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1833, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2104:10:17", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1221,14 +1180,14 @@ "arguments": [ { "argumentTypes": null, - "id": 1498, + "id": 1829, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 588, - "src": "1814:7:10", + "referencedDeclaration": 717, + "src": "2087:7:17", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$971", + "typeIdentifier": "t_contract$_ModuleManager_$1100", "typeString": "contract ModuleManager" } } @@ -1236,22 +1195,22 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_ModuleManager_$971", + "typeIdentifier": "t_contract$_ModuleManager_$1100", "typeString": "contract ModuleManager" } ], - "id": 1497, + "id": 1828, "name": "OwnerManager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1343, - "src": "1801:12:10", + "referencedDeclaration": 1472, + "src": "2074:12:17", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_OwnerManager_$1343_$", + "typeIdentifier": "t_type$_t_contract$_OwnerManager_$1472_$", "typeString": "type(contract OwnerManager)" } }, - "id": 1499, + "id": 1830, "isConstant": false, "isLValue": false, "isPure": false, @@ -1259,27 +1218,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1801:21:10", + "src": "2074:21:17", "typeDescriptions": { - "typeIdentifier": "t_contract$_OwnerManager_$1343", + "typeIdentifier": "t_contract$_OwnerManager_$1472", "typeString": "contract OwnerManager" } }, - "id": 1500, + "id": 1831, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "isOwner", "nodeType": "MemberAccess", - "referencedDeclaration": 1293, - "src": "1801:29:10", + "referencedDeclaration": 1422, + "src": "2074:29:17", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view external returns (bool)" } }, - "id": 1502, + "id": 1834, "isConstant": false, "isLValue": false, "isPure": false, @@ -1287,7 +1246,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1801:37:10", + "src": "2074:41:17", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1301,21 +1260,21 @@ "typeString": "bool" } ], - "id": 1496, + "id": 1827, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "1793:7:10", + "referencedDeclaration": 2601, + "src": "2066:7:17", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1503, + "id": 1835, "isConstant": false, "isLValue": false, "isPure": false, @@ -1323,15 +1282,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1793:46:10", + "src": "2066:50:17", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1504, + "id": 1836, "nodeType": "ExpressionStatement", - "src": "1793:46:10" + "src": "2066:50:17" }, { "expression": { @@ -1340,287 +1299,48 @@ { "argumentTypes": null, "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_address", + "typeString": "address" }, - "id": 1522, + "id": 1840, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 1513, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1509, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1506, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1493, - "src": "1924:4:10", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - "id": 1507, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "1924:11:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1508, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1939:1:10", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "1924:16:10", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "&&", - "rightExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1512, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1510, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1491, - "src": "1944:5:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1511, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1952:1:10", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "1944:9:10", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "1924:29:10", + "id": 1838, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1822, + "src": "2134:2:17", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_address", + "typeString": "address" } }, "nodeType": "BinaryOperation", - "operator": "||", + "operator": "!=", "rightExpression": { "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 1521, + "hexValue": "30", + "id": 1839, "isConstant": false, "isLValue": false, - "isPure": false, + "isPure": true, + "kind": "number", "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1517, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1514, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1493, - "src": "1957:4:10", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - "id": 1515, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "1957:11:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1516, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1971:1:10", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "1957:15:10", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "&&", - "rightExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1520, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1518, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1491, - "src": "1976:5:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1519, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1985:1:10", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "1976:10:10", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "1957:29:10", + "nodeType": "Literal", + "src": "2140:1:17", + "subdenomination": null, "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" }, - "src": "1924:62:10", + "src": "2134:7:17", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1634,21 +1354,21 @@ "typeString": "bool" } ], - "id": 1505, + "id": 1837, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "1916:7:10", + "referencedDeclaration": 2601, + "src": "2126:7:17", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1523, + "id": 1841, "isConstant": false, "isLValue": false, "isPure": false, @@ -1656,160 +1376,332 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1916:71:10", + "src": "2126:16:17", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1524, + "id": 1842, "nodeType": "ExpressionStatement", - "src": "1916:71:10" + "src": "2126:16:17" }, { - "assignments": [], - "declarations": [ - { - "constant": false, - "id": 1526, - "name": "token", - "nodeType": "VariableDeclaration", - "scope": 1606, - "src": "1997:13:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1525, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1997:7:10", + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1846, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1844, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1824, + "src": "2160:6:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1845, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2169:1:17", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2160:10:17", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1843, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2601, + 2602 + ], + "referencedDeclaration": 2601, + "src": "2152:7:17", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1847, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2152:19:17", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1848, + "nodeType": "ExpressionStatement", + "src": "2152:19:17" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1851, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1820, + "src": "2266:5:17", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1852, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1824, + "src": "2273:6:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1850, + "name": "isUnderLimit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1959, + "src": "2253:12:17", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) returns (bool)" + } + }, + "id": 1853, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2253:27:17", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1849, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2601, + 2602 + ], + "referencedDeclaration": 2601, + "src": "2245:7:17", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1854, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2245:36:17", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1855, + "nodeType": "ExpressionStatement", + "src": "2245:36:17" + }, + { + "expression": { + "argumentTypes": null, + "id": 1861, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1856, + "name": "dailyLimits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1758, + "src": "2291:11:17", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1765_storage_$", + "typeString": "mapping(address => struct DailyLimitModule.DailyLimit storage ref)" + } + }, + "id": 1858, + "indexExpression": { + "argumentTypes": null, + "id": 1857, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1820, + "src": "2303:5:17", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2291:18:17", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DailyLimit_$1765_storage", + "typeString": "struct DailyLimitModule.DailyLimit storage ref" } }, - "value": null, - "visibility": "internal" - } - ], - "id": 1527, - "initialValue": null, - "nodeType": "VariableDeclarationStatement", - "src": "1997:13:10" - }, - { - "assignments": [], - "declarations": [ - { - "constant": false, - "id": 1529, - "name": "receiver", - "nodeType": "VariableDeclaration", - "scope": 1606, - "src": "2020:16:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1528, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2020:7:10", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1530, - "initialValue": null, - "nodeType": "VariableDeclarationStatement", - "src": "2020:16:10" - }, - { - "assignments": [], - "declarations": [ - { - "constant": false, - "id": 1532, - "name": "amount", - "nodeType": "VariableDeclaration", - "scope": 1606, - "src": "2046:14:10", - "stateVariable": false, - "storageLocation": "default", + "id": 1859, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "spentToday", + "nodeType": "MemberAccess", + "referencedDeclaration": 1762, + "src": "2291:29:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" - }, - "typeName": { - "id": 1531, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2046:7:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "argumentTypes": null, + "id": 1860, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1824, + "src": "2324:6:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2291:39:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } - ], - "id": 1533, - "initialValue": null, - "nodeType": "VariableDeclarationStatement", - "src": "2046:14:10" + }, + "id": 1862, + "nodeType": "ExpressionStatement", + "src": "2291:39:17" }, { "condition": { "argumentTypes": null, "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address", + "typeString": "address" }, - "id": 1537, + "id": 1865, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1534, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1493, - "src": "2074:4:10", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - "id": 1535, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "2074:11:10", + "id": 1863, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1820, + "src": "2344:5:17", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address", + "typeString": "address" } }, "nodeType": "BinaryOperation", @@ -1817,14 +1709,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1536, + "id": 1864, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2089:1:10", + "src": "2353:1:17", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -1832,159 +1724,156 @@ }, "value": "0" }, - "src": "2074:16:10", + "src": "2344:10:17", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": { - "id": 1565, + "id": 1900, "nodeType": "Block", - "src": "2195:413:10", + "src": "2466:202:17", "statements": [ { - "expression": { - "argumentTypes": null, - "id": 1553, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1551, - "name": "token", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1526, - "src": "2209:5:10", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 1552, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1489, - "src": "2217:2:10", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "2209:10:10", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 1554, - "nodeType": "ExpressionStatement", - "src": "2209:10:10" - }, - { - "assignments": [], + "assignments": [ + 1880 + ], "declarations": [ { "constant": false, - "id": 1556, - "name": "functionIdentifier", + "id": 1880, + "name": "data", "nodeType": "VariableDeclaration", - "scope": 1606, - "src": "2233:25:10", + "scope": 1903, + "src": "2480:17:17", "stateVariable": false, - "storageLocation": "default", + "storageLocation": "memory", "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" }, "typeName": { - "id": 1555, - "name": "bytes4", + "id": 1879, + "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "2233:6:10", + "src": "2480:5:17", "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" } }, "value": null, "visibility": "internal" } ], - "id": 1557, - "initialValue": null, - "nodeType": "VariableDeclarationStatement", - "src": "2233:25:10" - }, - { - "externalReferences": [ - { - "functionIdentifier": { - "declaration": 1556, - "isOffset": false, - "isSlot": false, - "src": "2367:18:10", - "valueSize": 1 + "id": 1887, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "7472616e7366657228616464726573732c75696e7432353629", + "id": 1883, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2524:27:17", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_a9059cbb2ab09eb219583f4a59a5d0623ade346d962bcd4e46b11da047c9049b", + "typeString": "literal_string \"transfer(address,uint256)\"" + }, + "value": "transfer(address,uint256)" + }, + { + "argumentTypes": null, + "id": 1884, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1822, + "src": "2553:2:17", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1885, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1824, + "src": "2557:6:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_a9059cbb2ab09eb219583f4a59a5d0623ade346d962bcd4e46b11da047c9049b", + "typeString": "literal_string \"transfer(address,uint256)\"" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 1881, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2585, + "src": "2500:3:17", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 1882, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodeWithSignature", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2500:23:17", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (string memory) pure returns (bytes memory)" } }, - { - "data": { - "declaration": 1493, - "isOffset": false, - "isSlot": false, - "src": "2399:4:10", - "valueSize": 1 - } - }, - { - "receiver": { - "declaration": 1529, - "isOffset": false, - "isSlot": false, - "src": "2428:8:10", - "valueSize": 1 - } - }, - { - "amount": { - "declaration": 1532, - "isOffset": false, - "isSlot": false, - "src": "2479:6:10", - "valueSize": 1 - } - }, - { - "data": { - "declaration": 1493, - "isOffset": false, - "isSlot": false, - "src": "2450:4:10", - "valueSize": 1 - } - }, - { - "data": { - "declaration": 1493, - "isOffset": false, - "isSlot": false, - "src": "2499:4:10", - "valueSize": 1 - } + "id": 1886, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2500:64:17", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" } - ], - "id": 1558, - "nodeType": "InlineAssembly", - "operations": "{\n functionIdentifier := mload(add(data, 0x20))\n receiver := mload(add(data, 0x24))\n amount := mload(add(data, 0x44))\n}", - "src": "2340:205:10" + }, + "nodeType": "VariableDeclarationStatement", + "src": "2480:84:17" }, { "expression": { @@ -1992,44 +1881,152 @@ "arguments": [ { "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" + "arguments": [ + { + "argumentTypes": null, + "id": 1891, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1820, + "src": "2620:5:17", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "hexValue": "30", + "id": 1892, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2627:1:17", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "argumentTypes": null, + "id": 1893, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1880, + "src": "2630:4:17", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1894, + "name": "Enum", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 30, + "src": "2636:4:17", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Enum_$30_$", + "typeString": "type(contract Enum)" + } + }, + "id": 1895, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "Operation", + "nodeType": "MemberAccess", + "referencedDeclaration": 29, + "src": "2636:14:17", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_Operation_$29_$", + "typeString": "type(enum Enum.Operation)" + } + }, + "id": 1896, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "Call", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2636:19:17", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + } + ], + "expression": { + "argumentTypes": null, + "id": 1889, + "name": "manager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 717, + "src": "2586:7:17", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ModuleManager_$1100", + "typeString": "contract ModuleManager" + } + }, + "id": 1890, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "execTransactionFromModule", + "nodeType": "MemberAccess", + "referencedDeclaration": 927, + "src": "2586:33:17", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$returns$_t_bool_$", + "typeString": "function (address,uint256,bytes memory,enum Enum.Operation) external returns (bool)" + } }, - "id": 1562, + "id": 1897, "isConstant": false, "isLValue": false, "isPure": false, + "kind": "functionCall", "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1560, - "name": "functionIdentifier", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1556, - "src": "2546:18:10", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "id": 1561, - "name": "TRANSFER_FUNCTION_IDENTIFIER", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1421, - "src": "2568:28:10", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - "src": "2546:50:10", + "names": [], + "nodeType": "FunctionCall", + "src": "2586:70:17", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2043,21 +2040,21 @@ "typeString": "bool" } ], - "id": 1559, + "id": 1888, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "2538:7:10", + "referencedDeclaration": 2601, + "src": "2578:7:17", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1563, + "id": 1898, "isConstant": false, "isLValue": false, "isPure": false, @@ -2065,1016 +2062,230 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2538:59:10", + "src": "2578:79:17", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1564, + "id": 1899, "nodeType": "ExpressionStatement", - "src": "2538:59:10" + "src": "2578:79:17" } ] }, - "id": 1566, + "id": 1901, "nodeType": "IfStatement", - "src": "2070:538:10", + "src": "2340:328:17", "trueBody": { - "id": 1550, + "id": 1878, "nodeType": "Block", - "src": "2092:89:10", + "src": "2356:104:17", "statements": [ { "expression": { "argumentTypes": null, - "id": 1540, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1538, - "name": "token", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1526, - "src": "2106:5:10", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "30", - "id": 1539, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2114:1:10", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "2106:9:10", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 1541, - "nodeType": "ExpressionStatement", - "src": "2106:9:10" - }, - { - "expression": { - "argumentTypes": null, - "id": 1544, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1542, - "name": "receiver", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1529, - "src": "2129:8:10", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 1543, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1489, - "src": "2140:2:10", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "2129:13:10", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 1545, - "nodeType": "ExpressionStatement", - "src": "2129:13:10" - }, - { - "expression": { - "argumentTypes": null, - "id": 1548, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1546, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1532, - "src": "2156:6:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 1547, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1491, - "src": "2165:5:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2156:14:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1549, - "nodeType": "ExpressionStatement", - "src": "2156:14:10" - } - ] - } - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 1570, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1568, - "name": "receiver", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1529, - "src": "2625:8:10", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1569, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2637:1:10", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "2625:13:10", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1567, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 2399, - 2400 - ], - "referencedDeclaration": 2399, - "src": "2617:7:10", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1571, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2617:22:10", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1572, - "nodeType": "ExpressionStatement", - "src": "2617:22:10" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1576, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1574, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1532, - "src": "2657:6:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1575, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2666:1:10", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "2657:10:10", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1573, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 2399, - 2400 - ], - "referencedDeclaration": 2399, - "src": "2649:7:10", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1577, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2649:19:10", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1578, - "nodeType": "ExpressionStatement", - "src": "2649:19:10" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1581, - "name": "token", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1526, - "src": "2763:5:10", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 1582, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1532, - "src": "2770:6:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ + "arguments": [ { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1580, - "name": "isUnderLimit", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1680, - "src": "2750:12:10", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", - "typeString": "function (address,uint256) returns (bool)" - } - }, - "id": 1583, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2750:27:10", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1579, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 2399, - 2400 - ], - "referencedDeclaration": 2399, - "src": "2742:7:10", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1584, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2742:36:10", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1585, - "nodeType": "ExpressionStatement", - "src": "2742:36:10" - }, - { - "expression": { - "argumentTypes": null, - "id": 1591, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1586, - "name": "dailyLimits", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1425, - "src": "2788:11:10", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1432_storage_$", - "typeString": "mapping(address => struct DailyLimitModule.DailyLimit storage ref)" - } - }, - "id": 1588, - "indexExpression": { - "argumentTypes": null, - "id": 1587, - "name": "token", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1526, - "src": "2800:5:10", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2788:18:10", - "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1432_storage", - "typeString": "struct DailyLimitModule.DailyLimit storage ref" - } - }, - "id": 1589, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "spentToday", - "nodeType": "MemberAccess", - "referencedDeclaration": 1429, - "src": "2788:29:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "+=", - "rightHandSide": { - "argumentTypes": null, - "id": 1590, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1532, - "src": "2821:6:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2788:39:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1592, - "nodeType": "ExpressionStatement", - "src": "2788:39:10" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1596, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1489, - "src": "2879:2:10", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 1597, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1491, - "src": "2883:5:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 1598, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1493, - "src": "2890:4:10", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - { - "argumentTypes": null, - "expression": { "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1869, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1822, + "src": "2412:2:17", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1870, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1824, + "src": "2416:6:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "hexValue": "", + "id": 1871, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2424:2:17", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + }, + "value": "" + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1872, + "name": "Enum", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 30, + "src": "2428:4:17", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Enum_$30_$", + "typeString": "type(contract Enum)" + } + }, + "id": 1873, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "Operation", + "nodeType": "MemberAccess", + "referencedDeclaration": 29, + "src": "2428:14:17", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_Operation_$29_$", + "typeString": "type(enum Enum.Operation)" + } + }, + "id": 1874, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "Call", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2428:19:17", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + } + } + ], "expression": { - "argumentTypes": null, - "id": 1599, - "name": "Enum", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6, - "src": "2896:4:10", + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + }, + { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + } + ], + "expression": { + "argumentTypes": null, + "id": 1867, + "name": "manager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 717, + "src": "2378:7:17", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ModuleManager_$1100", + "typeString": "contract ModuleManager" + } + }, + "id": 1868, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "execTransactionFromModule", + "nodeType": "MemberAccess", + "referencedDeclaration": 927, + "src": "2378:33:17", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Enum_$6_$", - "typeString": "type(contract Enum)" + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$returns$_t_bool_$", + "typeString": "function (address,uint256,bytes memory,enum Enum.Operation) external returns (bool)" } }, - "id": 1600, + "id": 1875, "isConstant": false, "isLValue": false, "isPure": false, + "kind": "functionCall", "lValueRequested": false, - "memberName": "Operation", - "nodeType": "MemberAccess", - "referencedDeclaration": 5, - "src": "2896:14:10", + "names": [], + "nodeType": "FunctionCall", + "src": "2378:70:17", "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_Operation_$5_$", - "typeString": "type(enum Enum.Operation)" + "typeIdentifier": "t_bool", + "typeString": "bool" } - }, - "id": 1601, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberName": "Call", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "2896:19:10", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", - "typeString": "enum Enum.Operation" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_enum$_Operation_$5", - "typeString": "enum Enum.Operation" } ], "expression": { - "argumentTypes": null, - "id": 1594, - "name": "manager", + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1866, + "name": "require", "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 588, - "src": "2845:7:10", + "overloadedDeclarations": [ + 2601, + 2602 + ], + "referencedDeclaration": 2601, + "src": "2370:7:17", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$971", - "typeString": "contract ModuleManager" + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" } }, - "id": 1595, + "id": 1876, "isConstant": false, "isLValue": false, "isPure": false, + "kind": "functionCall", "lValueRequested": false, - "memberName": "execTransactionFromModule", - "nodeType": "MemberAccess", - "referencedDeclaration": 798, - "src": "2845:33:10", + "names": [], + "nodeType": "FunctionCall", + "src": "2370:79:17", "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$5_$returns$_t_bool_$", - "typeString": "function (address,uint256,bytes memory,enum Enum.Operation) external returns (bool)" + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" } }, - "id": 1602, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2845:71:10", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } + "id": 1877, + "nodeType": "ExpressionStatement", + "src": "2370:79:17" } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1593, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 2399, - 2400 - ], - "referencedDeclaration": 2399, - "src": "2837:7:10", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1603, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2837:80:10", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1604, - "nodeType": "ExpressionStatement", - "src": "2837:80:10" + ] + } } ] }, - "documentation": null, - "id": 1606, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "executeInternal", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1494, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1487, - "name": "sender", - "nodeType": "VariableDeclaration", - "scope": 1606, - "src": "1630:14:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1486, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1630:7:10", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1489, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 1606, - "src": "1646:10:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1488, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1646:7:10", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1491, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 1606, - "src": "1658:13:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1490, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1658:7:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1493, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 1606, - "src": "1673:10:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 1492, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "1673:5:10", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1629:55:10" - }, - "payable": false, - "returnParameters": { - "id": 1495, - "nodeType": "ParameterList", - "parameters": [], - "src": "1706:0:10" - }, - "scope": 1694, - "src": "1605:1319:10", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "internal" - }, - { - "body": { - "id": 1623, - "nodeType": "Block", - "src": "3393:61:10", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1616, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2396, - "src": "3419:3:10", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 1617, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "3419:10:10", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 1618, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1608, - "src": "3431:2:10", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 1619, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1610, - "src": "3435:5:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 1620, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1612, - "src": "3442:4:10", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 1615, - "name": "executeInternal", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1606, - "src": "3403:15:10", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$", - "typeString": "function (address,address,uint256,bytes memory)" - } - }, - "id": 1621, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3403:44:10", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1622, - "nodeType": "ExpressionStatement", - "src": "3403:44:10" - } - ] - }, - "documentation": "@dev Returns if Safe transaction is a valid daily limit transaction.\n @param to Receiver address in case of Ether transfer, token address in case of a token transfer.\n @param value Ether value in case of an Ether transfer.\n @param data Encoded token transfer. Empty in case of Ether transfer.\n @return Returns if transaction can be executed.", - "id": 1624, + "documentation": "@dev Returns if Safe transaction is a valid daily limit transaction.\n @param token Address of the token that should be transfered (0 for Ether)\n @param to Address to which the tokens should be transfered\n @param amount Amount of tokens (or Ether) that should be transfered\n @return Returns if transaction can be executed.", + "id": 1903, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -3082,16 +2293,16 @@ "name": "executeDailyLimit", "nodeType": "FunctionDefinition", "parameters": { - "id": 1613, + "id": 1825, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1608, - "name": "to", + "id": 1820, + "name": "token", "nodeType": "VariableDeclaration", - "scope": 1624, - "src": "3335:10:10", + "scope": 1903, + "src": "1917:13:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3099,10 +2310,10 @@ "typeString": "address" }, "typeName": { - "id": 1607, + "id": 1819, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3335:7:10", + "src": "1917:7:17", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3113,25 +2324,25 @@ }, { "constant": false, - "id": 1610, - "name": "value", + "id": 1822, + "name": "to", "nodeType": "VariableDeclaration", - "scope": 1624, - "src": "3347:13:10", + "scope": 1903, + "src": "1932:10:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address", + "typeString": "address" }, "typeName": { - "id": 1609, - "name": "uint256", + "id": 1821, + "name": "address", "nodeType": "ElementaryTypeName", - "src": "3347:7:10", + "src": "1932:7:17", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address", + "typeString": "address" } }, "value": null, @@ -3139,79 +2350,79 @@ }, { "constant": false, - "id": 1612, - "name": "data", + "id": 1824, + "name": "amount", "nodeType": "VariableDeclaration", - "scope": 1624, - "src": "3362:10:10", + "scope": 1903, + "src": "1944:14:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, "typeName": { - "id": 1611, - "name": "bytes", + "id": 1823, + "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3362:5:10", + "src": "1944:7:17", "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], - "src": "3334:39:10" + "src": "1916:43:17" }, "payable": false, "returnParameters": { - "id": 1614, + "id": 1826, "nodeType": "ParameterList", "parameters": [], - "src": "3393:0:10" + "src": "1979:0:17" }, - "scope": 1694, - "src": "3308:146:10", + "scope": 1973, + "src": "1890:784:17", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1679, + "id": 1958, "nodeType": "Block", - "src": "3557:391:10", + "src": "2777:391:17", "statements": [ { "assignments": [ - 1634 + 1913 ], "declarations": [ { "constant": false, - "id": 1634, + "id": 1913, "name": "dailyLimit", "nodeType": "VariableDeclaration", - "scope": 1680, - "src": "3567:29:10", + "scope": 1959, + "src": "2787:29:17", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1432_storage_ptr", + "typeIdentifier": "t_struct$_DailyLimit_$1765_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit" }, "typeName": { "contractScope": null, - "id": 1633, + "id": 1912, "name": "DailyLimit", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1432, - "src": "3567:10:10", + "referencedDeclaration": 1765, + "src": "2787:10:17", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1432_storage_ptr", + "typeIdentifier": "t_struct$_DailyLimit_$1765_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit" } }, @@ -3219,31 +2430,31 @@ "visibility": "internal" } ], - "id": 1638, + "id": 1917, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1635, + "id": 1914, "name": "dailyLimits", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1425, - "src": "3599:11:10", + "referencedDeclaration": 1758, + "src": "2819:11:17", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1432_storage_$", + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1765_storage_$", "typeString": "mapping(address => struct DailyLimitModule.DailyLimit storage ref)" } }, - "id": 1637, + "id": 1916, "indexExpression": { "argumentTypes": null, - "id": 1636, + "id": 1915, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1626, - "src": "3611:5:10", + "referencedDeclaration": 1905, + "src": "2831:5:17", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3254,14 +2465,14 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3599:18:10", + "src": "2819:18:17", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1432_storage", + "typeIdentifier": "t_struct$_DailyLimit_$1765_storage", "typeString": "struct DailyLimitModule.DailyLimit storage ref" } }, "nodeType": "VariableDeclarationStatement", - "src": "3567:50:10" + "src": "2787:50:17" }, { "condition": { @@ -3270,7 +2481,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1643, + "id": 1922, "isConstant": false, "isLValue": false, "isPure": false, @@ -3280,18 +2491,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 1639, + "id": 1918, "name": "today", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1693, - "src": "3631:5:10", + "referencedDeclaration": 1972, + "src": "2851:5:17", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, - "id": 1640, + "id": 1919, "isConstant": false, "isLValue": false, "isPure": false, @@ -3299,7 +2510,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3631:7:10", + "src": "2851:7:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3311,50 +2522,50 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1641, + "id": 1920, "name": "dailyLimit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1634, - "src": "3641:10:10", + "referencedDeclaration": 1913, + "src": "2861:10:17", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1432_storage_ptr", + "typeIdentifier": "t_struct$_DailyLimit_$1765_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit storage pointer" } }, - "id": 1642, + "id": 1921, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "lastDay", "nodeType": "MemberAccess", - "referencedDeclaration": 1431, - "src": "3641:18:10", + "referencedDeclaration": 1764, + "src": "2861:18:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3631:28:10", + "src": "2851:28:17", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 1658, + "id": 1937, "nodeType": "IfStatement", - "src": "3627:126:10", + "src": "2847:126:17", "trueBody": { - "id": 1657, + "id": 1936, "nodeType": "Block", - "src": "3661:92:10", + "src": "2881:92:17", "statements": [ { "expression": { "argumentTypes": null, - "id": 1649, + "id": 1928, "isConstant": false, "isLValue": false, "isPure": false, @@ -3363,26 +2574,26 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1644, + "id": 1923, "name": "dailyLimit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1634, - "src": "3675:10:10", + "referencedDeclaration": 1913, + "src": "2895:10:17", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1432_storage_ptr", + "typeIdentifier": "t_struct$_DailyLimit_$1765_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit storage pointer" } }, - "id": 1646, + "id": 1925, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "lastDay", "nodeType": "MemberAccess", - "referencedDeclaration": 1431, - "src": "3675:18:10", + "referencedDeclaration": 1764, + "src": "2895:18:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3395,18 +2606,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 1647, + "id": 1926, "name": "today", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1693, - "src": "3696:5:10", + "referencedDeclaration": 1972, + "src": "2916:5:17", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, - "id": 1648, + "id": 1927, "isConstant": false, "isLValue": false, "isPure": false, @@ -3414,26 +2625,26 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3696:7:10", + "src": "2916:7:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3675:28:10", + "src": "2895:28:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 1650, + "id": 1929, "nodeType": "ExpressionStatement", - "src": "3675:28:10" + "src": "2895:28:17" }, { "expression": { "argumentTypes": null, - "id": 1655, + "id": 1934, "isConstant": false, "isLValue": false, "isPure": false, @@ -3442,26 +2653,26 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1651, + "id": 1930, "name": "dailyLimit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1634, - "src": "3717:10:10", + "referencedDeclaration": 1913, + "src": "2937:10:17", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1432_storage_ptr", + "typeIdentifier": "t_struct$_DailyLimit_$1765_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit storage pointer" } }, - "id": 1653, + "id": 1932, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "spentToday", "nodeType": "MemberAccess", - "referencedDeclaration": 1429, - "src": "3717:21:10", + "referencedDeclaration": 1762, + "src": "2937:21:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3472,14 +2683,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "30", - "id": 1654, + "id": 1933, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3741:1:10", + "src": "2961:1:17", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -3487,15 +2698,15 @@ }, "value": "0" }, - "src": "3717:25:10", + "src": "2937:25:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 1656, + "id": 1935, "nodeType": "ExpressionStatement", - "src": "3717:25:10" + "src": "2937:25:17" } ] } @@ -3507,7 +2718,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 1673, + "id": 1952, "isConstant": false, "isLValue": false, "isPure": false, @@ -3518,7 +2729,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1665, + "id": 1944, "isConstant": false, "isLValue": false, "isPure": false, @@ -3529,7 +2740,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1662, + "id": 1941, "isConstant": false, "isLValue": false, "isPure": false, @@ -3538,26 +2749,26 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1659, + "id": 1938, "name": "dailyLimit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1634, - "src": "3769:10:10", + "referencedDeclaration": 1913, + "src": "2989:10:17", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1432_storage_ptr", + "typeIdentifier": "t_struct$_DailyLimit_$1765_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit storage pointer" } }, - "id": 1660, + "id": 1939, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "spentToday", "nodeType": "MemberAccess", - "referencedDeclaration": 1429, - "src": "3769:21:10", + "referencedDeclaration": 1762, + "src": "2989:21:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3567,18 +2778,18 @@ "operator": "+", "rightExpression": { "argumentTypes": null, - "id": 1661, + "id": 1940, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1628, - "src": "3793:6:10", + "referencedDeclaration": 1907, + "src": "3013:6:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3769:30:10", + "src": "2989:30:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3590,32 +2801,32 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1663, + "id": 1942, "name": "dailyLimit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1634, - "src": "3803:10:10", + "referencedDeclaration": 1913, + "src": "3023:10:17", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1432_storage_ptr", + "typeIdentifier": "t_struct$_DailyLimit_$1765_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit storage pointer" } }, - "id": 1664, + "id": 1943, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "dailyLimit", "nodeType": "MemberAccess", - "referencedDeclaration": 1427, - "src": "3803:21:10", + "referencedDeclaration": 1760, + "src": "3023:21:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3769:55:10", + "src": "2989:55:17", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3629,7 +2840,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1672, + "id": 1951, "isConstant": false, "isLValue": false, "isPure": false, @@ -3640,7 +2851,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1669, + "id": 1948, "isConstant": false, "isLValue": false, "isPure": false, @@ -3649,26 +2860,26 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1666, + "id": 1945, "name": "dailyLimit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1634, - "src": "3840:10:10", + "referencedDeclaration": 1913, + "src": "3060:10:17", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1432_storage_ptr", + "typeIdentifier": "t_struct$_DailyLimit_$1765_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit storage pointer" } }, - "id": 1667, + "id": 1946, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "spentToday", "nodeType": "MemberAccess", - "referencedDeclaration": 1429, - "src": "3840:21:10", + "referencedDeclaration": 1762, + "src": "3060:21:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3678,18 +2889,18 @@ "operator": "+", "rightExpression": { "argumentTypes": null, - "id": 1668, + "id": 1947, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1628, - "src": "3864:6:10", + "referencedDeclaration": 1907, + "src": "3084:6:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3840:30:10", + "src": "3060:30:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3701,59 +2912,59 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1670, + "id": 1949, "name": "dailyLimit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1634, - "src": "3873:10:10", + "referencedDeclaration": 1913, + "src": "3093:10:17", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1432_storage_ptr", + "typeIdentifier": "t_struct$_DailyLimit_$1765_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit storage pointer" } }, - "id": 1671, + "id": 1950, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "spentToday", "nodeType": "MemberAccess", - "referencedDeclaration": 1429, - "src": "3873:21:10", + "referencedDeclaration": 1762, + "src": "3093:21:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3840:54:10", + "src": "3060:54:17", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "3769:125:10", + "src": "2989:125:17", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 1676, + "id": 1955, "nodeType": "IfStatement", - "src": "3762:157:10", + "src": "2982:157:17", "trueBody": { "expression": { "argumentTypes": null, "hexValue": "74727565", - "id": 1674, + "id": 1953, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "3915:4:10", + "src": "3135:4:17", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -3761,24 +2972,24 @@ }, "value": "true" }, - "functionReturnParameters": 1632, - "id": 1675, + "functionReturnParameters": 1911, + "id": 1954, "nodeType": "Return", - "src": "3908:11:10" + "src": "3128:11:17" } }, { "expression": { "argumentTypes": null, "hexValue": "66616c7365", - "id": 1677, + "id": 1956, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "3936:5:10", + "src": "3156:5:17", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -3786,15 +2997,15 @@ }, "value": "false" }, - "functionReturnParameters": 1632, - "id": 1678, + "functionReturnParameters": 1911, + "id": 1957, "nodeType": "Return", - "src": "3929:12:10" + "src": "3149:12:17" } ] }, "documentation": null, - "id": 1680, + "id": 1959, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -3802,16 +3013,16 @@ "name": "isUnderLimit", "nodeType": "FunctionDefinition", "parameters": { - "id": 1629, + "id": 1908, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1626, + "id": 1905, "name": "token", "nodeType": "VariableDeclaration", - "scope": 1680, - "src": "3482:13:10", + "scope": 1959, + "src": "2702:13:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3819,10 +3030,10 @@ "typeString": "address" }, "typeName": { - "id": 1625, + "id": 1904, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3482:7:10", + "src": "2702:7:17", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3833,11 +3044,11 @@ }, { "constant": false, - "id": 1628, + "id": 1907, "name": "amount", "nodeType": "VariableDeclaration", - "scope": 1680, - "src": "3497:14:10", + "scope": 1959, + "src": "2717:14:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3845,10 +3056,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1627, + "id": 1906, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3497:7:10", + "src": "2717:7:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3858,20 +3069,20 @@ "visibility": "internal" } ], - "src": "3481:31:10" + "src": "2701:31:17" }, "payable": false, "returnParameters": { - "id": 1632, + "id": 1911, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1631, + "id": 1910, "name": "", "nodeType": "VariableDeclaration", - "scope": 1680, - "src": "3547:4:10", + "scope": 1959, + "src": "2767:4:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3879,10 +3090,10 @@ "typeString": "bool" }, "typeName": { - "id": 1630, + "id": 1909, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "3547:4:10", + "src": "2767:4:17", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3892,19 +3103,19 @@ "visibility": "internal" } ], - "src": "3546:6:10" + "src": "2766:6:17" }, - "scope": 1694, - "src": "3460:488:10", + "scope": 1973, + "src": "2680:488:17", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 1692, + "id": 1971, "nodeType": "Block", - "src": "4112:44:10", + "src": "3332:44:17", "statements": [ { "expression": { @@ -3913,19 +3124,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1690, + "id": 1969, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1685, + "id": 1964, "name": "now", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2398, - "src": "4129:3:10", + "referencedDeclaration": 2600, + "src": "3349:3:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3942,19 +3153,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1688, + "id": 1967, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1686, + "id": 1965, "name": "now", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2398, - "src": "4136:3:10", + "referencedDeclaration": 2600, + "src": "3356:3:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3965,14 +3176,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "31", - "id": 1687, + "id": 1966, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4142:6:10", + "src": "3362:6:17", "subdenomination": "days", "typeDescriptions": { "typeIdentifier": "t_rational_86400_by_1", @@ -3980,41 +3191,41 @@ }, "value": "1" }, - "src": "4136:12:10", + "src": "3356:12:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], - "id": 1689, + "id": 1968, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", - "src": "4135:14:10", + "src": "3355:14:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4129:20:10", + "src": "3349:20:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 1684, - "id": 1691, + "functionReturnParameters": 1963, + "id": 1970, "nodeType": "Return", - "src": "4122:27:10" + "src": "3342:27:17" } ] }, "documentation": "@dev Returns last midnight as Unix timestamp.\n @return Unix timestamp.", - "id": 1693, + "id": 1972, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -4022,23 +3233,23 @@ "name": "today", "nodeType": "FunctionDefinition", "parameters": { - "id": 1681, + "id": 1960, "nodeType": "ParameterList", "parameters": [], - "src": "4054:2:10" + "src": "3274:2:17" }, "payable": false, "returnParameters": { - "id": 1684, + "id": 1963, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1683, + "id": 1962, "name": "", "nodeType": "VariableDeclaration", - "scope": 1693, - "src": "4102:4:10", + "scope": 1972, + "src": "3322:4:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4046,10 +3257,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1682, + "id": 1961, "name": "uint", "nodeType": "ElementaryTypeName", - "src": "4102:4:10", + "src": "3322:4:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4059,82 +3270,82 @@ "visibility": "internal" } ], - "src": "4101:6:10" + "src": "3321:6:17" }, - "scope": 1694, - "src": "4040:116:10", + "scope": 1973, + "src": "3260:116:17", "stateMutability": "view", "superFunction": null, "visibility": "public" } ], - "scope": 1695, - "src": "296:3862:10" + "scope": 1974, + "src": "296:3082:17" } ], - "src": "0:4159:10" + "src": "0:3379:17" }, "legacyAST": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/modules/DailyLimitModule.sol", "exportedSymbols": { "DailyLimitModule": [ - 1694 + 1973 ] }, - "id": 1695, + "id": 1974, "nodeType": "SourceUnit", "nodes": [ { - "id": 1406, + "id": 1742, "literals": [ "solidity", "0.4", - ".23" + ".24" ], "nodeType": "PragmaDirective", - "src": "0:23:10" + "src": "0:23:17" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Module.sol", "file": "../Module.sol", - "id": 1407, + "id": 1743, "nodeType": "ImportDirective", - "scope": 1695, - "sourceUnit": 622, - "src": "24:23:10", + "scope": 1974, + "sourceUnit": 751, + "src": "24:23:17", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/ModuleManager.sol", "file": "../ModuleManager.sol", - "id": 1408, + "id": 1744, "nodeType": "ImportDirective", - "scope": 1695, - "sourceUnit": 972, - "src": "48:30:10", + "scope": 1974, + "sourceUnit": 1101, + "src": "48:30:17", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/OwnerManager.sol", "file": "../OwnerManager.sol", - "id": 1409, + "id": 1745, "nodeType": "ImportDirective", - "scope": 1695, - "sourceUnit": 1344, - "src": "79:29:10", + "scope": 1974, + "sourceUnit": 1473, + "src": "79:29:17", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Enum.sol", "file": "../Enum.sol", - "id": 1410, + "id": 1746, "nodeType": "ImportDirective", - "scope": 1695, - "sourceUnit": 7, - "src": "109:21:10", + "scope": 1974, + "sourceUnit": 31, + "src": "109:21:17", "symbolAliases": [], "unitAlias": "" }, @@ -4144,46 +3355,46 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 1411, + "id": 1747, "name": "Module", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 621, - "src": "325:6:10", + "referencedDeclaration": 750, + "src": "325:6:17", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$621", + "typeIdentifier": "t_contract$_Module_$750", "typeString": "contract Module" } }, - "id": 1412, + "id": 1748, "nodeType": "InheritanceSpecifier", - "src": "325:6:10" + "src": "325:6:17" } ], "contractDependencies": [ - 580, - 621, - 1359 + 652, + 750, + 1619 ], "contractKind": "contract", "documentation": "@title Daily Limit Module - Allows to transfer limited amounts of ERC20 tokens and Ether without confirmations.\n @author Stefan George - ", "fullyImplemented": true, - "id": 1694, + "id": 1973, "linearizedBaseContracts": [ - 1694, - 621, - 580, - 1359 + 1973, + 750, + 652, + 1619 ], "name": "DailyLimitModule", "nodeType": "ContractDefinition", "nodes": [ { "constant": true, - "id": 1415, + "id": 1751, "name": "NAME", "nodeType": "VariableDeclaration", - "scope": 1694, - "src": "339:50:10", + "scope": 1973, + "src": "339:50:17", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -4191,10 +3402,10 @@ "typeString": "string" }, "typeName": { - "id": 1413, + "id": 1749, "name": "string", "nodeType": "ElementaryTypeName", - "src": "339:6:10", + "src": "339:6:17", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -4203,14 +3414,14 @@ "value": { "argumentTypes": null, "hexValue": "4461696c79204c696d6974204d6f64756c65", - "id": 1414, + "id": 1750, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "369:20:10", + "src": "369:20:17", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_821ea27acfbc77b49f7a021dbe2eb92017d46b8bdda0bff9901cbc8ee143ceb3", @@ -4222,11 +3433,11 @@ }, { "constant": true, - "id": 1418, + "id": 1754, "name": "VERSION", "nodeType": "VariableDeclaration", - "scope": 1694, - "src": "395:40:10", + "scope": 1973, + "src": "395:40:17", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -4234,10 +3445,10 @@ "typeString": "string" }, "typeName": { - "id": 1416, + "id": 1752, "name": "string", "nodeType": "ElementaryTypeName", - "src": "395:6:10", + "src": "395:6:17", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -4246,14 +3457,14 @@ "value": { "argumentTypes": null, "hexValue": "302e302e31", - "id": 1417, + "id": 1753, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "428:7:10", + "src": "428:7:17", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_ae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc199163811885", @@ -4263,89 +3474,46 @@ }, "visibility": "public" }, - { - "constant": true, - "id": 1421, - "name": "TRANSFER_FUNCTION_IDENTIFIER", - "nodeType": "VariableDeclaration", - "scope": 1694, - "src": "441:67:10", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - }, - "typeName": { - "id": 1419, - "name": "bytes4", - "nodeType": "ElementaryTypeName", - "src": "441:6:10", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - "value": { - "argumentTypes": null, - "hexValue": "a9059cbb", - "id": 1420, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "495:13:10", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_abce0605a16ff5e998983a0af570b8ad942bb11e305eb20ae3ada0a3be24eb97", - "typeString": "literal_string (contains invalid UTF-8 sequence at position 0)" - }, - "value": null - }, - "visibility": "public" - }, { "constant": false, - "id": 1425, + "id": 1758, "name": "dailyLimits", "nodeType": "VariableDeclaration", - "scope": 1694, - "src": "586:50:10", + "scope": 1973, + "src": "513:50:17", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1432_storage_$", + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1765_storage_$", "typeString": "mapping(address => struct DailyLimitModule.DailyLimit)" }, "typeName": { - "id": 1424, + "id": 1757, "keyType": { - "id": 1422, + "id": 1755, "name": "address", "nodeType": "ElementaryTypeName", - "src": "595:7:10", + "src": "522:7:17", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", - "src": "586:31:10", + "src": "513:31:17", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1432_storage_$", + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1765_storage_$", "typeString": "mapping(address => struct DailyLimitModule.DailyLimit)" }, "valueType": { "contractScope": null, - "id": 1423, + "id": 1756, "name": "DailyLimit", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1432, - "src": "606:10:10", + "referencedDeclaration": 1765, + "src": "533:10:17", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1432_storage_ptr", + "typeIdentifier": "t_struct$_DailyLimit_$1765_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit" } } @@ -4355,15 +3523,15 @@ }, { "canonicalName": "DailyLimitModule.DailyLimit", - "id": 1432, + "id": 1765, "members": [ { "constant": false, - "id": 1427, + "id": 1760, "name": "dailyLimit", "nodeType": "VariableDeclaration", - "scope": 1432, - "src": "671:18:10", + "scope": 1765, + "src": "598:18:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4371,10 +3539,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1426, + "id": 1759, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "671:7:10", + "src": "598:7:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4385,11 +3553,11 @@ }, { "constant": false, - "id": 1429, + "id": 1762, "name": "spentToday", "nodeType": "VariableDeclaration", - "scope": 1432, - "src": "699:18:10", + "scope": 1765, + "src": "626:18:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4397,10 +3565,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1428, + "id": 1761, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "699:7:10", + "src": "626:7:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4411,11 +3579,11 @@ }, { "constant": false, - "id": 1431, + "id": 1764, "name": "lastDay", "nodeType": "VariableDeclaration", - "scope": 1432, - "src": "727:15:10", + "scope": 1765, + "src": "654:15:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4423,10 +3591,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1430, + "id": 1763, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "727:7:10", + "src": "654:7:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4438,15 +3606,15 @@ ], "name": "DailyLimit", "nodeType": "StructDefinition", - "scope": 1694, - "src": "643:106:10", + "scope": 1973, + "src": "570:106:17", "visibility": "public" }, { "body": { - "id": 1467, + "id": 1800, "nodeType": "Block", - "src": "1067:146:10", + "src": "994:146:17", "statements": [ { "expression": { @@ -4454,18 +3622,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 1441, + "id": 1774, "name": "setManager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 620, - "src": "1077:10:10", + "referencedDeclaration": 749, + "src": "1004:10:17", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()" } }, - "id": 1442, + "id": 1775, "isConstant": false, "isLValue": false, "isPure": false, @@ -4473,21 +3641,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1077:12:10", + "src": "1004:12:17", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1443, + "id": 1776, "nodeType": "ExpressionStatement", - "src": "1077:12:10" + "src": "1004:12:17" }, { "body": { "expression": { "argumentTypes": null, - "id": 1464, + "id": 1797, "isConstant": false, "isLValue": false, "isPure": false, @@ -4498,42 +3666,42 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1455, + "id": 1788, "name": "dailyLimits", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1425, - "src": "1155:11:10", + "referencedDeclaration": 1758, + "src": "1082:11:17", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1432_storage_$", + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1765_storage_$", "typeString": "mapping(address => struct DailyLimitModule.DailyLimit storage ref)" } }, - "id": 1459, + "id": 1792, "indexExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1456, + "id": 1789, "name": "tokens", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1435, - "src": "1167:6:10", + "referencedDeclaration": 1768, + "src": "1094:6:17", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 1458, + "id": 1791, "indexExpression": { "argumentTypes": null, - "id": 1457, + "id": 1790, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1445, - "src": "1174:1:10", + "referencedDeclaration": 1778, + "src": "1101:1:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4544,7 +3712,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1167:9:10", + "src": "1094:9:17", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4555,21 +3723,21 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1155:22:10", + "src": "1082:22:17", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1432_storage", + "typeIdentifier": "t_struct$_DailyLimit_$1765_storage", "typeString": "struct DailyLimitModule.DailyLimit storage ref" } }, - "id": 1460, + "id": 1793, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "dailyLimit", "nodeType": "MemberAccess", - "referencedDeclaration": 1427, - "src": "1155:33:10", + "referencedDeclaration": 1760, + "src": "1082:33:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4581,26 +3749,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1461, + "id": 1794, "name": "_dailyLimits", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1438, - "src": "1191:12:10", + "referencedDeclaration": 1771, + "src": "1118:12:17", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[] memory" } }, - "id": 1463, + "id": 1796, "indexExpression": { "argumentTypes": null, - "id": 1462, + "id": 1795, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1445, - "src": "1204:1:10", + "referencedDeclaration": 1778, + "src": "1131:1:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4611,21 +3779,21 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1191:15:10", + "src": "1118:15:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1155:51:10", + "src": "1082:51:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 1465, + "id": 1798, "nodeType": "ExpressionStatement", - "src": "1155:51:10" + "src": "1082:51:17" }, "condition": { "argumentTypes": null, @@ -4633,19 +3801,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1451, + "id": 1784, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1448, + "id": 1781, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1445, - "src": "1119:1:10", + "referencedDeclaration": 1778, + "src": "1046:1:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4657,18 +3825,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1449, + "id": 1782, "name": "tokens", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1435, - "src": "1123:6:10", + "referencedDeclaration": 1768, + "src": "1050:6:17", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 1450, + "id": 1783, "isConstant": false, "isLValue": false, "isPure": false, @@ -4676,31 +3844,31 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1123:13:10", + "src": "1050:13:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1119:17:10", + "src": "1046:17:17", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 1466, + "id": 1799, "initializationExpression": { "assignments": [ - 1445 + 1778 ], "declarations": [ { "constant": false, - "id": 1445, + "id": 1778, "name": "i", "nodeType": "VariableDeclaration", - "scope": 1468, - "src": "1104:9:10", + "scope": 1801, + "src": "1031:9:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4708,10 +3876,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1444, + "id": 1777, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1104:7:10", + "src": "1031:7:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4721,18 +3889,18 @@ "visibility": "internal" } ], - "id": 1447, + "id": 1780, "initialValue": { "argumentTypes": null, "hexValue": "30", - "id": 1446, + "id": 1779, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1116:1:10", + "src": "1043:1:17", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -4741,12 +3909,12 @@ "value": "0" }, "nodeType": "VariableDeclarationStatement", - "src": "1104:13:10" + "src": "1031:13:17" }, "loopExpression": { "expression": { "argumentTypes": null, - "id": 1453, + "id": 1786, "isConstant": false, "isLValue": false, "isPure": false, @@ -4754,15 +3922,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "1138:3:10", + "src": "1065:3:17", "subExpression": { "argumentTypes": null, - "id": 1452, + "id": 1785, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1445, - "src": "1138:1:10", + "referencedDeclaration": 1778, + "src": "1065:1:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4773,17 +3941,17 @@ "typeString": "uint256" } }, - "id": 1454, + "id": 1787, "nodeType": "ExpressionStatement", - "src": "1138:3:10" + "src": "1065:3:17" }, "nodeType": "ForStatement", - "src": "1099:107:10" + "src": "1026:107:17" } ] }, "documentation": "@dev Setup function sets initial storage of contract.\n @param tokens List of token addresses. Ether is represented with address 0x0.\n @param _dailyLimits List of daily limits in smalles units (e.g. Wei for Ether).", - "id": 1468, + "id": 1801, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -4791,16 +3959,16 @@ "name": "setup", "nodeType": "FunctionDefinition", "parameters": { - "id": 1439, + "id": 1772, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1435, + "id": 1768, "name": "tokens", "nodeType": "VariableDeclaration", - "scope": 1468, - "src": "1006:16:10", + "scope": 1801, + "src": "933:16:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4809,19 +3977,19 @@ }, "typeName": { "baseType": { - "id": 1433, + "id": 1766, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1006:7:10", + "src": "933:7:17", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1434, + "id": 1767, "length": null, "nodeType": "ArrayTypeName", - "src": "1006:9:10", + "src": "933:9:17", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" @@ -4832,11 +4000,11 @@ }, { "constant": false, - "id": 1438, + "id": 1771, "name": "_dailyLimits", "nodeType": "VariableDeclaration", - "scope": 1468, - "src": "1024:22:10", + "scope": 1801, + "src": "951:22:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4845,19 +4013,19 @@ }, "typeName": { "baseType": { - "id": 1436, + "id": 1769, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1024:7:10", + "src": "951:7:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 1437, + "id": 1770, "length": null, "nodeType": "ArrayTypeName", - "src": "1024:9:10", + "src": "951:9:17", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", "typeString": "uint256[]" @@ -4867,31 +4035,31 @@ "visibility": "internal" } ], - "src": "1005:42:10" + "src": "932:42:17" }, "payable": false, "returnParameters": { - "id": 1440, + "id": 1773, "nodeType": "ParameterList", "parameters": [], - "src": "1067:0:10" + "src": "994:0:17" }, - "scope": 1694, - "src": "991:222:10", + "scope": 1973, + "src": "918:222:17", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1484, + "id": 1817, "nodeType": "Block", - "src": "1540:59:10", + "src": "1467:59:17", "statements": [ { "expression": { "argumentTypes": null, - "id": 1482, + "id": 1815, "isConstant": false, "isLValue": false, "isPure": false, @@ -4902,26 +4070,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1477, + "id": 1810, "name": "dailyLimits", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1425, - "src": "1550:11:10", + "referencedDeclaration": 1758, + "src": "1477:11:17", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1432_storage_$", + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1765_storage_$", "typeString": "mapping(address => struct DailyLimitModule.DailyLimit storage ref)" } }, - "id": 1479, + "id": 1812, "indexExpression": { "argumentTypes": null, - "id": 1478, + "id": 1811, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1470, - "src": "1562:5:10", + "referencedDeclaration": 1803, + "src": "1489:5:17", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4932,21 +4100,21 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1550:18:10", + "src": "1477:18:17", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1432_storage", + "typeIdentifier": "t_struct$_DailyLimit_$1765_storage", "typeString": "struct DailyLimitModule.DailyLimit storage ref" } }, - "id": 1480, + "id": 1813, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "dailyLimit", "nodeType": "MemberAccess", - "referencedDeclaration": 1427, - "src": "1550:29:10", + "referencedDeclaration": 1760, + "src": "1477:29:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4956,68 +4124,68 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1481, + "id": 1814, "name": "dailyLimit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1472, - "src": "1582:10:10", + "referencedDeclaration": 1805, + "src": "1509:10:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1550:42:10", + "src": "1477:42:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 1483, + "id": 1816, "nodeType": "ExpressionStatement", - "src": "1550:42:10" + "src": "1477:42:17" } ] }, "documentation": "@dev Allows to update the daily limit for a specified token. This can only be done via a Safe transaction.\n @param token Token contract address.\n @param dailyLimit Daily limit in smallest token unit.", - "id": 1485, + "id": 1818, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 1475, + "id": 1808, "modifierName": { "argumentTypes": null, - "id": 1474, + "id": 1807, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 601, - "src": "1525:10:10", + "referencedDeclaration": 730, + "src": "1452:10:17", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "1525:10:10" + "src": "1452:10:17" } ], "name": "changeDailyLimit", "nodeType": "FunctionDefinition", "parameters": { - "id": 1473, + "id": 1806, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1470, + "id": 1803, "name": "token", "nodeType": "VariableDeclaration", - "scope": 1485, - "src": "1467:13:10", + "scope": 1818, + "src": "1394:13:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5025,10 +4193,10 @@ "typeString": "address" }, "typeName": { - "id": 1469, + "id": 1802, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1467:7:10", + "src": "1394:7:17", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5039,11 +4207,11 @@ }, { "constant": false, - "id": 1472, + "id": 1805, "name": "dailyLimit", "nodeType": "VariableDeclaration", - "scope": 1485, - "src": "1482:18:10", + "scope": 1818, + "src": "1409:18:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5051,10 +4219,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1471, + "id": 1804, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1482:7:10", + "src": "1409:7:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5064,26 +4232,26 @@ "visibility": "internal" } ], - "src": "1466:35:10" + "src": "1393:35:17" }, "payable": false, "returnParameters": { - "id": 1476, + "id": 1809, "nodeType": "ParameterList", "parameters": [], - "src": "1540:0:10" + "src": "1467:0:17" }, - "scope": 1694, - "src": "1441:158:10", + "scope": 1973, + "src": "1368:158:17", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1605, + "id": 1902, "nodeType": "Block", - "src": "1706:1218:10", + "src": "1979:695:17", "statements": [ { "expression": { @@ -5094,12 +4262,28 @@ "arguments": [ { "argumentTypes": null, - "id": 1501, - "name": "sender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1487, - "src": "1831:6:10", + "expression": { + "argumentTypes": null, + "id": 1832, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2598, + "src": "2104:3:17", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1833, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2104:10:17", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5118,14 +4302,14 @@ "arguments": [ { "argumentTypes": null, - "id": 1498, + "id": 1829, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 588, - "src": "1814:7:10", + "referencedDeclaration": 717, + "src": "2087:7:17", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$971", + "typeIdentifier": "t_contract$_ModuleManager_$1100", "typeString": "contract ModuleManager" } } @@ -5133,22 +4317,22 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_ModuleManager_$971", + "typeIdentifier": "t_contract$_ModuleManager_$1100", "typeString": "contract ModuleManager" } ], - "id": 1497, + "id": 1828, "name": "OwnerManager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1343, - "src": "1801:12:10", + "referencedDeclaration": 1472, + "src": "2074:12:17", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_OwnerManager_$1343_$", + "typeIdentifier": "t_type$_t_contract$_OwnerManager_$1472_$", "typeString": "type(contract OwnerManager)" } }, - "id": 1499, + "id": 1830, "isConstant": false, "isLValue": false, "isPure": false, @@ -5156,27 +4340,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1801:21:10", + "src": "2074:21:17", "typeDescriptions": { - "typeIdentifier": "t_contract$_OwnerManager_$1343", + "typeIdentifier": "t_contract$_OwnerManager_$1472", "typeString": "contract OwnerManager" } }, - "id": 1500, + "id": 1831, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "isOwner", "nodeType": "MemberAccess", - "referencedDeclaration": 1293, - "src": "1801:29:10", + "referencedDeclaration": 1422, + "src": "2074:29:17", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view external returns (bool)" } }, - "id": 1502, + "id": 1834, "isConstant": false, "isLValue": false, "isPure": false, @@ -5184,7 +4368,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1801:37:10", + "src": "2074:41:17", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5198,21 +4382,21 @@ "typeString": "bool" } ], - "id": 1496, + "id": 1827, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "1793:7:10", + "referencedDeclaration": 2601, + "src": "2066:7:17", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1503, + "id": 1835, "isConstant": false, "isLValue": false, "isPure": false, @@ -5220,15 +4404,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1793:46:10", + "src": "2066:50:17", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1504, + "id": 1836, "nodeType": "ExpressionStatement", - "src": "1793:46:10" + "src": "2066:50:17" }, { "expression": { @@ -5237,287 +4421,48 @@ { "argumentTypes": null, "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_address", + "typeString": "address" }, - "id": 1522, + "id": 1840, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 1513, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1509, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1506, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1493, - "src": "1924:4:10", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - "id": 1507, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "1924:11:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1508, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1939:1:10", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "1924:16:10", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "&&", - "rightExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1512, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1510, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1491, - "src": "1944:5:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1511, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1952:1:10", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "1944:9:10", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "1924:29:10", + "id": 1838, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1822, + "src": "2134:2:17", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_address", + "typeString": "address" } }, "nodeType": "BinaryOperation", - "operator": "||", + "operator": "!=", "rightExpression": { "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 1521, + "hexValue": "30", + "id": 1839, "isConstant": false, "isLValue": false, - "isPure": false, + "isPure": true, + "kind": "number", "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1517, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1514, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1493, - "src": "1957:4:10", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - "id": 1515, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "1957:11:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1516, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1971:1:10", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "1957:15:10", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "&&", - "rightExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1520, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1518, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1491, - "src": "1976:5:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1519, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1985:1:10", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "1976:10:10", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "1957:29:10", + "nodeType": "Literal", + "src": "2140:1:17", + "subdenomination": null, "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" }, - "src": "1924:62:10", + "src": "2134:7:17", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5531,21 +4476,21 @@ "typeString": "bool" } ], - "id": 1505, + "id": 1837, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "1916:7:10", + "referencedDeclaration": 2601, + "src": "2126:7:17", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1523, + "id": 1841, "isConstant": false, "isLValue": false, "isPure": false, @@ -5553,160 +4498,332 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1916:71:10", + "src": "2126:16:17", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1524, + "id": 1842, "nodeType": "ExpressionStatement", - "src": "1916:71:10" + "src": "2126:16:17" }, { - "assignments": [], - "declarations": [ - { - "constant": false, - "id": 1526, - "name": "token", - "nodeType": "VariableDeclaration", - "scope": 1606, - "src": "1997:13:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1525, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1997:7:10", + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1846, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1844, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1824, + "src": "2160:6:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1845, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2169:1:17", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2160:10:17", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1843, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2601, + 2602 + ], + "referencedDeclaration": 2601, + "src": "2152:7:17", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1847, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2152:19:17", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1848, + "nodeType": "ExpressionStatement", + "src": "2152:19:17" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1851, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1820, + "src": "2266:5:17", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1852, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1824, + "src": "2273:6:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1850, + "name": "isUnderLimit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1959, + "src": "2253:12:17", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) returns (bool)" + } + }, + "id": 1853, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2253:27:17", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1849, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2601, + 2602 + ], + "referencedDeclaration": 2601, + "src": "2245:7:17", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1854, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2245:36:17", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1855, + "nodeType": "ExpressionStatement", + "src": "2245:36:17" + }, + { + "expression": { + "argumentTypes": null, + "id": 1861, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1856, + "name": "dailyLimits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1758, + "src": "2291:11:17", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1765_storage_$", + "typeString": "mapping(address => struct DailyLimitModule.DailyLimit storage ref)" + } + }, + "id": 1858, + "indexExpression": { + "argumentTypes": null, + "id": 1857, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1820, + "src": "2303:5:17", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2291:18:17", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DailyLimit_$1765_storage", + "typeString": "struct DailyLimitModule.DailyLimit storage ref" } }, - "value": null, - "visibility": "internal" - } - ], - "id": 1527, - "initialValue": null, - "nodeType": "VariableDeclarationStatement", - "src": "1997:13:10" - }, - { - "assignments": [], - "declarations": [ - { - "constant": false, - "id": 1529, - "name": "receiver", - "nodeType": "VariableDeclaration", - "scope": 1606, - "src": "2020:16:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1528, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2020:7:10", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1530, - "initialValue": null, - "nodeType": "VariableDeclarationStatement", - "src": "2020:16:10" - }, - { - "assignments": [], - "declarations": [ - { - "constant": false, - "id": 1532, - "name": "amount", - "nodeType": "VariableDeclaration", - "scope": 1606, - "src": "2046:14:10", - "stateVariable": false, - "storageLocation": "default", + "id": 1859, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "spentToday", + "nodeType": "MemberAccess", + "referencedDeclaration": 1762, + "src": "2291:29:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" - }, - "typeName": { - "id": 1531, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2046:7:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "argumentTypes": null, + "id": 1860, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1824, + "src": "2324:6:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2291:39:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } - ], - "id": 1533, - "initialValue": null, - "nodeType": "VariableDeclarationStatement", - "src": "2046:14:10" + }, + "id": 1862, + "nodeType": "ExpressionStatement", + "src": "2291:39:17" }, { "condition": { "argumentTypes": null, "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address", + "typeString": "address" }, - "id": 1537, + "id": 1865, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1534, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1493, - "src": "2074:4:10", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - "id": 1535, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "2074:11:10", + "id": 1863, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1820, + "src": "2344:5:17", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address", + "typeString": "address" } }, "nodeType": "BinaryOperation", @@ -5714,14 +4831,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1536, + "id": 1864, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2089:1:10", + "src": "2353:1:17", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -5729,159 +4846,156 @@ }, "value": "0" }, - "src": "2074:16:10", + "src": "2344:10:17", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": { - "id": 1565, + "id": 1900, "nodeType": "Block", - "src": "2195:413:10", + "src": "2466:202:17", "statements": [ { - "expression": { - "argumentTypes": null, - "id": 1553, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1551, - "name": "token", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1526, - "src": "2209:5:10", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 1552, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1489, - "src": "2217:2:10", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "2209:10:10", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 1554, - "nodeType": "ExpressionStatement", - "src": "2209:10:10" - }, - { - "assignments": [], + "assignments": [ + 1880 + ], "declarations": [ { "constant": false, - "id": 1556, - "name": "functionIdentifier", + "id": 1880, + "name": "data", "nodeType": "VariableDeclaration", - "scope": 1606, - "src": "2233:25:10", + "scope": 1903, + "src": "2480:17:17", "stateVariable": false, - "storageLocation": "default", + "storageLocation": "memory", "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" }, "typeName": { - "id": 1555, - "name": "bytes4", + "id": 1879, + "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "2233:6:10", + "src": "2480:5:17", "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" } }, "value": null, "visibility": "internal" } ], - "id": 1557, - "initialValue": null, - "nodeType": "VariableDeclarationStatement", - "src": "2233:25:10" - }, - { - "externalReferences": [ - { - "functionIdentifier": { - "declaration": 1556, - "isOffset": false, - "isSlot": false, - "src": "2367:18:10", - "valueSize": 1 + "id": 1887, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "7472616e7366657228616464726573732c75696e7432353629", + "id": 1883, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2524:27:17", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_a9059cbb2ab09eb219583f4a59a5d0623ade346d962bcd4e46b11da047c9049b", + "typeString": "literal_string \"transfer(address,uint256)\"" + }, + "value": "transfer(address,uint256)" + }, + { + "argumentTypes": null, + "id": 1884, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1822, + "src": "2553:2:17", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1885, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1824, + "src": "2557:6:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_a9059cbb2ab09eb219583f4a59a5d0623ade346d962bcd4e46b11da047c9049b", + "typeString": "literal_string \"transfer(address,uint256)\"" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 1881, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2585, + "src": "2500:3:17", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 1882, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodeWithSignature", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2500:23:17", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (string memory) pure returns (bytes memory)" } }, - { - "data": { - "declaration": 1493, - "isOffset": false, - "isSlot": false, - "src": "2399:4:10", - "valueSize": 1 - } - }, - { - "receiver": { - "declaration": 1529, - "isOffset": false, - "isSlot": false, - "src": "2428:8:10", - "valueSize": 1 - } - }, - { - "amount": { - "declaration": 1532, - "isOffset": false, - "isSlot": false, - "src": "2479:6:10", - "valueSize": 1 - } - }, - { - "data": { - "declaration": 1493, - "isOffset": false, - "isSlot": false, - "src": "2450:4:10", - "valueSize": 1 - } - }, - { - "data": { - "declaration": 1493, - "isOffset": false, - "isSlot": false, - "src": "2499:4:10", - "valueSize": 1 - } + "id": 1886, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2500:64:17", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" } - ], - "id": 1558, - "nodeType": "InlineAssembly", - "operations": "{\n functionIdentifier := mload(add(data, 0x20))\n receiver := mload(add(data, 0x24))\n amount := mload(add(data, 0x44))\n}", - "src": "2340:205:10" + }, + "nodeType": "VariableDeclarationStatement", + "src": "2480:84:17" }, { "expression": { @@ -5889,44 +5003,152 @@ "arguments": [ { "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" + "arguments": [ + { + "argumentTypes": null, + "id": 1891, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1820, + "src": "2620:5:17", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "hexValue": "30", + "id": 1892, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2627:1:17", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "argumentTypes": null, + "id": 1893, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1880, + "src": "2630:4:17", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1894, + "name": "Enum", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 30, + "src": "2636:4:17", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Enum_$30_$", + "typeString": "type(contract Enum)" + } + }, + "id": 1895, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "Operation", + "nodeType": "MemberAccess", + "referencedDeclaration": 29, + "src": "2636:14:17", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_Operation_$29_$", + "typeString": "type(enum Enum.Operation)" + } + }, + "id": 1896, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "Call", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2636:19:17", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + } + ], + "expression": { + "argumentTypes": null, + "id": 1889, + "name": "manager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 717, + "src": "2586:7:17", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ModuleManager_$1100", + "typeString": "contract ModuleManager" + } + }, + "id": 1890, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "execTransactionFromModule", + "nodeType": "MemberAccess", + "referencedDeclaration": 927, + "src": "2586:33:17", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$returns$_t_bool_$", + "typeString": "function (address,uint256,bytes memory,enum Enum.Operation) external returns (bool)" + } }, - "id": 1562, + "id": 1897, "isConstant": false, "isLValue": false, "isPure": false, + "kind": "functionCall", "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1560, - "name": "functionIdentifier", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1556, - "src": "2546:18:10", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "id": 1561, - "name": "TRANSFER_FUNCTION_IDENTIFIER", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1421, - "src": "2568:28:10", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - "src": "2546:50:10", + "names": [], + "nodeType": "FunctionCall", + "src": "2586:70:17", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5940,21 +5162,21 @@ "typeString": "bool" } ], - "id": 1559, + "id": 1888, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "2538:7:10", + "referencedDeclaration": 2601, + "src": "2578:7:17", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1563, + "id": 1898, "isConstant": false, "isLValue": false, "isPure": false, @@ -5962,1016 +5184,230 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2538:59:10", + "src": "2578:79:17", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1564, + "id": 1899, "nodeType": "ExpressionStatement", - "src": "2538:59:10" + "src": "2578:79:17" } ] }, - "id": 1566, + "id": 1901, "nodeType": "IfStatement", - "src": "2070:538:10", + "src": "2340:328:17", "trueBody": { - "id": 1550, + "id": 1878, "nodeType": "Block", - "src": "2092:89:10", + "src": "2356:104:17", "statements": [ { "expression": { "argumentTypes": null, - "id": 1540, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1538, - "name": "token", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1526, - "src": "2106:5:10", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "30", - "id": 1539, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2114:1:10", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "2106:9:10", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 1541, - "nodeType": "ExpressionStatement", - "src": "2106:9:10" - }, - { - "expression": { - "argumentTypes": null, - "id": 1544, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1542, - "name": "receiver", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1529, - "src": "2129:8:10", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 1543, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1489, - "src": "2140:2:10", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "2129:13:10", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 1545, - "nodeType": "ExpressionStatement", - "src": "2129:13:10" - }, - { - "expression": { - "argumentTypes": null, - "id": 1548, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1546, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1532, - "src": "2156:6:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 1547, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1491, - "src": "2165:5:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2156:14:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1549, - "nodeType": "ExpressionStatement", - "src": "2156:14:10" - } - ] - } - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 1570, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1568, - "name": "receiver", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1529, - "src": "2625:8:10", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1569, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2637:1:10", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "2625:13:10", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1567, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 2399, - 2400 - ], - "referencedDeclaration": 2399, - "src": "2617:7:10", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1571, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2617:22:10", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1572, - "nodeType": "ExpressionStatement", - "src": "2617:22:10" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1576, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1574, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1532, - "src": "2657:6:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1575, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2666:1:10", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "2657:10:10", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1573, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 2399, - 2400 - ], - "referencedDeclaration": 2399, - "src": "2649:7:10", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1577, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2649:19:10", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1578, - "nodeType": "ExpressionStatement", - "src": "2649:19:10" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1581, - "name": "token", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1526, - "src": "2763:5:10", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 1582, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1532, - "src": "2770:6:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ + "arguments": [ { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1580, - "name": "isUnderLimit", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1680, - "src": "2750:12:10", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", - "typeString": "function (address,uint256) returns (bool)" - } - }, - "id": 1583, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2750:27:10", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1579, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 2399, - 2400 - ], - "referencedDeclaration": 2399, - "src": "2742:7:10", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1584, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2742:36:10", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1585, - "nodeType": "ExpressionStatement", - "src": "2742:36:10" - }, - { - "expression": { - "argumentTypes": null, - "id": 1591, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1586, - "name": "dailyLimits", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1425, - "src": "2788:11:10", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1432_storage_$", - "typeString": "mapping(address => struct DailyLimitModule.DailyLimit storage ref)" - } - }, - "id": 1588, - "indexExpression": { - "argumentTypes": null, - "id": 1587, - "name": "token", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1526, - "src": "2800:5:10", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2788:18:10", - "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1432_storage", - "typeString": "struct DailyLimitModule.DailyLimit storage ref" - } - }, - "id": 1589, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "spentToday", - "nodeType": "MemberAccess", - "referencedDeclaration": 1429, - "src": "2788:29:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "+=", - "rightHandSide": { - "argumentTypes": null, - "id": 1590, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1532, - "src": "2821:6:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2788:39:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1592, - "nodeType": "ExpressionStatement", - "src": "2788:39:10" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1596, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1489, - "src": "2879:2:10", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 1597, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1491, - "src": "2883:5:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 1598, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1493, - "src": "2890:4:10", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - { - "argumentTypes": null, - "expression": { "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1869, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1822, + "src": "2412:2:17", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1870, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1824, + "src": "2416:6:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "hexValue": "", + "id": 1871, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2424:2:17", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + }, + "value": "" + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1872, + "name": "Enum", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 30, + "src": "2428:4:17", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Enum_$30_$", + "typeString": "type(contract Enum)" + } + }, + "id": 1873, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "Operation", + "nodeType": "MemberAccess", + "referencedDeclaration": 29, + "src": "2428:14:17", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_Operation_$29_$", + "typeString": "type(enum Enum.Operation)" + } + }, + "id": 1874, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "Call", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2428:19:17", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + } + } + ], "expression": { - "argumentTypes": null, - "id": 1599, - "name": "Enum", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6, - "src": "2896:4:10", + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + }, + { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + } + ], + "expression": { + "argumentTypes": null, + "id": 1867, + "name": "manager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 717, + "src": "2378:7:17", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ModuleManager_$1100", + "typeString": "contract ModuleManager" + } + }, + "id": 1868, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "execTransactionFromModule", + "nodeType": "MemberAccess", + "referencedDeclaration": 927, + "src": "2378:33:17", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Enum_$6_$", - "typeString": "type(contract Enum)" + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$returns$_t_bool_$", + "typeString": "function (address,uint256,bytes memory,enum Enum.Operation) external returns (bool)" } }, - "id": 1600, + "id": 1875, "isConstant": false, "isLValue": false, "isPure": false, + "kind": "functionCall", "lValueRequested": false, - "memberName": "Operation", - "nodeType": "MemberAccess", - "referencedDeclaration": 5, - "src": "2896:14:10", + "names": [], + "nodeType": "FunctionCall", + "src": "2378:70:17", "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_Operation_$5_$", - "typeString": "type(enum Enum.Operation)" + "typeIdentifier": "t_bool", + "typeString": "bool" } - }, - "id": 1601, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberName": "Call", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "2896:19:10", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", - "typeString": "enum Enum.Operation" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_enum$_Operation_$5", - "typeString": "enum Enum.Operation" } ], "expression": { - "argumentTypes": null, - "id": 1594, - "name": "manager", + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1866, + "name": "require", "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 588, - "src": "2845:7:10", + "overloadedDeclarations": [ + 2601, + 2602 + ], + "referencedDeclaration": 2601, + "src": "2370:7:17", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$971", - "typeString": "contract ModuleManager" + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" } }, - "id": 1595, + "id": 1876, "isConstant": false, "isLValue": false, "isPure": false, + "kind": "functionCall", "lValueRequested": false, - "memberName": "execTransactionFromModule", - "nodeType": "MemberAccess", - "referencedDeclaration": 798, - "src": "2845:33:10", + "names": [], + "nodeType": "FunctionCall", + "src": "2370:79:17", "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$5_$returns$_t_bool_$", - "typeString": "function (address,uint256,bytes memory,enum Enum.Operation) external returns (bool)" + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" } }, - "id": 1602, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2845:71:10", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } + "id": 1877, + "nodeType": "ExpressionStatement", + "src": "2370:79:17" } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1593, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 2399, - 2400 - ], - "referencedDeclaration": 2399, - "src": "2837:7:10", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1603, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2837:80:10", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1604, - "nodeType": "ExpressionStatement", - "src": "2837:80:10" + ] + } } ] }, - "documentation": null, - "id": 1606, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "executeInternal", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1494, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1487, - "name": "sender", - "nodeType": "VariableDeclaration", - "scope": 1606, - "src": "1630:14:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1486, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1630:7:10", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1489, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 1606, - "src": "1646:10:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1488, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1646:7:10", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1491, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 1606, - "src": "1658:13:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1490, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1658:7:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1493, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 1606, - "src": "1673:10:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 1492, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "1673:5:10", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1629:55:10" - }, - "payable": false, - "returnParameters": { - "id": 1495, - "nodeType": "ParameterList", - "parameters": [], - "src": "1706:0:10" - }, - "scope": 1694, - "src": "1605:1319:10", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "internal" - }, - { - "body": { - "id": 1623, - "nodeType": "Block", - "src": "3393:61:10", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1616, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2396, - "src": "3419:3:10", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 1617, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "3419:10:10", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 1618, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1608, - "src": "3431:2:10", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 1619, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1610, - "src": "3435:5:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 1620, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1612, - "src": "3442:4:10", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 1615, - "name": "executeInternal", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1606, - "src": "3403:15:10", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$", - "typeString": "function (address,address,uint256,bytes memory)" - } - }, - "id": 1621, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3403:44:10", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1622, - "nodeType": "ExpressionStatement", - "src": "3403:44:10" - } - ] - }, - "documentation": "@dev Returns if Safe transaction is a valid daily limit transaction.\n @param to Receiver address in case of Ether transfer, token address in case of a token transfer.\n @param value Ether value in case of an Ether transfer.\n @param data Encoded token transfer. Empty in case of Ether transfer.\n @return Returns if transaction can be executed.", - "id": 1624, + "documentation": "@dev Returns if Safe transaction is a valid daily limit transaction.\n @param token Address of the token that should be transfered (0 for Ether)\n @param to Address to which the tokens should be transfered\n @param amount Amount of tokens (or Ether) that should be transfered\n @return Returns if transaction can be executed.", + "id": 1903, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -6979,16 +5415,16 @@ "name": "executeDailyLimit", "nodeType": "FunctionDefinition", "parameters": { - "id": 1613, + "id": 1825, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1608, - "name": "to", + "id": 1820, + "name": "token", "nodeType": "VariableDeclaration", - "scope": 1624, - "src": "3335:10:10", + "scope": 1903, + "src": "1917:13:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6996,10 +5432,10 @@ "typeString": "address" }, "typeName": { - "id": 1607, + "id": 1819, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3335:7:10", + "src": "1917:7:17", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7010,25 +5446,25 @@ }, { "constant": false, - "id": 1610, - "name": "value", + "id": 1822, + "name": "to", "nodeType": "VariableDeclaration", - "scope": 1624, - "src": "3347:13:10", + "scope": 1903, + "src": "1932:10:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address", + "typeString": "address" }, "typeName": { - "id": 1609, - "name": "uint256", + "id": 1821, + "name": "address", "nodeType": "ElementaryTypeName", - "src": "3347:7:10", + "src": "1932:7:17", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address", + "typeString": "address" } }, "value": null, @@ -7036,79 +5472,79 @@ }, { "constant": false, - "id": 1612, - "name": "data", + "id": 1824, + "name": "amount", "nodeType": "VariableDeclaration", - "scope": 1624, - "src": "3362:10:10", + "scope": 1903, + "src": "1944:14:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, "typeName": { - "id": 1611, - "name": "bytes", + "id": 1823, + "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3362:5:10", + "src": "1944:7:17", "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], - "src": "3334:39:10" + "src": "1916:43:17" }, "payable": false, "returnParameters": { - "id": 1614, + "id": 1826, "nodeType": "ParameterList", "parameters": [], - "src": "3393:0:10" + "src": "1979:0:17" }, - "scope": 1694, - "src": "3308:146:10", + "scope": 1973, + "src": "1890:784:17", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1679, + "id": 1958, "nodeType": "Block", - "src": "3557:391:10", + "src": "2777:391:17", "statements": [ { "assignments": [ - 1634 + 1913 ], "declarations": [ { "constant": false, - "id": 1634, + "id": 1913, "name": "dailyLimit", "nodeType": "VariableDeclaration", - "scope": 1680, - "src": "3567:29:10", + "scope": 1959, + "src": "2787:29:17", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1432_storage_ptr", + "typeIdentifier": "t_struct$_DailyLimit_$1765_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit" }, "typeName": { "contractScope": null, - "id": 1633, + "id": 1912, "name": "DailyLimit", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1432, - "src": "3567:10:10", + "referencedDeclaration": 1765, + "src": "2787:10:17", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1432_storage_ptr", + "typeIdentifier": "t_struct$_DailyLimit_$1765_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit" } }, @@ -7116,31 +5552,31 @@ "visibility": "internal" } ], - "id": 1638, + "id": 1917, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1635, + "id": 1914, "name": "dailyLimits", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1425, - "src": "3599:11:10", + "referencedDeclaration": 1758, + "src": "2819:11:17", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1432_storage_$", + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1765_storage_$", "typeString": "mapping(address => struct DailyLimitModule.DailyLimit storage ref)" } }, - "id": 1637, + "id": 1916, "indexExpression": { "argumentTypes": null, - "id": 1636, + "id": 1915, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1626, - "src": "3611:5:10", + "referencedDeclaration": 1905, + "src": "2831:5:17", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7151,14 +5587,14 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3599:18:10", + "src": "2819:18:17", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1432_storage", + "typeIdentifier": "t_struct$_DailyLimit_$1765_storage", "typeString": "struct DailyLimitModule.DailyLimit storage ref" } }, "nodeType": "VariableDeclarationStatement", - "src": "3567:50:10" + "src": "2787:50:17" }, { "condition": { @@ -7167,7 +5603,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1643, + "id": 1922, "isConstant": false, "isLValue": false, "isPure": false, @@ -7177,18 +5613,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 1639, + "id": 1918, "name": "today", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1693, - "src": "3631:5:10", + "referencedDeclaration": 1972, + "src": "2851:5:17", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, - "id": 1640, + "id": 1919, "isConstant": false, "isLValue": false, "isPure": false, @@ -7196,7 +5632,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3631:7:10", + "src": "2851:7:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7208,50 +5644,50 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1641, + "id": 1920, "name": "dailyLimit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1634, - "src": "3641:10:10", + "referencedDeclaration": 1913, + "src": "2861:10:17", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1432_storage_ptr", + "typeIdentifier": "t_struct$_DailyLimit_$1765_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit storage pointer" } }, - "id": 1642, + "id": 1921, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "lastDay", "nodeType": "MemberAccess", - "referencedDeclaration": 1431, - "src": "3641:18:10", + "referencedDeclaration": 1764, + "src": "2861:18:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3631:28:10", + "src": "2851:28:17", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 1658, + "id": 1937, "nodeType": "IfStatement", - "src": "3627:126:10", + "src": "2847:126:17", "trueBody": { - "id": 1657, + "id": 1936, "nodeType": "Block", - "src": "3661:92:10", + "src": "2881:92:17", "statements": [ { "expression": { "argumentTypes": null, - "id": 1649, + "id": 1928, "isConstant": false, "isLValue": false, "isPure": false, @@ -7260,26 +5696,26 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1644, + "id": 1923, "name": "dailyLimit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1634, - "src": "3675:10:10", + "referencedDeclaration": 1913, + "src": "2895:10:17", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1432_storage_ptr", + "typeIdentifier": "t_struct$_DailyLimit_$1765_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit storage pointer" } }, - "id": 1646, + "id": 1925, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "lastDay", "nodeType": "MemberAccess", - "referencedDeclaration": 1431, - "src": "3675:18:10", + "referencedDeclaration": 1764, + "src": "2895:18:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7292,18 +5728,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 1647, + "id": 1926, "name": "today", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1693, - "src": "3696:5:10", + "referencedDeclaration": 1972, + "src": "2916:5:17", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, - "id": 1648, + "id": 1927, "isConstant": false, "isLValue": false, "isPure": false, @@ -7311,26 +5747,26 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3696:7:10", + "src": "2916:7:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3675:28:10", + "src": "2895:28:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 1650, + "id": 1929, "nodeType": "ExpressionStatement", - "src": "3675:28:10" + "src": "2895:28:17" }, { "expression": { "argumentTypes": null, - "id": 1655, + "id": 1934, "isConstant": false, "isLValue": false, "isPure": false, @@ -7339,26 +5775,26 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1651, + "id": 1930, "name": "dailyLimit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1634, - "src": "3717:10:10", + "referencedDeclaration": 1913, + "src": "2937:10:17", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1432_storage_ptr", + "typeIdentifier": "t_struct$_DailyLimit_$1765_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit storage pointer" } }, - "id": 1653, + "id": 1932, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "spentToday", "nodeType": "MemberAccess", - "referencedDeclaration": 1429, - "src": "3717:21:10", + "referencedDeclaration": 1762, + "src": "2937:21:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7369,14 +5805,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "30", - "id": 1654, + "id": 1933, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3741:1:10", + "src": "2961:1:17", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -7384,15 +5820,15 @@ }, "value": "0" }, - "src": "3717:25:10", + "src": "2937:25:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 1656, + "id": 1935, "nodeType": "ExpressionStatement", - "src": "3717:25:10" + "src": "2937:25:17" } ] } @@ -7404,7 +5840,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 1673, + "id": 1952, "isConstant": false, "isLValue": false, "isPure": false, @@ -7415,7 +5851,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1665, + "id": 1944, "isConstant": false, "isLValue": false, "isPure": false, @@ -7426,7 +5862,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1662, + "id": 1941, "isConstant": false, "isLValue": false, "isPure": false, @@ -7435,26 +5871,26 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1659, + "id": 1938, "name": "dailyLimit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1634, - "src": "3769:10:10", + "referencedDeclaration": 1913, + "src": "2989:10:17", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1432_storage_ptr", + "typeIdentifier": "t_struct$_DailyLimit_$1765_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit storage pointer" } }, - "id": 1660, + "id": 1939, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "spentToday", "nodeType": "MemberAccess", - "referencedDeclaration": 1429, - "src": "3769:21:10", + "referencedDeclaration": 1762, + "src": "2989:21:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7464,18 +5900,18 @@ "operator": "+", "rightExpression": { "argumentTypes": null, - "id": 1661, + "id": 1940, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1628, - "src": "3793:6:10", + "referencedDeclaration": 1907, + "src": "3013:6:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3769:30:10", + "src": "2989:30:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7487,32 +5923,32 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1663, + "id": 1942, "name": "dailyLimit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1634, - "src": "3803:10:10", + "referencedDeclaration": 1913, + "src": "3023:10:17", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1432_storage_ptr", + "typeIdentifier": "t_struct$_DailyLimit_$1765_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit storage pointer" } }, - "id": 1664, + "id": 1943, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "dailyLimit", "nodeType": "MemberAccess", - "referencedDeclaration": 1427, - "src": "3803:21:10", + "referencedDeclaration": 1760, + "src": "3023:21:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3769:55:10", + "src": "2989:55:17", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -7526,7 +5962,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1672, + "id": 1951, "isConstant": false, "isLValue": false, "isPure": false, @@ -7537,7 +5973,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1669, + "id": 1948, "isConstant": false, "isLValue": false, "isPure": false, @@ -7546,26 +5982,26 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1666, + "id": 1945, "name": "dailyLimit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1634, - "src": "3840:10:10", + "referencedDeclaration": 1913, + "src": "3060:10:17", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1432_storage_ptr", + "typeIdentifier": "t_struct$_DailyLimit_$1765_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit storage pointer" } }, - "id": 1667, + "id": 1946, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "spentToday", "nodeType": "MemberAccess", - "referencedDeclaration": 1429, - "src": "3840:21:10", + "referencedDeclaration": 1762, + "src": "3060:21:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7575,18 +6011,18 @@ "operator": "+", "rightExpression": { "argumentTypes": null, - "id": 1668, + "id": 1947, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1628, - "src": "3864:6:10", + "referencedDeclaration": 1907, + "src": "3084:6:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3840:30:10", + "src": "3060:30:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7598,59 +6034,59 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1670, + "id": 1949, "name": "dailyLimit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1634, - "src": "3873:10:10", + "referencedDeclaration": 1913, + "src": "3093:10:17", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1432_storage_ptr", + "typeIdentifier": "t_struct$_DailyLimit_$1765_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit storage pointer" } }, - "id": 1671, + "id": 1950, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "spentToday", "nodeType": "MemberAccess", - "referencedDeclaration": 1429, - "src": "3873:21:10", + "referencedDeclaration": 1762, + "src": "3093:21:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3840:54:10", + "src": "3060:54:17", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "3769:125:10", + "src": "2989:125:17", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 1676, + "id": 1955, "nodeType": "IfStatement", - "src": "3762:157:10", + "src": "2982:157:17", "trueBody": { "expression": { "argumentTypes": null, "hexValue": "74727565", - "id": 1674, + "id": 1953, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "3915:4:10", + "src": "3135:4:17", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -7658,24 +6094,24 @@ }, "value": "true" }, - "functionReturnParameters": 1632, - "id": 1675, + "functionReturnParameters": 1911, + "id": 1954, "nodeType": "Return", - "src": "3908:11:10" + "src": "3128:11:17" } }, { "expression": { "argumentTypes": null, "hexValue": "66616c7365", - "id": 1677, + "id": 1956, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "3936:5:10", + "src": "3156:5:17", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -7683,15 +6119,15 @@ }, "value": "false" }, - "functionReturnParameters": 1632, - "id": 1678, + "functionReturnParameters": 1911, + "id": 1957, "nodeType": "Return", - "src": "3929:12:10" + "src": "3149:12:17" } ] }, "documentation": null, - "id": 1680, + "id": 1959, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -7699,16 +6135,16 @@ "name": "isUnderLimit", "nodeType": "FunctionDefinition", "parameters": { - "id": 1629, + "id": 1908, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1626, + "id": 1905, "name": "token", "nodeType": "VariableDeclaration", - "scope": 1680, - "src": "3482:13:10", + "scope": 1959, + "src": "2702:13:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7716,10 +6152,10 @@ "typeString": "address" }, "typeName": { - "id": 1625, + "id": 1904, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3482:7:10", + "src": "2702:7:17", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7730,11 +6166,11 @@ }, { "constant": false, - "id": 1628, + "id": 1907, "name": "amount", "nodeType": "VariableDeclaration", - "scope": 1680, - "src": "3497:14:10", + "scope": 1959, + "src": "2717:14:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7742,10 +6178,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1627, + "id": 1906, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3497:7:10", + "src": "2717:7:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7755,20 +6191,20 @@ "visibility": "internal" } ], - "src": "3481:31:10" + "src": "2701:31:17" }, "payable": false, "returnParameters": { - "id": 1632, + "id": 1911, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1631, + "id": 1910, "name": "", "nodeType": "VariableDeclaration", - "scope": 1680, - "src": "3547:4:10", + "scope": 1959, + "src": "2767:4:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7776,10 +6212,10 @@ "typeString": "bool" }, "typeName": { - "id": 1630, + "id": 1909, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "3547:4:10", + "src": "2767:4:17", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -7789,19 +6225,19 @@ "visibility": "internal" } ], - "src": "3546:6:10" + "src": "2766:6:17" }, - "scope": 1694, - "src": "3460:488:10", + "scope": 1973, + "src": "2680:488:17", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 1692, + "id": 1971, "nodeType": "Block", - "src": "4112:44:10", + "src": "3332:44:17", "statements": [ { "expression": { @@ -7810,19 +6246,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1690, + "id": 1969, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1685, + "id": 1964, "name": "now", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2398, - "src": "4129:3:10", + "referencedDeclaration": 2600, + "src": "3349:3:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7839,19 +6275,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1688, + "id": 1967, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1686, + "id": 1965, "name": "now", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2398, - "src": "4136:3:10", + "referencedDeclaration": 2600, + "src": "3356:3:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7862,14 +6298,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "31", - "id": 1687, + "id": 1966, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4142:6:10", + "src": "3362:6:17", "subdenomination": "days", "typeDescriptions": { "typeIdentifier": "t_rational_86400_by_1", @@ -7877,41 +6313,41 @@ }, "value": "1" }, - "src": "4136:12:10", + "src": "3356:12:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], - "id": 1689, + "id": 1968, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", - "src": "4135:14:10", + "src": "3355:14:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4129:20:10", + "src": "3349:20:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 1684, - "id": 1691, + "functionReturnParameters": 1963, + "id": 1970, "nodeType": "Return", - "src": "4122:27:10" + "src": "3342:27:17" } ] }, "documentation": "@dev Returns last midnight as Unix timestamp.\n @return Unix timestamp.", - "id": 1693, + "id": 1972, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -7919,23 +6355,23 @@ "name": "today", "nodeType": "FunctionDefinition", "parameters": { - "id": 1681, + "id": 1960, "nodeType": "ParameterList", "parameters": [], - "src": "4054:2:10" + "src": "3274:2:17" }, "payable": false, "returnParameters": { - "id": 1684, + "id": 1963, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1683, + "id": 1962, "name": "", "nodeType": "VariableDeclaration", - "scope": 1693, - "src": "4102:4:10", + "scope": 1972, + "src": "3322:4:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7943,10 +6379,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1682, + "id": 1961, "name": "uint", "nodeType": "ElementaryTypeName", - "src": "4102:4:10", + "src": "3322:4:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7956,63 +6392,45 @@ "visibility": "internal" } ], - "src": "4101:6:10" + "src": "3321:6:17" }, - "scope": 1694, - "src": "4040:116:10", + "scope": 1973, + "src": "3260:116:17", "stateMutability": "view", "superFunction": null, "visibility": "public" } ], - "scope": 1695, - "src": "296:3862:10" + "scope": 1974, + "src": "296:3082:17" } ], - "src": "0:4159:10" + "src": "0:3379:17" }, "compiler": { "name": "solc", - "version": "0.4.23+commit.124ca40d.Emscripten.clang" + "version": "0.4.24+commit.e67f0147.Emscripten.clang" }, "networks": { "4": { "events": {}, "links": {}, - "address": "0x831ec5aaad91423fb78d3e1ad1fcf9d5006774df", - "transactionHash": "0xdae4c3a40843ab9bf9e62becc882075695bb8c0bcc3f3a3aa3016559b63f90e4" - }, - "1525950336085": { - "events": {}, - "links": {}, - "address": "0xe52c225329d3fb9f6933bd52e7067a24d20f7983", - "transactionHash": "0xaffd9cdbf1bd14f5f349af2782a1b4dbebd9ac97abedbcfb9aee5fb1707afe96" - }, - "1526283540628": { - "events": {}, - "links": {}, - "address": "0x452dd8d6f81786c3ad3ec3cbcf024687659c682a", - "transactionHash": "0xaffd9cdbf1bd14f5f349af2782a1b4dbebd9ac97abedbcfb9aee5fb1707afe96" - }, - "1526478212260": { - "events": {}, - "links": {}, - "address": "0x180cb429f1d8b3e99b718640d3895155e2190452", - "transactionHash": "0xefeddc1db847371ef66ea36caf0a583b6bb2b9a08fdbeb73ee0f1563131ca3e2" - }, - "1526973574996": { - "events": {}, - "links": {}, - "address": "0xdf2e7bbb8f57db7d8b11f9d8a77b0754979111c1", - "transactionHash": "0xefeddc1db847371ef66ea36caf0a583b6bb2b9a08fdbeb73ee0f1563131ca3e2" + "address": "0x7fbf23d81d86e6d983bb5526e1456a314057ffb0", + "transactionHash": "0x6c99547388ac2e4a058dfefd9a50240efb12fa4b21c127c89dcca96ca3e918d1" }, "1527316019334": { "events": {}, "links": {}, - "address": "0x1d916d0b2c243d732ee103132c7d85e8bda13beb", - "transactionHash": "0xefeddc1db847371ef66ea36caf0a583b6bb2b9a08fdbeb73ee0f1563131ca3e2" + "address": "0xc78d5518d62b7a5bd2659c432996dd55ca07f1eb", + "transactionHash": "0xa9c94eb8ff4c3c857211c3b03fa7356009f4952d8cc71d3953be16cd0152a022" + }, + "1527420696956": { + "events": {}, + "links": {}, + "address": "0xf289e80fb030333c4b18827149f3148c1597e5cd", + "transactionHash": "0x25e24bddf0042536191b50d1de301cc2aaa3356b6aac5044c793dcbe358a72f9" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-26T06:28:28.347Z" + "updatedAt": "2018-05-27T11:31:46.254Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/DailyLimitModuleWithSignature.json b/safe-contracts/build/contracts/DailyLimitModuleWithSignature.json deleted file mode 100644 index 60d71e99..00000000 --- a/safe-contracts/build/contracts/DailyLimitModuleWithSignature.json +++ /dev/null @@ -1,2573 +0,0 @@ -{ - "contractName": "DailyLimitModuleWithSignature", - "abi": [ - { - "constant": false, - "inputs": [ - { - "name": "tokens", - "type": "address[]" - }, - { - "name": "_dailyLimits", - "type": "uint256[]" - } - ], - "name": "setup", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "TRANSFER_FUNCTION_IDENTIFIER", - "outputs": [ - { - "name": "", - "type": "bytes4" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "manager", - "outputs": [ - { - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "_masterCopy", - "type": "address" - } - ], - "name": "changeMasterCopy", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "token", - "type": "address" - }, - { - "name": "dailyLimit", - "type": "uint256" - } - ], - "name": "changeDailyLimit", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "NAME", - "outputs": [ - { - "name": "", - "type": "string" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "nonce", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "today", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "", - "type": "address" - } - ], - "name": "dailyLimits", - "outputs": [ - { - "name": "dailyLimit", - "type": "uint256" - }, - { - "name": "spentToday", - "type": "uint256" - }, - { - "name": "lastDay", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "to", - "type": "address" - }, - { - "name": "value", - "type": "uint256" - }, - { - "name": "data", - "type": "bytes" - } - ], - "name": "executeDailyLimit", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "VERSION", - "outputs": [ - { - "name": "", - "type": "string" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "to", - "type": "address" - }, - { - "name": "value", - "type": "uint256" - }, - { - "name": "data", - "type": "bytes" - }, - { - "name": "v", - "type": "uint8" - }, - { - "name": "r", - "type": "bytes32" - }, - { - "name": "s", - "type": "bytes32" - } - ], - "name": "executeDailyLimitWithSignature", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "to", - "type": "address" - }, - { - "name": "value", - "type": "uint256" - }, - { - "name": "data", - "type": "bytes" - }, - { - "name": "_nonce", - "type": "uint256" - } - ], - "name": "getTransactionHash", - "outputs": [ - { - "name": "", - "type": "bytes32" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - } - ], - "bytecode": "0x608060405234801561001057600080fd5b506111d9806100206000396000f3006080604052600436106100c5576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806328814f03146100ca578063430e47f814610173578063481c6a75146101dc5780634bedd30f146102335780637de7edef146102ef57806381c5e03b14610332578063a3f4df7e1461037f578063affed0e01461040f578063b74e452b1461043a578063b98a34de14610465578063d7bffc921461051e578063fce7379a14610583578063ffa1ad7414610616575b600080fd5b3480156100d657600080fd5b5061017160048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192905050506106a6565b005b34801561017f57600080fd5b50610188610745565b60405180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200191505060405180910390f35b3480156101e857600080fd5b506101f1610769565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561023f57600080fd5b506102ed600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff1690602001909291908035600019169060200190929190803560001916906020019092919050505061078f565b005b3480156102fb57600080fd5b50610330600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061084c565b005b34801561033e57600080fd5b5061037d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610911565b005b34801561038b57600080fd5b506103946109b8565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103d45780820151818401526020810190506103b9565b50505050905090810190601f1680156104015780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561041b57600080fd5b506104246109f1565b6040518082815260200191505060405180910390f35b34801561044657600080fd5b5061044f6109f7565b6040518082815260200191505060405180910390f35b34801561047157600080fd5b50610500600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929080359060200190929190505050610a0f565b60405180826000191660001916815260200191505060405180910390f35b34801561052a57600080fd5b5061055f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610bf2565b60405180848152602001838152602001828152602001935050505060405180910390f35b34801561058f57600080fd5b50610614600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050610c1c565b005b34801561062257600080fd5b5061062b610c2d565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561066b578082015181840152602081019050610650565b50505050905090810190601f1680156106985780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60006106b0610c66565b600090505b82518110156107405781818151811015156106cc57fe5b906020019060200201516002600085848151811015156106e857fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018190555080806001019150506106b5565b505050565b7fa9059cbb0000000000000000000000000000000000000000000000000000000081565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806107a0888888600354610a0f565b9150600182868686604051600081526020016040526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000865af1158015610819573d6000803e3d6000fd5b505050602060405103519050600160036000828254019250508190555061084281898989610cf0565b5050505050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156108a857600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141515156108ce57600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561096d57600080fd5b80600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055505050565b6040805190810160405280601281526020017f4461696c79204c696d6974204d6f64756c65000000000000000000000000000081525081565b60035481565b60006201518042811515610a0757fe5b064203905090565b600060197f01000000000000000000000000000000000000000000000000000000000000000260007f010000000000000000000000000000000000000000000000000000000000000002308787878760405180887effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101877effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140184815260200183805190602001908083835b602083101515610baf5780518252602082019150602081019050602083039250610b8a565b6001836020036101000a03801982511681845116808217855250505050505090500182815260200197505050505050505060405180910390209050949350505050565b60026020528060005260406000206000915090508060000154908060010154908060020154905083565b610c2833848484610cf0565b505050565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610cad57600080fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600080600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f54bf6e896040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015610db357600080fd5b505af1158015610dc7573d6000803e3d6000fd5b505050506040513d6020811015610ddd57600080fd5b81019080805190602001909291905050501515610df957600080fd5b60008551148015610e0a5750600086115b80610e22575060008551118015610e215750600086145b5b1515610e2d57600080fd5b600085511415610e465760009350869250859150610ecb565b8693506020850151905060248501519250604485015191507fa9059cbb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141515610eca57600080fd5b5b60008373ffffffffffffffffffffffffffffffffffffffff1614151515610ef157600080fd5b600082111515610f0057600080fd5b610f0a84836110fe565b1515610f1557600080fd5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160008282540192505081905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a788888860006040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018060200183600281111561101f57fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b8381101561105f578082015181840152602081019050611044565b50505050905090810190601f16801561108c5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b1580156110ae57600080fd5b505af11580156110c2573d6000803e3d6000fd5b505050506040513d60208110156110d857600080fd5b810190808051906020019092919050505015156110f457600080fd5b5050505050505050565b600080600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050806002015461114f6109f7565b11156111705761115d6109f7565b8160020181905550600081600101819055505b806000015483826001015401111580156111935750806001015483826001015401115b156111a157600191506111a6565b600091505b50929150505600a165627a7a723058206053bd547ec094a1d800289a5c392f5dd89e41cd33f47d9a2cbbbcd1c14c52670029", - "deployedBytecode": "0x6080604052600436106100c5576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806328814f03146100ca578063430e47f814610173578063481c6a75146101dc5780634bedd30f146102335780637de7edef146102ef57806381c5e03b14610332578063a3f4df7e1461037f578063affed0e01461040f578063b74e452b1461043a578063b98a34de14610465578063d7bffc921461051e578063fce7379a14610583578063ffa1ad7414610616575b600080fd5b3480156100d657600080fd5b5061017160048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192905050506106a6565b005b34801561017f57600080fd5b50610188610745565b60405180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200191505060405180910390f35b3480156101e857600080fd5b506101f1610769565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561023f57600080fd5b506102ed600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff1690602001909291908035600019169060200190929190803560001916906020019092919050505061078f565b005b3480156102fb57600080fd5b50610330600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061084c565b005b34801561033e57600080fd5b5061037d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610911565b005b34801561038b57600080fd5b506103946109b8565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103d45780820151818401526020810190506103b9565b50505050905090810190601f1680156104015780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561041b57600080fd5b506104246109f1565b6040518082815260200191505060405180910390f35b34801561044657600080fd5b5061044f6109f7565b6040518082815260200191505060405180910390f35b34801561047157600080fd5b50610500600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929080359060200190929190505050610a0f565b60405180826000191660001916815260200191505060405180910390f35b34801561052a57600080fd5b5061055f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610bf2565b60405180848152602001838152602001828152602001935050505060405180910390f35b34801561058f57600080fd5b50610614600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050610c1c565b005b34801561062257600080fd5b5061062b610c2d565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561066b578082015181840152602081019050610650565b50505050905090810190601f1680156106985780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60006106b0610c66565b600090505b82518110156107405781818151811015156106cc57fe5b906020019060200201516002600085848151811015156106e857fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018190555080806001019150506106b5565b505050565b7fa9059cbb0000000000000000000000000000000000000000000000000000000081565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806107a0888888600354610a0f565b9150600182868686604051600081526020016040526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000865af1158015610819573d6000803e3d6000fd5b505050602060405103519050600160036000828254019250508190555061084281898989610cf0565b5050505050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156108a857600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141515156108ce57600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561096d57600080fd5b80600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055505050565b6040805190810160405280601281526020017f4461696c79204c696d6974204d6f64756c65000000000000000000000000000081525081565b60035481565b60006201518042811515610a0757fe5b064203905090565b600060197f01000000000000000000000000000000000000000000000000000000000000000260007f010000000000000000000000000000000000000000000000000000000000000002308787878760405180887effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101877effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140184815260200183805190602001908083835b602083101515610baf5780518252602082019150602081019050602083039250610b8a565b6001836020036101000a03801982511681845116808217855250505050505090500182815260200197505050505050505060405180910390209050949350505050565b60026020528060005260406000206000915090508060000154908060010154908060020154905083565b610c2833848484610cf0565b505050565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610cad57600080fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600080600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f54bf6e896040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015610db357600080fd5b505af1158015610dc7573d6000803e3d6000fd5b505050506040513d6020811015610ddd57600080fd5b81019080805190602001909291905050501515610df957600080fd5b60008551148015610e0a5750600086115b80610e22575060008551118015610e215750600086145b5b1515610e2d57600080fd5b600085511415610e465760009350869250859150610ecb565b8693506020850151905060248501519250604485015191507fa9059cbb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141515610eca57600080fd5b5b60008373ffffffffffffffffffffffffffffffffffffffff1614151515610ef157600080fd5b600082111515610f0057600080fd5b610f0a84836110fe565b1515610f1557600080fd5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160008282540192505081905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a788888860006040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018060200183600281111561101f57fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b8381101561105f578082015181840152602081019050611044565b50505050905090810190601f16801561108c5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b1580156110ae57600080fd5b505af11580156110c2573d6000803e3d6000fd5b505050506040513d60208110156110d857600080fd5b810190808051906020019092919050505015156110f457600080fd5b5050505050505050565b600080600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050806002015461114f6109f7565b11156111705761115d6109f7565b8160020181905550600081600101819055505b806000015483826001015401111580156111935750806001015483826001015401115b156111a157600191506111a6565b600091505b50929150505600a165627a7a723058206053bd547ec094a1d800289a5c392f5dd89e41cd33f47d9a2cbbbcd1c14c52670029", - "sourceMap": "241:1458:11:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;241:1458:11;;;;;;;", - "deployedSourceMap": "241:1458:11:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;991:222:10;;8:9:-1;5:2;;;30:1;27;20:12;5:2;991:222:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;441:67;;8:9:-1;5:2;;;30:1;27;20:12;5:2;441:67:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;262:28:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;262:28:5;;;;;;;;;;;;;;;;;;;;;;;;;;;874:346:11;;8:9:-1;5:2;;;30:1;27;20:12;5:2;874:346:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;626:208:4;;8:9:-1;5:2;;;30:1;27;20:12;5:2;626:208:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;1441:158:10;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1441:158:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;339:50;;8:9:-1;5:2;;;30:1;27;20:12;5:2;339:50:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;339:50:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;307:20:11;;8:9:-1;5:2;;;30:1;27;20:12;5:2;307:20:11;;;;;;;;;;;;;;;;;;;;;;;4040:116:10;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4040:116:10;;;;;;;;;;;;;;;;;;;;;;;1471:226:11;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1471:226:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;586:50:10;;8:9:-1;5:2;;;30:1;27;20:12;5:2;586:50:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3308:146;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3308:146:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;395:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;395:40:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;395:40:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;991:222;1104:9;1077:12;:10;:12::i;:::-;1116:1;1104:13;;1099:107;1123:6;:13;1119:1;:17;1099:107;;;1191:12;1204:1;1191:15;;;;;;;;;;;;;;;;;;1155:11;:22;1167:6;1174:1;1167:9;;;;;;;;;;;;;;;;;;1155:22;;;;;;;;;;;;;;;:33;;:51;;;;1138:3;;;;;;;1099:107;;;991:222;;;:::o;441:67::-;;;:::o;262:28:5:-;;;;;;;;;;;;;:::o;874:346:11:-;1013:23;1091:14;1039:42;1058:2;1062:5;1069:4;1075:5;;1039:18;:42::i;:::-;1013:68;;1108:35;1118:15;1135:1;1138;1141;1108:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1108:35:11;;;;;;;;1091:52;;1162:1;1153:5;;:10;;;;;;;;;;;1173:40;1189:6;1197:2;1201:5;1208:4;1173:15;:40::i;:::-;874:346;;;;;;;;:::o;626:208:4:-;359:7:5;;;;;;;;;;;337:30;;:10;:30;;;329:39;;;;;;;;791:1:4;776:11;:16;;;;768:25;;;;;;;;816:11;803:10;;:24;;;;;;;;;;;;;;;;;;626:208;:::o;1441:158:10:-;359:7:5;;;;;;;;;;;337:30;;:10;:30;;;329:39;;;;;;;;1582:10:10;1550:11;:18;1562:5;1550:18;;;;;;;;;;;;;;;:29;;:42;;;;1441:158;;:::o;339:50::-;;;;;;;;;;;;;;;;;;;;:::o;307:20:11:-;;;;:::o;4040:116:10:-;4102:4;4142:6;4136:3;:12;;;;;;;;4129:3;:20;4122:27;;4040:116;:::o;1471:226:11:-;1599:7;1644:4;1639:10;;1656:1;1651:7;;1660:4;1666:2;1670:5;1677:4;1683:6;1629:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;;;1629:61:11;;;;;;;;;;;;;;;;;;;;;;;;;;;1622:68;;1471:226;;;;;;:::o;586:50:10:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3308:146::-;3403:44;3419:10;3431:2;3435:5;3442:4;3403:15;:44::i;:::-;3308:146;;;:::o;395:40::-;;;;;;;;;;;;;;;;;;;;:::o;392:268:5:-;606:1;594:7;;;;;;;;;;;586:21;;;578:30;;;;;;;;642:10;618:7;;:35;;;;;;;;;;;;;;;;;;392:268::o;1605:1319:10:-;1997:13;2020:16;2046:14;2233:25;1814:7;;;;;;;;;;;1801:29;;;1831:6;1801:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1801:37:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1801:37:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1801:37:10;;;;;;;;;;;;;;;;1793:46;;;;;;;;1939:1;1924:4;:11;:16;:29;;;;;1952:1;1944:5;:9;1924:29;:62;;;;1971:1;1957:4;:11;:15;:29;;;;;1985:1;1976:5;:10;1957:29;1924:62;1916:71;;;;;;;;2089:1;2074:4;:11;:16;2070:538;;;2114:1;2106:9;;2140:2;2129:13;;2165:5;2156:14;;2070:538;;;2217:2;2209:10;;2405:4;2399;2395:15;2389:22;2367:44;;2456:4;2450;2446:15;2440:22;2428:34;;2505:4;2499;2495:15;2489:22;2479:32;;2568:28;2546:50;;;:18;:50;;;;2538:59;;;;;;;;2070:538;2637:1;2625:8;:13;;;;2617:22;;;;;;;;2666:1;2657:6;:10;2649:19;;;;;;;;2750:27;2763:5;2770:6;2750:12;:27::i;:::-;2742:36;;;;;;;;2821:6;2788:11;:18;2800:5;2788:18;;;;;;;;;;;;;;;:29;;;:39;;;;;;;;;;;2845:7;;;;;;;;;;;:33;;;2879:2;2883:5;2890:4;2896:19;2845:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;2845:71:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2845:71:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2845:71:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2845:71:10;;;;;;;;;;;;;;;;2837:80;;;;;;;;1605:1319;;;;;;;;:::o;3460:488::-;3547:4;3567:29;3599:11;:18;3611:5;3599:18;;;;;;;;;;;;;;;3567:50;;3641:10;:18;;;3631:7;:5;:7::i;:::-;:28;3627:126;;;3696:7;:5;:7::i;:::-;3675:10;:18;;:28;;;;3741:1;3717:10;:21;;:25;;;;3627:126;3803:10;:21;;;3793:6;3769:10;:21;;;:30;:55;;:125;;;;;3873:10;:21;;;3864:6;3840:10;:21;;;:30;:54;3769:125;3762:157;;;3915:4;3908:11;;;;3762:157;3936:5;3929:12;;3460:488;;;;;;:::o", - "source": "pragma solidity 0.4.23;\nimport \"./DailyLimitModule.sol\";\n\n\n/// @title Daily Limit Module With Signature - Allows to transfer limited amounts of ERC20 tokens and Ether without confirmations.\n/// @author Richard Meissner - \ncontract DailyLimitModuleWithSignature is DailyLimitModule {\n\n uint256 public nonce;\n\n /// @dev Returns if Safe transaction is a valid daily limit transaction.\n /// @param to Receiver address in case of Ether transfer, token address in case of a token transfer.\n /// @param value Ether value in case of an Ether transfer.\n /// @param data Encoded token transfer. Empty in case of Ether transfer.\n /// @param v Part of the signature of the sender.\n /// @param r Part of the signature of the sender.\n /// @param s Part of the signature of the sender.\n /// @return Returns if transaction can be executed.\n function executeDailyLimitWithSignature(address to, uint256 value, bytes data, uint8 v, bytes32 r, bytes32 s)\n public\n {\n bytes32 transactionHash = getTransactionHash(to, value, data, nonce);\n address sender = ecrecover(transactionHash, v, r, s);\n nonce += 1;\n executeInternal(sender, to, value, data);\n }\n\n /// @dev Returns transactions hash to be signed by owners.\n /// @param to Destination address.\n /// @param value Ether value.\n /// @param data Data payload.\n /// @param _nonce Transaction nonce.\n /// @return Transaction hash.\n function getTransactionHash(address to, uint256 value, bytes data, uint256 _nonce)\n public\n view\n returns (bytes32)\n {\n return keccak256(byte(0x19), byte(0), this, to, value, data, _nonce);\n }\n}\n", - "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/modules/DailyLimitModuleWithSignature.sol", - "ast": { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/modules/DailyLimitModuleWithSignature.sol", - "exportedSymbols": { - "DailyLimitModuleWithSignature": [ - 1775 - ] - }, - "id": 1776, - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 1696, - "literals": [ - "solidity", - "0.4", - ".23" - ], - "nodeType": "PragmaDirective", - "src": "0:23:11" - }, - { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/modules/DailyLimitModule.sol", - "file": "./DailyLimitModule.sol", - "id": 1697, - "nodeType": "ImportDirective", - "scope": 1776, - "sourceUnit": 1695, - "src": "24:32:11", - "symbolAliases": [], - "unitAlias": "" - }, - { - "baseContracts": [ - { - "arguments": null, - "baseName": { - "contractScope": null, - "id": 1698, - "name": "DailyLimitModule", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1694, - "src": "283:16:11", - "typeDescriptions": { - "typeIdentifier": "t_contract$_DailyLimitModule_$1694", - "typeString": "contract DailyLimitModule" - } - }, - "id": 1699, - "nodeType": "InheritanceSpecifier", - "src": "283:16:11" - } - ], - "contractDependencies": [ - 580, - 621, - 1359, - 1694 - ], - "contractKind": "contract", - "documentation": "@title Daily Limit Module With Signature - Allows to transfer limited amounts of ERC20 tokens and Ether without confirmations.\n @author Richard Meissner - ", - "fullyImplemented": true, - "id": 1775, - "linearizedBaseContracts": [ - 1775, - 1694, - 621, - 580, - 1359 - ], - "name": "DailyLimitModuleWithSignature", - "nodeType": "ContractDefinition", - "nodes": [ - { - "constant": false, - "id": 1701, - "name": "nonce", - "nodeType": "VariableDeclaration", - "scope": 1775, - "src": "307:20:11", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1700, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "307:7:11", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "public" - }, - { - "body": { - "id": 1745, - "nodeType": "Block", - "src": "1003:217:11", - "statements": [ - { - "assignments": [ - 1717 - ], - "declarations": [ - { - "constant": false, - "id": 1717, - "name": "transactionHash", - "nodeType": "VariableDeclaration", - "scope": 1746, - "src": "1013:23:11", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1716, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1013:7:11", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1724, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1719, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1703, - "src": "1058:2:11", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 1720, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1705, - "src": "1062:5:11", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 1721, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1707, - "src": "1069:4:11", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - { - "argumentTypes": null, - "id": 1722, - "name": "nonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1701, - "src": "1075:5:11", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1718, - "name": "getTransactionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1774, - "src": "1039:18:11", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$", - "typeString": "function (address,uint256,bytes memory,uint256) view returns (bytes32)" - } - }, - "id": 1723, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1039:42:11", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1013:68:11" - }, - { - "assignments": [ - 1726 - ], - "declarations": [ - { - "constant": false, - "id": 1726, - "name": "sender", - "nodeType": "VariableDeclaration", - "scope": 1746, - "src": "1091:14:11", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1725, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1091:7:11", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1733, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1728, - "name": "transactionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1717, - "src": "1118:15:11", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "id": 1729, - "name": "v", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1709, - "src": "1135:1:11", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - { - "argumentTypes": null, - "id": 1730, - "name": "r", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1711, - "src": "1138:1:11", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "id": 1731, - "name": "s", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1713, - "src": "1141:1:11", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "id": 1727, - "name": "ecrecover", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2388, - "src": "1108:9:11", - "typeDescriptions": { - "typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$", - "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)" - } - }, - "id": 1732, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1108:35:11", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1091:52:11" - }, - { - "expression": { - "argumentTypes": null, - "id": 1736, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1734, - "name": "nonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1701, - "src": "1153:5:11", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "+=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "31", - "id": 1735, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1162:1:11", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "src": "1153:10:11", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1737, - "nodeType": "ExpressionStatement", - "src": "1153:10:11" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1739, - "name": "sender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1726, - "src": "1189:6:11", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 1740, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1703, - "src": "1197:2:11", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 1741, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1705, - "src": "1201:5:11", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 1742, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1707, - "src": "1208:4:11", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 1738, - "name": "executeInternal", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1606, - "src": "1173:15:11", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$", - "typeString": "function (address,address,uint256,bytes memory)" - } - }, - "id": 1743, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1173:40:11", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1744, - "nodeType": "ExpressionStatement", - "src": "1173:40:11" - } - ] - }, - "documentation": "@dev Returns if Safe transaction is a valid daily limit transaction.\n @param to Receiver address in case of Ether transfer, token address in case of a token transfer.\n @param value Ether value in case of an Ether transfer.\n @param data Encoded token transfer. Empty in case of Ether transfer.\n @param v Part of the signature of the sender.\n @param r Part of the signature of the sender.\n @param s Part of the signature of the sender.\n @return Returns if transaction can be executed.", - "id": 1746, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "executeDailyLimitWithSignature", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1714, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1703, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 1746, - "src": "914:10:11", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1702, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "914:7:11", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1705, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 1746, - "src": "926:13:11", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1704, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "926:7:11", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1707, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 1746, - "src": "941:10:11", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 1706, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "941:5:11", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1709, - "name": "v", - "nodeType": "VariableDeclaration", - "scope": 1746, - "src": "953:7:11", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 1708, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "953:5:11", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1711, - "name": "r", - "nodeType": "VariableDeclaration", - "scope": 1746, - "src": "962:9:11", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1710, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "962:7:11", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1713, - "name": "s", - "nodeType": "VariableDeclaration", - "scope": 1746, - "src": "973:9:11", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1712, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "973:7:11", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "913:70:11" - }, - "payable": false, - "returnParameters": { - "id": 1715, - "nodeType": "ParameterList", - "parameters": [], - "src": "1003:0:11" - }, - "scope": 1775, - "src": "874:346:11", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 1773, - "nodeType": "Block", - "src": "1612:85:11", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "30783139", - "id": 1761, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1644:4:11", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_25_by_1", - "typeString": "int_const 25" - }, - "value": "0x19" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_25_by_1", - "typeString": "int_const 25" - } - ], - "id": 1760, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "1639:4:11", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes1_$", - "typeString": "type(bytes1)" - }, - "typeName": "byte" - }, - "id": 1762, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1639:10:11", - "typeDescriptions": { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - } - }, - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "30", - "id": 1764, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1656:1:11", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 1763, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "1651:4:11", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes1_$", - "typeString": "type(bytes1)" - }, - "typeName": "byte" - }, - "id": 1765, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1651:7:11", - "typeDescriptions": { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - } - }, - { - "argumentTypes": null, - "id": 1766, - "name": "this", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2431, - "src": "1660:4:11", - "typeDescriptions": { - "typeIdentifier": "t_contract$_DailyLimitModuleWithSignature_$1775", - "typeString": "contract DailyLimitModuleWithSignature" - } - }, - { - "argumentTypes": null, - "id": 1767, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1748, - "src": "1666:2:11", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 1768, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1750, - "src": "1670:5:11", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 1769, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1752, - "src": "1677:4:11", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - { - "argumentTypes": null, - "id": 1770, - "name": "_nonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1754, - "src": "1683:6:11", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - }, - { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - }, - { - "typeIdentifier": "t_contract$_DailyLimitModuleWithSignature_$1775", - "typeString": "contract DailyLimitModuleWithSignature" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1759, - "name": "keccak256", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2390, - "src": "1629:9:11", - "typeDescriptions": { - "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", - "typeString": "function () pure returns (bytes32)" - } - }, - "id": 1771, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1629:61:11", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "functionReturnParameters": 1758, - "id": 1772, - "nodeType": "Return", - "src": "1622:68:11" - } - ] - }, - "documentation": "@dev Returns transactions hash to be signed by owners.\n @param to Destination address.\n @param value Ether value.\n @param data Data payload.\n @param _nonce Transaction nonce.\n @return Transaction hash.", - "id": 1774, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "getTransactionHash", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1755, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1748, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 1774, - "src": "1499:10:11", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1747, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1499:7:11", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1750, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 1774, - "src": "1511:13:11", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1749, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1511:7:11", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1752, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 1774, - "src": "1526:10:11", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 1751, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "1526:5:11", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1754, - "name": "_nonce", - "nodeType": "VariableDeclaration", - "scope": 1774, - "src": "1538:14:11", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1753, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1538:7:11", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1498:55:11" - }, - "payable": false, - "returnParameters": { - "id": 1758, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1757, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 1774, - "src": "1599:7:11", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1756, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1599:7:11", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1598:9:11" - }, - "scope": 1775, - "src": "1471:226:11", - "stateMutability": "view", - "superFunction": null, - "visibility": "public" - } - ], - "scope": 1776, - "src": "241:1458:11" - } - ], - "src": "0:1700:11" - }, - "legacyAST": { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/modules/DailyLimitModuleWithSignature.sol", - "exportedSymbols": { - "DailyLimitModuleWithSignature": [ - 1775 - ] - }, - "id": 1776, - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 1696, - "literals": [ - "solidity", - "0.4", - ".23" - ], - "nodeType": "PragmaDirective", - "src": "0:23:11" - }, - { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/modules/DailyLimitModule.sol", - "file": "./DailyLimitModule.sol", - "id": 1697, - "nodeType": "ImportDirective", - "scope": 1776, - "sourceUnit": 1695, - "src": "24:32:11", - "symbolAliases": [], - "unitAlias": "" - }, - { - "baseContracts": [ - { - "arguments": null, - "baseName": { - "contractScope": null, - "id": 1698, - "name": "DailyLimitModule", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1694, - "src": "283:16:11", - "typeDescriptions": { - "typeIdentifier": "t_contract$_DailyLimitModule_$1694", - "typeString": "contract DailyLimitModule" - } - }, - "id": 1699, - "nodeType": "InheritanceSpecifier", - "src": "283:16:11" - } - ], - "contractDependencies": [ - 580, - 621, - 1359, - 1694 - ], - "contractKind": "contract", - "documentation": "@title Daily Limit Module With Signature - Allows to transfer limited amounts of ERC20 tokens and Ether without confirmations.\n @author Richard Meissner - ", - "fullyImplemented": true, - "id": 1775, - "linearizedBaseContracts": [ - 1775, - 1694, - 621, - 580, - 1359 - ], - "name": "DailyLimitModuleWithSignature", - "nodeType": "ContractDefinition", - "nodes": [ - { - "constant": false, - "id": 1701, - "name": "nonce", - "nodeType": "VariableDeclaration", - "scope": 1775, - "src": "307:20:11", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1700, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "307:7:11", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "public" - }, - { - "body": { - "id": 1745, - "nodeType": "Block", - "src": "1003:217:11", - "statements": [ - { - "assignments": [ - 1717 - ], - "declarations": [ - { - "constant": false, - "id": 1717, - "name": "transactionHash", - "nodeType": "VariableDeclaration", - "scope": 1746, - "src": "1013:23:11", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1716, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1013:7:11", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1724, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1719, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1703, - "src": "1058:2:11", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 1720, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1705, - "src": "1062:5:11", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 1721, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1707, - "src": "1069:4:11", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - { - "argumentTypes": null, - "id": 1722, - "name": "nonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1701, - "src": "1075:5:11", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1718, - "name": "getTransactionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1774, - "src": "1039:18:11", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$", - "typeString": "function (address,uint256,bytes memory,uint256) view returns (bytes32)" - } - }, - "id": 1723, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1039:42:11", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1013:68:11" - }, - { - "assignments": [ - 1726 - ], - "declarations": [ - { - "constant": false, - "id": 1726, - "name": "sender", - "nodeType": "VariableDeclaration", - "scope": 1746, - "src": "1091:14:11", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1725, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1091:7:11", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1733, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1728, - "name": "transactionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1717, - "src": "1118:15:11", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "id": 1729, - "name": "v", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1709, - "src": "1135:1:11", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - { - "argumentTypes": null, - "id": 1730, - "name": "r", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1711, - "src": "1138:1:11", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "id": 1731, - "name": "s", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1713, - "src": "1141:1:11", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "id": 1727, - "name": "ecrecover", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2388, - "src": "1108:9:11", - "typeDescriptions": { - "typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$", - "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)" - } - }, - "id": 1732, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1108:35:11", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1091:52:11" - }, - { - "expression": { - "argumentTypes": null, - "id": 1736, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1734, - "name": "nonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1701, - "src": "1153:5:11", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "+=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "31", - "id": 1735, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1162:1:11", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "src": "1153:10:11", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1737, - "nodeType": "ExpressionStatement", - "src": "1153:10:11" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1739, - "name": "sender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1726, - "src": "1189:6:11", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 1740, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1703, - "src": "1197:2:11", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 1741, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1705, - "src": "1201:5:11", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 1742, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1707, - "src": "1208:4:11", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 1738, - "name": "executeInternal", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1606, - "src": "1173:15:11", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$", - "typeString": "function (address,address,uint256,bytes memory)" - } - }, - "id": 1743, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1173:40:11", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1744, - "nodeType": "ExpressionStatement", - "src": "1173:40:11" - } - ] - }, - "documentation": "@dev Returns if Safe transaction is a valid daily limit transaction.\n @param to Receiver address in case of Ether transfer, token address in case of a token transfer.\n @param value Ether value in case of an Ether transfer.\n @param data Encoded token transfer. Empty in case of Ether transfer.\n @param v Part of the signature of the sender.\n @param r Part of the signature of the sender.\n @param s Part of the signature of the sender.\n @return Returns if transaction can be executed.", - "id": 1746, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "executeDailyLimitWithSignature", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1714, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1703, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 1746, - "src": "914:10:11", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1702, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "914:7:11", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1705, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 1746, - "src": "926:13:11", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1704, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "926:7:11", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1707, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 1746, - "src": "941:10:11", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 1706, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "941:5:11", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1709, - "name": "v", - "nodeType": "VariableDeclaration", - "scope": 1746, - "src": "953:7:11", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 1708, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "953:5:11", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1711, - "name": "r", - "nodeType": "VariableDeclaration", - "scope": 1746, - "src": "962:9:11", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1710, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "962:7:11", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1713, - "name": "s", - "nodeType": "VariableDeclaration", - "scope": 1746, - "src": "973:9:11", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1712, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "973:7:11", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "913:70:11" - }, - "payable": false, - "returnParameters": { - "id": 1715, - "nodeType": "ParameterList", - "parameters": [], - "src": "1003:0:11" - }, - "scope": 1775, - "src": "874:346:11", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 1773, - "nodeType": "Block", - "src": "1612:85:11", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "30783139", - "id": 1761, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1644:4:11", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_25_by_1", - "typeString": "int_const 25" - }, - "value": "0x19" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_25_by_1", - "typeString": "int_const 25" - } - ], - "id": 1760, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "1639:4:11", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes1_$", - "typeString": "type(bytes1)" - }, - "typeName": "byte" - }, - "id": 1762, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1639:10:11", - "typeDescriptions": { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - } - }, - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "30", - "id": 1764, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1656:1:11", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 1763, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "1651:4:11", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes1_$", - "typeString": "type(bytes1)" - }, - "typeName": "byte" - }, - "id": 1765, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1651:7:11", - "typeDescriptions": { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - } - }, - { - "argumentTypes": null, - "id": 1766, - "name": "this", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2431, - "src": "1660:4:11", - "typeDescriptions": { - "typeIdentifier": "t_contract$_DailyLimitModuleWithSignature_$1775", - "typeString": "contract DailyLimitModuleWithSignature" - } - }, - { - "argumentTypes": null, - "id": 1767, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1748, - "src": "1666:2:11", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 1768, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1750, - "src": "1670:5:11", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 1769, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1752, - "src": "1677:4:11", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - { - "argumentTypes": null, - "id": 1770, - "name": "_nonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1754, - "src": "1683:6:11", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - }, - { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - }, - { - "typeIdentifier": "t_contract$_DailyLimitModuleWithSignature_$1775", - "typeString": "contract DailyLimitModuleWithSignature" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1759, - "name": "keccak256", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2390, - "src": "1629:9:11", - "typeDescriptions": { - "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", - "typeString": "function () pure returns (bytes32)" - } - }, - "id": 1771, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1629:61:11", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "functionReturnParameters": 1758, - "id": 1772, - "nodeType": "Return", - "src": "1622:68:11" - } - ] - }, - "documentation": "@dev Returns transactions hash to be signed by owners.\n @param to Destination address.\n @param value Ether value.\n @param data Data payload.\n @param _nonce Transaction nonce.\n @return Transaction hash.", - "id": 1774, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "getTransactionHash", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1755, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1748, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 1774, - "src": "1499:10:11", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1747, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1499:7:11", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1750, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 1774, - "src": "1511:13:11", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1749, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1511:7:11", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1752, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 1774, - "src": "1526:10:11", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 1751, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "1526:5:11", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1754, - "name": "_nonce", - "nodeType": "VariableDeclaration", - "scope": 1774, - "src": "1538:14:11", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1753, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1538:7:11", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1498:55:11" - }, - "payable": false, - "returnParameters": { - "id": 1758, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1757, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 1774, - "src": "1599:7:11", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1756, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1599:7:11", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1598:9:11" - }, - "scope": 1775, - "src": "1471:226:11", - "stateMutability": "view", - "superFunction": null, - "visibility": "public" - } - ], - "scope": 1776, - "src": "241:1458:11" - } - ], - "src": "0:1700:11" - }, - "compiler": { - "name": "solc", - "version": "0.4.23+commit.124ca40d.Emscripten.clang" - }, - "networks": { - "4": { - "events": {}, - "links": {}, - "address": "0x7e0c709947a6d2c283c16a69182104016c7e212c", - "transactionHash": "0x4d4459efdc04c3c67835de906ac494897ade960b27a6353943677b35f5a3b555" - }, - "1525950336085": { - "events": {}, - "links": {}, - "address": "0x788256524db64c2b23ff2e417a833927550a2d65", - "transactionHash": "0x13942c7ebe4c7c49493ac8d9d8ee3c329a0be8b7a78717117e0c5d43cbf8632c" - }, - "1526283540628": { - "events": {}, - "links": {}, - "address": "0x3e2ade0d97956160691a96fb2adf83844155708d", - "transactionHash": "0x13942c7ebe4c7c49493ac8d9d8ee3c329a0be8b7a78717117e0c5d43cbf8632c" - }, - "1526478212260": { - "events": {}, - "links": {}, - "address": "0xdb5a513347baaf6454bdfcb439d6c712c52a754e", - "transactionHash": "0x21a453f823a02858ff598704a36731ed3a5264592902c73a7e68ee53d3fb635d" - }, - "1526973574996": { - "events": {}, - "links": {}, - "address": "0x924ca341d09a83622d62128543b45530d43afa51", - "transactionHash": "0x21a453f823a02858ff598704a36731ed3a5264592902c73a7e68ee53d3fb635d" - }, - "1527316019334": { - "events": {}, - "links": {}, - "address": "0x7bd57821cda477c45be7999e6b08de00886999c9", - "transactionHash": "0x21a453f823a02858ff598704a36731ed3a5264592902c73a7e68ee53d3fb635d" - } - }, - "schemaVersion": "2.0.0", - "updatedAt": "2018-05-26T06:28:28.345Z" -} \ No newline at end of file diff --git a/safe-contracts/build/contracts/DelegateConstructorProxy.json b/safe-contracts/build/contracts/DelegateConstructorProxy.json index 25dc2fc8..939b5322 100644 --- a/safe-contracts/build/contracts/DelegateConstructorProxy.json +++ b/safe-contracts/build/contracts/DelegateConstructorProxy.json @@ -50,11 +50,11 @@ "type": "fallback" } ], - "bytecode": "0x608060405234801561001057600080fd5b5060405161026d38038061026d83398101806040528101908080519060200190929190805182019291905050508160008173ffffffffffffffffffffffffffffffffffffffff161415151561006457600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506000815111156100f15773ffffffffffffffffffffffffffffffffffffffff60005416600080835160208501846127105a03f46040513d6000823e60008214156100ed573d81fd5b5050505b505061016b806101026000396000f30060806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680634555d5c91461008b5780635c60da1b146100b6575b73ffffffffffffffffffffffffffffffffffffffff600054163660008037600080366000845af43d6000803e6000811415610086573d6000fd5b3d6000f35b34801561009757600080fd5b506100a061010d565b6040518082815260200191505060405180910390f35b3480156100c257600080fd5b506100cb610116565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60006002905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050905600a165627a7a72305820caf2b106039b60d7c8f99a3087b6cbf6014cdee3748f0823ccd8cbf983ee4a720029", - "deployedBytecode": "0x60806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680634555d5c91461008b5780635c60da1b146100b6575b73ffffffffffffffffffffffffffffffffffffffff600054163660008037600080366000845af43d6000803e6000811415610086573d6000fd5b3d6000f35b34801561009757600080fd5b506100a061010d565b6040518082815260200191505060405180910390f35b3480156100c257600080fd5b506100cb610116565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60006002905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050905600a165627a7a72305820caf2b106039b60d7c8f99a3087b6cbf6014cdee3748f0823ccd8cbf983ee4a720029", - "sourceMap": "355:882:0:-;;;610:625;8:9:-1;5:2;;;30:1;27;20:12;5:2;610:625:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;668:11;593:1:12;578:11;:16;;;;570:25;;;;;;;;618:11;605:10;;:24;;;;;;;;;;;;;;;;;;508:128;735:1:0;714:11;:18;:22;710:519;;;879:42;875:1;869:8;865:57;1043:1;1040;1026:11;1020:18;1013:4;1000:11;996:22;984:10;976:5;971:3;967:15;954:91;1079:4;1073:11;1124:14;1121:1;1116:3;1101:38;1171:1;1162:7;1159:14;1156:2;;;1188:14;1183:3;1176:27;1156:2;829:390;;;;610:625;;355:882;;;;;;", - "deployedSourceMap": "355:882:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;915:42:12;911:1;905:8;901:57;990:14;987:1;984;971:34;1085:1;1082;1066:14;1063:1;1051:10;1046:3;1033:54;1121:16;1118:1;1115;1100:38;1166:1;1157:7;1154:14;1151:2;;;1181:16;1178:1;1171:27;1151:2;1223:16;1220:1;1213:27;1386:104;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1386:104:12;;;;;;;;;;;;;;;;;;;;;;;1262:118;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1262:118:12;;;;;;;;;;;;;;;;;;;;;;;;;;;1386:104;1452:7;1482:1;1475:8;;1386:104;:::o;1262:118::-;1333:7;1363:10;;;;;;;;;;;1356:17;;1262:118;:::o", - "source": "pragma solidity 0.4.23;\nimport \"./Proxy.sol\";\n\n\n/// @title Delegate Constructor Proxy - Generic proxy contract allows to execute all transactions applying the code of a master contract. It is possible to send along initialization data with the constructor.\n/// @author Stefan George - \n/// @author Richard Meissner - \ncontract DelegateConstructorProxy is Proxy {\n\n /// @dev Constructor function sets address of master copy contract.\n /// @param _masterCopy Master copy address.\n /// @param initializer Data used for a delegate call to initialize the contract.\n constructor(address _masterCopy, bytes initializer) Proxy(_masterCopy)\n public\n {\n if (initializer.length > 0) {\n // solium-disable-next-line security/no-inline-assembly\n assembly {\n let masterCopy := and(sload(0), 0xffffffffffffffffffffffffffffffffffffffff)\n let success := delegatecall(sub(gas, 10000), masterCopy, add(initializer, 0x20), mload(initializer), 0, 0)\n let ptr := mload(0x40)\n returndatacopy(ptr, 0, returndatasize)\n if eq(success, 0) { revert(ptr, returndatasize) }\n }\n }\n }\n}\n", + "bytecode": "0x608060405234801561001057600080fd5b5060405161026d38038061026d83398101806040528101908080519060200190929190805182019291905050508160008173ffffffffffffffffffffffffffffffffffffffff161415151561006457600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506000815111156100f15773ffffffffffffffffffffffffffffffffffffffff60005416600080835160208501846127105a03f46040513d6000823e60008214156100ed573d81fd5b5050505b505061016b806101026000396000f30060806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680634555d5c91461008b5780635c60da1b146100b6575b73ffffffffffffffffffffffffffffffffffffffff600054163660008037600080366000845af43d6000803e6000811415610086573d6000fd5b3d6000f35b34801561009757600080fd5b506100a061010d565b6040518082815260200191505060405180910390f35b3480156100c257600080fd5b506100cb610116565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60006002905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050905600a165627a7a723058205cd4a89651ca60d8b50982ec7e3fbdce37b95b9583ada7bf65fc3dad95a54f750029", + "deployedBytecode": "0x60806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680634555d5c91461008b5780635c60da1b146100b6575b73ffffffffffffffffffffffffffffffffffffffff600054163660008037600080366000845af43d6000803e6000811415610086573d6000fd5b3d6000f35b34801561009757600080fd5b506100a061010d565b6040518082815260200191505060405180910390f35b3480156100c257600080fd5b506100cb610116565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60006002905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050905600a165627a7a723058205cd4a89651ca60d8b50982ec7e3fbdce37b95b9583ada7bf65fc3dad95a54f750029", + "sourceMap": "355:882:0:-;;;610:625;8:9:-1;5:2;;;30:1;27;20:12;5:2;610:625:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;668:11;593:1:11;578:11;:16;;;;570:25;;;;;;;;618:11;605:10;;:24;;;;;;;;;;;;;;;;;;508:128;735:1:0;714:11;:18;:22;710:519;;;879:42;875:1;869:8;865:57;1043:1;1040;1026:11;1020:18;1013:4;1000:11;996:22;984:10;976:5;971:3;967:15;954:91;1079:4;1073:11;1124:14;1121:1;1116:3;1101:38;1171:1;1162:7;1159:14;1156:2;;;1188:14;1183:3;1176:27;1156:2;829:390;;;;610:625;;355:882;;;;;;", + "deployedSourceMap": "355:882:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;915:42:11;911:1;905:8;901:57;990:14;987:1;984;971:34;1085:1;1082;1066:14;1063:1;1051:10;1046:3;1033:54;1121:16;1118:1;1115;1100:38;1166:1;1157:7;1154:14;1151:2;;;1181:16;1178:1;1171:27;1151:2;1223:16;1220:1;1213:27;1386:104;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1386:104:11;;;;;;;;;;;;;;;;;;;;;;;1262:118;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1262:118:11;;;;;;;;;;;;;;;;;;;;;;;;;;;1386:104;1452:7;1482:1;1475:8;;1386:104;:::o;1262:118::-;1333:7;1363:10;;;;;;;;;;;1356:17;;1262:118;:::o", + "source": "pragma solidity 0.4.24;\nimport \"./Proxy.sol\";\n\n\n/// @title Delegate Constructor Proxy - Generic proxy contract allows to execute all transactions applying the code of a master contract. It is possible to send along initialization data with the constructor.\n/// @author Stefan George - \n/// @author Richard Meissner - \ncontract DelegateConstructorProxy is Proxy {\n\n /// @dev Constructor function sets address of master copy contract.\n /// @param _masterCopy Master copy address.\n /// @param initializer Data used for a delegate call to initialize the contract.\n constructor(address _masterCopy, bytes initializer) Proxy(_masterCopy)\n public\n {\n if (initializer.length > 0) {\n // solium-disable-next-line security/no-inline-assembly\n assembly {\n let masterCopy := and(sload(0), 0xffffffffffffffffffffffffffffffffffffffff)\n let success := delegatecall(sub(gas, 10000), masterCopy, add(initializer, 0x20), mload(initializer), 0, 0)\n let ptr := mload(0x40)\n returndatacopy(ptr, 0, returndatasize)\n if eq(success, 0) { revert(ptr, returndatasize) }\n }\n }\n }\n}\n", "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/DelegateConstructorProxy.sol", "ast": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/DelegateConstructorProxy.sol", @@ -71,7 +71,7 @@ "literals": [ "solidity", "0.4", - ".23" + ".24" ], "nodeType": "PragmaDirective", "src": "0:23:0" @@ -82,7 +82,7 @@ "id": 2, "nodeType": "ImportDirective", "scope": 24, - "sourceUnit": 1509, + "sourceUnit": 1569, "src": "24:21:0", "symbolAliases": [], "unitAlias": "" @@ -96,10 +96,10 @@ "id": 3, "name": "Proxy", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1508, + "referencedDeclaration": 1568, "src": "392:5:0", "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1508", + "typeIdentifier": "t_contract$_Proxy_$1568", "typeString": "contract Proxy" } }, @@ -109,7 +109,7 @@ } ], "contractDependencies": [ - 1508 + 1568 ], "contractKind": "contract", "documentation": "@title Delegate Constructor Proxy - Generic proxy contract allows to execute all transactions applying the code of a master contract. It is possible to send along initialization data with the constructor.\n @author Stefan George - \n @author Richard Meissner - ", @@ -117,7 +117,7 @@ "id": 23, "linearizedBaseContracts": [ 23, - 1508 + 1568 ], "name": "DelegateConstructorProxy", "nodeType": "ContractDefinition", @@ -264,10 +264,10 @@ "name": "Proxy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1508, + "referencedDeclaration": 1568, "src": "662:5:0", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Proxy_$1508_$", + "typeIdentifier": "t_type$_t_contract$_Proxy_$1568_$", "typeString": "type(contract Proxy)" } }, @@ -371,7 +371,7 @@ "literals": [ "solidity", "0.4", - ".23" + ".24" ], "nodeType": "PragmaDirective", "src": "0:23:0" @@ -382,7 +382,7 @@ "id": 2, "nodeType": "ImportDirective", "scope": 24, - "sourceUnit": 1509, + "sourceUnit": 1569, "src": "24:21:0", "symbolAliases": [], "unitAlias": "" @@ -396,10 +396,10 @@ "id": 3, "name": "Proxy", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1508, + "referencedDeclaration": 1568, "src": "392:5:0", "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1508", + "typeIdentifier": "t_contract$_Proxy_$1568", "typeString": "contract Proxy" } }, @@ -409,7 +409,7 @@ } ], "contractDependencies": [ - 1508 + 1568 ], "contractKind": "contract", "documentation": "@title Delegate Constructor Proxy - Generic proxy contract allows to execute all transactions applying the code of a master contract. It is possible to send along initialization data with the constructor.\n @author Stefan George - \n @author Richard Meissner - ", @@ -417,7 +417,7 @@ "id": 23, "linearizedBaseContracts": [ 23, - 1508 + 1568 ], "name": "DelegateConstructorProxy", "nodeType": "ContractDefinition", @@ -564,10 +564,10 @@ "name": "Proxy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1508, + "referencedDeclaration": 1568, "src": "662:5:0", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Proxy_$1508_$", + "typeIdentifier": "t_type$_t_contract$_Proxy_$1568_$", "typeString": "type(contract Proxy)" } }, @@ -658,9 +658,9 @@ }, "compiler": { "name": "solc", - "version": "0.4.23+commit.124ca40d.Emscripten.clang" + "version": "0.4.24+commit.e67f0147.Emscripten.clang" }, "networks": {}, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-10T10:43:07.891Z" + "updatedAt": "2018-05-27T11:12:45.574Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/ERC20Token.json b/safe-contracts/build/contracts/ERC20Token.json new file mode 100644 index 00000000..406c841d --- /dev/null +++ b/safe-contracts/build/contracts/ERC20Token.json @@ -0,0 +1,1799 @@ +{ + "contractName": "ERC20Token", + "abi": [ + { + "constant": true, + "inputs": [], + "name": "totalSupply", + "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" + }, + { + "constant": true, + "inputs": [ + { + "name": "_owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "name": "balance", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_to", + "type": "address" + }, + { + "name": "_value", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "name": "success", + "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": "success", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_spender", + "type": "address" + }, + { + "name": "_value", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "name": "success", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "_owner", + "type": "address" + }, + { + "name": "_spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "name": "remaining", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "sourceMap": "", + "deployedSourceMap": "", + "source": "pragma solidity ^0.4.23;\n\n// Abstract contract for the full ERC 20 Token standard\n// https://github.com/ethereum/EIPs/issues/20\n\ncontract ERC20Token {\n /* This is a slight change to the ERC20 base standard.\n function totalSupply() constant returns (uint256 supply);\n is replaced with:\n uint256 public totalSupply;\n This automatically creates a getter function for the totalSupply.\n This is moved to the base contract since public getter functions are not\n currently recognised as an implementation of the matching abstract\n function by the compiler.\n */\n /// total amount of tokens\n uint256 public totalSupply;\n\n /// @param _owner The address from which the balance will be retrieved\n /// @return The balance\n function balanceOf(address _owner) public constant returns (uint256 balance);\n\n /// @notice send `_value` token to `_to` from `msg.sender`\n /// @param _to The address of the recipient\n /// @param _value The amount of token to be transferred\n /// @return Whether the transfer was successful or not\n function transfer(address _to, uint256 _value) public returns (bool success);\n\n /// @notice send `_value` token to `_to` from `_from` on the condition it is approved by `_from`\n /// @param _from The address of the sender\n /// @param _to The address of the recipient\n /// @param _value The amount of token to be transferred\n /// @return Whether the transfer was successful or not\n function transferFrom(address _from, address _to, uint256 _value) public returns (bool success);\n\n /// @notice `msg.sender` approves `_spender` to spend `_value` tokens\n /// @param _spender The address of the account able to transfer the tokens\n /// @param _value The amount of tokens to be approved for transfer\n /// @return Whether the approval was successful or not\n function approve(address _spender, uint256 _value) public returns (bool success);\n\n /// @param _owner The address of the account owning tokens\n /// @param _spender The address of the account able to transfer the tokens\n /// @return Amount of remaining tokens allowed to spent\n function allowance(address _owner, address _spender) public constant returns (uint256 remaining);\n\n event Transfer(address indexed _from, address indexed _to, uint256 _value);\n event Approval(address indexed _owner, address indexed _spender, uint256 _value);\n}", + "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/interfaces/ERC20Token.sol", + "ast": { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/interfaces/ERC20Token.sol", + "exportedSymbols": { + "ERC20Token": [ + 1685 + ] + }, + "id": 1686, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1621, + "literals": [ + "solidity", + "^", + "0.4", + ".23" + ], + "nodeType": "PragmaDirective", + "src": "0:24:14" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": false, + "id": 1685, + "linearizedBaseContracts": [ + 1685 + ], + "name": "ERC20Token", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "id": 1623, + "name": "totalSupply", + "nodeType": "VariableDeclaration", + "scope": 1685, + "src": "616:26:14", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1622, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "616:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "public" + }, + { + "body": null, + "documentation": "@param _owner The address from which the balance will be retrieved\n @return The balance", + "id": 1630, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "balanceOf", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1626, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1625, + "name": "_owner", + "nodeType": "VariableDeclaration", + "scope": 1630, + "src": "771:14:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1624, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "771:7:14", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "770:16:14" + }, + "payable": false, + "returnParameters": { + "id": 1629, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1628, + "name": "balance", + "nodeType": "VariableDeclaration", + "scope": 1630, + "src": "812:15:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1627, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "812:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "811:17:14" + }, + "scope": 1685, + "src": "752:77:14", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": null, + "documentation": "@notice send `_value` token to `_to` from `msg.sender`\n @param _to The address of the recipient\n @param _value The amount of token to be transferred\n @return Whether the transfer was successful or not", + "id": 1639, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "transfer", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1635, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1632, + "name": "_to", + "nodeType": "VariableDeclaration", + "scope": 1639, + "src": "1083:11:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1631, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1083:7:14", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1634, + "name": "_value", + "nodeType": "VariableDeclaration", + "scope": 1639, + "src": "1096:14:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1633, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1096:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1082:29:14" + }, + "payable": false, + "returnParameters": { + "id": 1638, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1637, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 1639, + "src": "1128:12:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1636, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1128:4:14", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1127:14:14" + }, + "scope": 1685, + "src": "1065:77:14", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": null, + "documentation": "@notice send `_value` token to `_to` from `_from` on the condition it is approved by `_from`\n @param _from The address of the sender\n @param _to The address of the recipient\n @param _value The amount of token to be transferred\n @return Whether the transfer was successful or not", + "id": 1650, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "transferFrom", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1646, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1641, + "name": "_from", + "nodeType": "VariableDeclaration", + "scope": 1650, + "src": "1485:13:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1640, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1485:7:14", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1643, + "name": "_to", + "nodeType": "VariableDeclaration", + "scope": 1650, + "src": "1500:11:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1642, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1500:7:14", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1645, + "name": "_value", + "nodeType": "VariableDeclaration", + "scope": 1650, + "src": "1513:14:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1644, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1513:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1484:44:14" + }, + "payable": false, + "returnParameters": { + "id": 1649, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1648, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 1650, + "src": "1545:12:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1647, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1545:4:14", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1544:14:14" + }, + "scope": 1685, + "src": "1463:96:14", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": null, + "documentation": "@notice `msg.sender` approves `_spender` to spend `_value` tokens\n @param _spender The address of the account able to transfer the tokens\n @param _value The amount of tokens to be approved for transfer\n @return Whether the approval was successful or not", + "id": 1659, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "approve", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1655, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1652, + "name": "_spender", + "nodeType": "VariableDeclaration", + "scope": 1659, + "src": "1865:16:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1651, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1865:7:14", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1654, + "name": "_value", + "nodeType": "VariableDeclaration", + "scope": 1659, + "src": "1883:14:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1653, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1883:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1864:34:14" + }, + "payable": false, + "returnParameters": { + "id": 1658, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1657, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 1659, + "src": "1915:12:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1656, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1915:4:14", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1914:14:14" + }, + "scope": 1685, + "src": "1848:81:14", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": null, + "documentation": "@param _owner The address of the account owning tokens\n @param _spender The address of the account able to transfer the tokens\n @return Amount of remaining tokens allowed to spent", + "id": 1668, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "allowance", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1664, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1661, + "name": "_owner", + "nodeType": "VariableDeclaration", + "scope": 1668, + "src": "2156:14:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1660, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2156:7:14", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1663, + "name": "_spender", + "nodeType": "VariableDeclaration", + "scope": 1668, + "src": "2172:16:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1662, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2172:7:14", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2155:34:14" + }, + "payable": false, + "returnParameters": { + "id": 1667, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1666, + "name": "remaining", + "nodeType": "VariableDeclaration", + "scope": 1668, + "src": "2215:17:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1665, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2215:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2214:19:14" + }, + "scope": 1685, + "src": "2137:97:14", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "anonymous": false, + "documentation": null, + "id": 1676, + "name": "Transfer", + "nodeType": "EventDefinition", + "parameters": { + "id": 1675, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1670, + "indexed": true, + "name": "_from", + "nodeType": "VariableDeclaration", + "scope": 1676, + "src": "2255:21:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1669, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2255:7:14", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1672, + "indexed": true, + "name": "_to", + "nodeType": "VariableDeclaration", + "scope": 1676, + "src": "2278:19:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1671, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2278:7:14", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1674, + "indexed": false, + "name": "_value", + "nodeType": "VariableDeclaration", + "scope": 1676, + "src": "2299:14:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1673, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2299:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2254:60:14" + }, + "src": "2240:75:14" + }, + { + "anonymous": false, + "documentation": null, + "id": 1684, + "name": "Approval", + "nodeType": "EventDefinition", + "parameters": { + "id": 1683, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1678, + "indexed": true, + "name": "_owner", + "nodeType": "VariableDeclaration", + "scope": 1684, + "src": "2335:22:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1677, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2335:7:14", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1680, + "indexed": true, + "name": "_spender", + "nodeType": "VariableDeclaration", + "scope": 1684, + "src": "2359:24:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1679, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2359:7:14", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1682, + "indexed": false, + "name": "_value", + "nodeType": "VariableDeclaration", + "scope": 1684, + "src": "2385:14:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1681, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2385:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2334:66:14" + }, + "src": "2320:81:14" + } + ], + "scope": 1686, + "src": "129:2274:14" + } + ], + "src": "0:2403:14" + }, + "legacyAST": { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/interfaces/ERC20Token.sol", + "exportedSymbols": { + "ERC20Token": [ + 1685 + ] + }, + "id": 1686, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1621, + "literals": [ + "solidity", + "^", + "0.4", + ".23" + ], + "nodeType": "PragmaDirective", + "src": "0:24:14" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": false, + "id": 1685, + "linearizedBaseContracts": [ + 1685 + ], + "name": "ERC20Token", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "id": 1623, + "name": "totalSupply", + "nodeType": "VariableDeclaration", + "scope": 1685, + "src": "616:26:14", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1622, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "616:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "public" + }, + { + "body": null, + "documentation": "@param _owner The address from which the balance will be retrieved\n @return The balance", + "id": 1630, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "balanceOf", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1626, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1625, + "name": "_owner", + "nodeType": "VariableDeclaration", + "scope": 1630, + "src": "771:14:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1624, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "771:7:14", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "770:16:14" + }, + "payable": false, + "returnParameters": { + "id": 1629, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1628, + "name": "balance", + "nodeType": "VariableDeclaration", + "scope": 1630, + "src": "812:15:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1627, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "812:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "811:17:14" + }, + "scope": 1685, + "src": "752:77:14", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": null, + "documentation": "@notice send `_value` token to `_to` from `msg.sender`\n @param _to The address of the recipient\n @param _value The amount of token to be transferred\n @return Whether the transfer was successful or not", + "id": 1639, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "transfer", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1635, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1632, + "name": "_to", + "nodeType": "VariableDeclaration", + "scope": 1639, + "src": "1083:11:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1631, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1083:7:14", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1634, + "name": "_value", + "nodeType": "VariableDeclaration", + "scope": 1639, + "src": "1096:14:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1633, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1096:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1082:29:14" + }, + "payable": false, + "returnParameters": { + "id": 1638, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1637, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 1639, + "src": "1128:12:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1636, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1128:4:14", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1127:14:14" + }, + "scope": 1685, + "src": "1065:77:14", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": null, + "documentation": "@notice send `_value` token to `_to` from `_from` on the condition it is approved by `_from`\n @param _from The address of the sender\n @param _to The address of the recipient\n @param _value The amount of token to be transferred\n @return Whether the transfer was successful or not", + "id": 1650, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "transferFrom", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1646, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1641, + "name": "_from", + "nodeType": "VariableDeclaration", + "scope": 1650, + "src": "1485:13:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1640, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1485:7:14", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1643, + "name": "_to", + "nodeType": "VariableDeclaration", + "scope": 1650, + "src": "1500:11:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1642, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1500:7:14", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1645, + "name": "_value", + "nodeType": "VariableDeclaration", + "scope": 1650, + "src": "1513:14:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1644, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1513:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1484:44:14" + }, + "payable": false, + "returnParameters": { + "id": 1649, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1648, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 1650, + "src": "1545:12:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1647, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1545:4:14", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1544:14:14" + }, + "scope": 1685, + "src": "1463:96:14", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": null, + "documentation": "@notice `msg.sender` approves `_spender` to spend `_value` tokens\n @param _spender The address of the account able to transfer the tokens\n @param _value The amount of tokens to be approved for transfer\n @return Whether the approval was successful or not", + "id": 1659, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "approve", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1655, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1652, + "name": "_spender", + "nodeType": "VariableDeclaration", + "scope": 1659, + "src": "1865:16:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1651, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1865:7:14", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1654, + "name": "_value", + "nodeType": "VariableDeclaration", + "scope": 1659, + "src": "1883:14:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1653, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1883:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1864:34:14" + }, + "payable": false, + "returnParameters": { + "id": 1658, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1657, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 1659, + "src": "1915:12:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1656, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1915:4:14", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1914:14:14" + }, + "scope": 1685, + "src": "1848:81:14", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": null, + "documentation": "@param _owner The address of the account owning tokens\n @param _spender The address of the account able to transfer the tokens\n @return Amount of remaining tokens allowed to spent", + "id": 1668, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "allowance", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1664, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1661, + "name": "_owner", + "nodeType": "VariableDeclaration", + "scope": 1668, + "src": "2156:14:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1660, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2156:7:14", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1663, + "name": "_spender", + "nodeType": "VariableDeclaration", + "scope": 1668, + "src": "2172:16:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1662, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2172:7:14", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2155:34:14" + }, + "payable": false, + "returnParameters": { + "id": 1667, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1666, + "name": "remaining", + "nodeType": "VariableDeclaration", + "scope": 1668, + "src": "2215:17:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1665, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2215:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2214:19:14" + }, + "scope": 1685, + "src": "2137:97:14", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "anonymous": false, + "documentation": null, + "id": 1676, + "name": "Transfer", + "nodeType": "EventDefinition", + "parameters": { + "id": 1675, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1670, + "indexed": true, + "name": "_from", + "nodeType": "VariableDeclaration", + "scope": 1676, + "src": "2255:21:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1669, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2255:7:14", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1672, + "indexed": true, + "name": "_to", + "nodeType": "VariableDeclaration", + "scope": 1676, + "src": "2278:19:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1671, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2278:7:14", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1674, + "indexed": false, + "name": "_value", + "nodeType": "VariableDeclaration", + "scope": 1676, + "src": "2299:14:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1673, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2299:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2254:60:14" + }, + "src": "2240:75:14" + }, + { + "anonymous": false, + "documentation": null, + "id": 1684, + "name": "Approval", + "nodeType": "EventDefinition", + "parameters": { + "id": 1683, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1678, + "indexed": true, + "name": "_owner", + "nodeType": "VariableDeclaration", + "scope": 1684, + "src": "2335:22:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1677, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2335:7:14", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1680, + "indexed": true, + "name": "_spender", + "nodeType": "VariableDeclaration", + "scope": 1684, + "src": "2359:24:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1679, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2359:7:14", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1682, + "indexed": false, + "name": "_value", + "nodeType": "VariableDeclaration", + "scope": 1684, + "src": "2385:14:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1681, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2385:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2334:66:14" + }, + "src": "2320:81:14" + } + ], + "scope": 1686, + "src": "129:2274:14" + } + ], + "src": "0:2403:14" + }, + "compiler": { + "name": "solc", + "version": "0.4.24+commit.e67f0147.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "2.0.0", + "updatedAt": "2018-05-27T11:12:45.584Z" +} \ No newline at end of file diff --git a/safe-contracts/build/contracts/Enum.json b/safe-contracts/build/contracts/Enum.json index 432757f6..94e98a6e 100644 --- a/safe-contracts/build/contracts/Enum.json +++ b/safe-contracts/build/contracts/Enum.json @@ -1,31 +1,31 @@ { "contractName": "Enum", "abi": [], - "bytecode": "0x6080604052348015600f57600080fd5b50603580601d6000396000f3006080604052600080fd00a165627a7a72305820346c40fd38e691d9042d78bf7c33e05e8eafc3767b153318d8f2a9f5daf08bcf0029", - "deployedBytecode": "0x6080604052600080fd00a165627a7a72305820346c40fd38e691d9042d78bf7c33e05e8eafc3767b153318d8f2a9f5daf08bcf0029", - "sourceMap": "115:95:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;115:95:0;;;;;;;", - "deployedSourceMap": "115:95:0:-;;;;;", - "source": "pragma solidity 0.4.23;\n\n\n/// @title Enum - Collection of enums\n/// @author Richard Meissner - \ncontract Enum {\n enum Operation {\n Call,\n DelegateCall,\n Create\n }\n}\n", + "bytecode": "0x6080604052348015600f57600080fd5b50603580601d6000396000f3006080604052600080fd00a165627a7a72305820641ab8b295edfaa2b1c8a8e0ae7d17ea2f4c8b95ea27e45d8947ed9a4799ca1f0029", + "deployedBytecode": "0x6080604052600080fd00a165627a7a72305820641ab8b295edfaa2b1c8a8e0ae7d17ea2f4c8b95ea27e45d8947ed9a4799ca1f0029", + "sourceMap": "115:95:1:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;115:95:1;;;;;;;", + "deployedSourceMap": "115:95:1:-;;;;;", + "source": "pragma solidity 0.4.24;\n\n\n/// @title Enum - Collection of enums\n/// @author Richard Meissner - \ncontract Enum {\n enum Operation {\n Call,\n DelegateCall,\n Create\n }\n}\n", "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Enum.sol", "ast": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Enum.sol", "exportedSymbols": { "Enum": [ - 6 + 30 ] }, - "id": 7, + "id": 31, "nodeType": "SourceUnit", "nodes": [ { - "id": 1, + "id": 25, "literals": [ "solidity", "0.4", - ".23" + ".24" ], "nodeType": "PragmaDirective", - "src": "0:23:0" + "src": "0:23:1" }, { "baseContracts": [], @@ -33,66 +33,66 @@ "contractKind": "contract", "documentation": "@title Enum - Collection of enums\n @author Richard Meissner - ", "fullyImplemented": true, - "id": 6, + "id": 30, "linearizedBaseContracts": [ - 6 + 30 ], "name": "Enum", "nodeType": "ContractDefinition", "nodes": [ { "canonicalName": "Enum.Operation", - "id": 5, + "id": 29, "members": [ { - "id": 2, + "id": 26, "name": "Call", "nodeType": "EnumValue", - "src": "160:4:0" + "src": "160:4:1" }, { - "id": 3, + "id": 27, "name": "DelegateCall", "nodeType": "EnumValue", - "src": "174:12:0" + "src": "174:12:1" }, { - "id": 4, + "id": 28, "name": "Create", "nodeType": "EnumValue", - "src": "196:6:0" + "src": "196:6:1" } ], "name": "Operation", "nodeType": "EnumDefinition", - "src": "135:73:0" + "src": "135:73:1" } ], - "scope": 7, - "src": "115:95:0" + "scope": 31, + "src": "115:95:1" } ], - "src": "0:211:0" + "src": "0:211:1" }, "legacyAST": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Enum.sol", "exportedSymbols": { "Enum": [ - 6 + 30 ] }, - "id": 7, + "id": 31, "nodeType": "SourceUnit", "nodes": [ { - "id": 1, + "id": 25, "literals": [ "solidity", "0.4", - ".23" + ".24" ], "nodeType": "PragmaDirective", - "src": "0:23:0" + "src": "0:23:1" }, { "baseContracts": [], @@ -100,52 +100,52 @@ "contractKind": "contract", "documentation": "@title Enum - Collection of enums\n @author Richard Meissner - ", "fullyImplemented": true, - "id": 6, + "id": 30, "linearizedBaseContracts": [ - 6 + 30 ], "name": "Enum", "nodeType": "ContractDefinition", "nodes": [ { "canonicalName": "Enum.Operation", - "id": 5, + "id": 29, "members": [ { - "id": 2, + "id": 26, "name": "Call", "nodeType": "EnumValue", - "src": "160:4:0" + "src": "160:4:1" }, { - "id": 3, + "id": 27, "name": "DelegateCall", "nodeType": "EnumValue", - "src": "174:12:0" + "src": "174:12:1" }, { - "id": 4, + "id": 28, "name": "Create", "nodeType": "EnumValue", - "src": "196:6:0" + "src": "196:6:1" } ], "name": "Operation", "nodeType": "EnumDefinition", - "src": "135:73:0" + "src": "135:73:1" } ], - "scope": 7, - "src": "115:95:0" + "scope": 31, + "src": "115:95:1" } ], - "src": "0:211:0" + "src": "0:211:1" }, "compiler": { "name": "solc", - "version": "0.4.23+commit.124ca40d.Emscripten.clang" + "version": "0.4.24+commit.e67f0147.Emscripten.clang" }, "networks": {}, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-16T10:51:14.736Z" + "updatedAt": "2018-05-27T11:12:45.575Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/GnosisSafe.json b/safe-contracts/build/contracts/GnosisSafe.json index b132687a..26770b8b 100644 --- a/safe-contracts/build/contracts/GnosisSafe.json +++ b/safe-contracts/build/contracts/GnosisSafe.json @@ -301,62 +301,62 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50612100806100206000396000f3006080604052600436106100e6576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632f54bf6e146100e8578063468721a714610143578063610b5925146101fb57806385e332cd1461023e57806386040aa9146102955780638cff635514610305578063a04222e11461035c578063a0e67e2b14610435578063a3f4df7e146104a1578063b2494df314610531578063b7f3358d1461059d578063b91a667f146105cd578063e009cfde1461061d578063e318b52b14610680578063e75235b814610703578063ffa1ad7414610734575b005b3480156100f457600080fd5b50610129600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107c4565b604051808215151515815260200191505060405180910390f35b34801561014f57600080fd5b506101e1600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190505050610846565b604051808215151515815260200191505060405180910390f35b34801561020757600080fd5b5061023c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506108e2565b005b34801561024a57600080fd5b50610253610b5b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156102a157600080fd5b50610303600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050610b60565b005b34801561031157600080fd5b5061031a610de6565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561036857600080fd5b5061043360048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803560ff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050610deb565b005b34801561044157600080fd5b5061044a610e05565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561048d578082015181840152602081019050610472565b505050509050019250505060405180910390f35b3480156104ad57600080fd5b506104b6610fa0565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104f65780820151818401526020810190506104db565b50505050905090810190601f1680156105235780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561053d57600080fd5b50610546610fd9565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561058957808201518184015260208101905061056e565b505050509050019250505060405180910390f35b3480156105a957600080fd5b506105cb600480360381019080803560ff16906020019092919050505061127c565b005b3480156105d957600080fd5b5061061b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff1690602001909291905050506112fb565b005b34801561062957600080fd5b5061067e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506115b3565b005b34801561068c57600080fd5b50610701600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506117e2565b005b34801561070f57600080fd5b50610718611b77565b604051808260ff1660ff16815260200191505060405180910390f35b34801561074057600080fd5b50610749611b8e565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561078957808201518184015260208101905061076e565b50505050905090810190601f1680156107b65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b600080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b6000806000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515156108cb57600080fd5b6108d8858585855a611bc7565b9050949350505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561091c57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141580156109705750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b151561097b57600080fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156109fe57600080fd5b600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600181565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610b9a57600080fd5b8060ff1660016002540310151515610bb157600080fd5b8173ffffffffffffffffffffffffffffffffffffffff16600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610c4a57600080fd5b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600260008154809291906001900391905055508060ff16600360009054906101000a900460ff1660ff16141515610de157610de08161127c565b5b505050565b600181565b610df58484611cc4565b610dff8282611f54565b50505050565b606080600080600254604051908082528060200260200182016040528015610e3c5781602001602082028038833980820191505090505b5092506000915060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515610f9757808383815181101515610eec57fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508180600101925050610ea7565b82935050505090565b6040805190810160405280600e81526020017f4d6f64756c65204d616e6167657200000000000000000000000000000000000081525081565b6060600080606060009250600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415156110eb576000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508280600101935050611047565b8260405190808252806020026020018201604052801561111a5781602001602082028038833980820191505090505b50905060009250600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515611273578181848151811015156111c957fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508280600101935050611184565b80935050505090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156112b657600080fd5b6002548160ff16111515156112ca57600080fd5b60018160ff16101515156112dd57600080fd5b80600360006101000a81548160ff021916908360ff16021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561133557600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff16141580156113895750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b151561139457600080fd5b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561141857600080fd5b60016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506002600081548092919060010191905055508060ff16600360009054906101000a900460ff1660ff161415156115af576115ae8161127c565b5b5050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156115ed57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561168557600080fd5b6000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561181c57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141580156118705750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b151561187b57600080fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156118ff57600080fd5b8173ffffffffffffffffffffffffffffffffffffffff16600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561199857600080fd5b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b6000600360009054906101000a900460ff16905090565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b60008060006002811115611bd757fe5b846002811115611be357fe5b1415611bfc57611bf587878786612092565b9150611cba565b60016002811115611c0957fe5b846002811115611c1557fe5b1415611c2d57611c268786856120ab565b9150611cb9565b611c36856120c2565b905060008173ffffffffffffffffffffffffffffffffffffffff16141591507f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b5b5095945050505050565b600080600080600360009054906101000a900460ff1660ff16141515611ce957600080fd5b84518460ff1611151515611cfc57600080fd5b60018460ff1610151515611d0f57600080fd5b60019250600091505b8451821015611eac578482815181101515611d2f57fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff1614158015611d8f5750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1515611d9a57600080fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611e1e57600080fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508092508180600101925050611d18565b60018060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550845160028190555083600360006101000a81548160ff021916908360ff1602179055505050505050565b6000806000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611fd857600080fd5b6001600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008273ffffffffffffffffffffffffffffffffffffffff1614151561208e5761208282825a6120ab565b151561208d57600080fd5b5b5050565b6000806000845160208601878987f19050949350505050565b60008060008451602086018786f490509392505050565b60008151602083016000f090509190505600a165627a7a723058208d0d6dcd63a5e2ddebea816d26f7dc74ebbf2ef27fc9c39f932838e0e2d2710f0029", - "deployedBytecode": "0x6080604052600436106100e6576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632f54bf6e146100e8578063468721a714610143578063610b5925146101fb57806385e332cd1461023e57806386040aa9146102955780638cff635514610305578063a04222e11461035c578063a0e67e2b14610435578063a3f4df7e146104a1578063b2494df314610531578063b7f3358d1461059d578063b91a667f146105cd578063e009cfde1461061d578063e318b52b14610680578063e75235b814610703578063ffa1ad7414610734575b005b3480156100f457600080fd5b50610129600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107c4565b604051808215151515815260200191505060405180910390f35b34801561014f57600080fd5b506101e1600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190505050610846565b604051808215151515815260200191505060405180910390f35b34801561020757600080fd5b5061023c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506108e2565b005b34801561024a57600080fd5b50610253610b5b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156102a157600080fd5b50610303600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050610b60565b005b34801561031157600080fd5b5061031a610de6565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561036857600080fd5b5061043360048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803560ff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050610deb565b005b34801561044157600080fd5b5061044a610e05565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561048d578082015181840152602081019050610472565b505050509050019250505060405180910390f35b3480156104ad57600080fd5b506104b6610fa0565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104f65780820151818401526020810190506104db565b50505050905090810190601f1680156105235780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561053d57600080fd5b50610546610fd9565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561058957808201518184015260208101905061056e565b505050509050019250505060405180910390f35b3480156105a957600080fd5b506105cb600480360381019080803560ff16906020019092919050505061127c565b005b3480156105d957600080fd5b5061061b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff1690602001909291905050506112fb565b005b34801561062957600080fd5b5061067e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506115b3565b005b34801561068c57600080fd5b50610701600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506117e2565b005b34801561070f57600080fd5b50610718611b77565b604051808260ff1660ff16815260200191505060405180910390f35b34801561074057600080fd5b50610749611b8e565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561078957808201518184015260208101905061076e565b50505050905090810190601f1680156107b65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b600080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b6000806000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515156108cb57600080fd5b6108d8858585855a611bc7565b9050949350505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561091c57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141580156109705750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b151561097b57600080fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156109fe57600080fd5b600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600181565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610b9a57600080fd5b8060ff1660016002540310151515610bb157600080fd5b8173ffffffffffffffffffffffffffffffffffffffff16600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610c4a57600080fd5b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600260008154809291906001900391905055508060ff16600360009054906101000a900460ff1660ff16141515610de157610de08161127c565b5b505050565b600181565b610df58484611cc4565b610dff8282611f54565b50505050565b606080600080600254604051908082528060200260200182016040528015610e3c5781602001602082028038833980820191505090505b5092506000915060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515610f9757808383815181101515610eec57fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508180600101925050610ea7565b82935050505090565b6040805190810160405280600e81526020017f4d6f64756c65204d616e6167657200000000000000000000000000000000000081525081565b6060600080606060009250600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415156110eb576000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508280600101935050611047565b8260405190808252806020026020018201604052801561111a5781602001602082028038833980820191505090505b50905060009250600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515611273578181848151811015156111c957fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508280600101935050611184565b80935050505090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156112b657600080fd5b6002548160ff16111515156112ca57600080fd5b60018160ff16101515156112dd57600080fd5b80600360006101000a81548160ff021916908360ff16021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561133557600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff16141580156113895750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b151561139457600080fd5b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561141857600080fd5b60016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506002600081548092919060010191905055508060ff16600360009054906101000a900460ff1660ff161415156115af576115ae8161127c565b5b5050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156115ed57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561168557600080fd5b6000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561181c57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141580156118705750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b151561187b57600080fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156118ff57600080fd5b8173ffffffffffffffffffffffffffffffffffffffff16600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561199857600080fd5b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b6000600360009054906101000a900460ff16905090565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b60008060006002811115611bd757fe5b846002811115611be357fe5b1415611bfc57611bf587878786612092565b9150611cba565b60016002811115611c0957fe5b846002811115611c1557fe5b1415611c2d57611c268786856120ab565b9150611cb9565b611c36856120c2565b905060008173ffffffffffffffffffffffffffffffffffffffff16141591507f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b5b5095945050505050565b600080600080600360009054906101000a900460ff1660ff16141515611ce957600080fd5b84518460ff1611151515611cfc57600080fd5b60018460ff1610151515611d0f57600080fd5b60019250600091505b8451821015611eac578482815181101515611d2f57fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff1614158015611d8f5750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1515611d9a57600080fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611e1e57600080fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508092508180600101925050611d18565b60018060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550845160028190555083600360006101000a81548160ff021916908360ff1602179055505050505050565b6000806000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611fd857600080fd5b6001600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008273ffffffffffffffffffffffffffffffffffffffff1614151561208e5761208282825a6120ab565b151561208d57600080fd5b5b5050565b6000806000845160208601878987f19050949350505050565b60008060008451602086018786f490509392505050565b60008151602083016000f090509190505600a165627a7a723058208d0d6dcd63a5e2ddebea816d26f7dc74ebbf2ef27fc9c39f932838e0e2d2710f0029", - "sourceMap": "322:674:1:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;322:674:1;;;;;;;", - "deployedSourceMap": "322:674:1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4841:129:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4841:129:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2522:377:6;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2522:377:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1235:391;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1235:391:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;499:55;;8:9:-1;5:2;;;30:1;27;20:12;5:2;499:55:6;;;;;;;;;;;;;;;;;;;;;;;;;;;2776:573:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2776:573:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;287:54;;8:9:-1;5:2;;;30:1;27;20:12;5:2;287:54:7;;;;;;;;;;;;;;;;;;;;;;;;;;;693:301:1;;8:9:-1;5:2;;;30:1;27;20:12;5:2;693:301:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5052:458:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5052:458:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;5052:458:7;;;;;;;;;;;;;;;;;401:46:6;;8:9:-1;5:2;;;30:1;27;20:12;5:2;401:46:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;401:46:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4423:738;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4423:738:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;4423:738:6;;;;;;;;;;;;;;;;;4398:318:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4398:318:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;1906:528;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1906:528:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1887:299:6;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1887:299:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3683:526:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3683:526:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4722:113;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4722:113:7;;;;;;;;;;;;;;;;;;;;;;;;;;;453:40:6;;8:9:-1;5:2;;;30:1;27;20:12;5:2;453:40:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;453:40:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4841:129:7;4918:4;4962:1;4945:6;:13;4952:5;4945:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;;4938:25;;4841:129;;;:::o;2522:377:6:-;2654:12;2762:1;2739:7;:19;2747:10;2739:19;;;;;;;;;;;;;;;;;;;;;;;;;:24;;;;2731:33;;;;;;;;2846:46;2854:2;2858:5;2865:4;2871:9;2882;2846:7;:46::i;:::-;2836:56;;2522:377;;;;;;:::o;1235:391::-;244:4:8;222:27;;:10;:27;;;214:36;;;;;;;;1401:1:6;1390:6;1382:20;;;;:59;;;;;550:3;1406:35;;1414:6;1406:35;;;;1382:59;1374:68;;;;;;;;1520:1;1501:7;:15;1509:6;1501:15;;;;;;;;;;;;;;;;;;;;;;;;;:20;;;1493:29;;;;;;;;1550:7;:25;550:3;1550:25;;;;;;;;;;;;;;;;;;;;;;;;;1532:7;:15;1540:6;1532:15;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;1613:6;1585:7;:25;550:3;1585:25;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;1235:391;:::o;499:55::-;550:3;499:55;:::o;2776:573:7:-;244:4:8;222:27;;:10;:27;;;214:36;;;;;;;;3000:10:7;2982:28;;2995:1;2982:10;;:14;:28;;2974:37;;;;;;;;3112:5;3091:26;;:6;:17;3098:9;3091:17;;;;;;;;;;;;;;;;;;;;;;;;;:26;;;3083:35;;;;;;;;3148:6;:13;3155:5;3148:13;;;;;;;;;;;;;;;;;;;;;;;;;3128:6;:17;3135:9;3128:17;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;3187:1;3171:6;:13;3178:5;3171:13;;;;;;;;;;;;;;;;:17;;;;;;;;;;;;;;;;;;3198:10;;:12;;;;;;;;;;;;;;3291:10;3278:23;;:9;;;;;;;;;;;:23;;;;3274:68;;;3315:27;3331:10;3315:15;:27::i;:::-;3274:68;2776:573;;;:::o;287:54::-;337:3;287:54;:::o;693:301:1:-;798:32;810:7;819:10;798:11;:32::i;:::-;965:22;978:2;982:4;965:12;:22::i;:::-;693:301;;;;:::o;5052:458:7:-;5118:9;5143:22;5237:13;5264:20;5182:10;;5168:25;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;5168:25:7;;;;5143:50;;5253:1;5237:17;;5287:6;:23;337:3;5287:23;;;;;;;;;;;;;;;;;;;;;;;;;5264:46;;5320:162;337:3;5326:31;;:12;:31;;;;5320:162;;;5388:12;5373:5;5379;5373:12;;;;;;;;;;;;;;;;;:27;;;;;;;;;;;5429:6;:20;5436:12;5429:20;;;;;;;;;;;;;;;;;;;;;;;;;5414:35;;5463:8;;;;;;;5320:162;;;5498:5;5491:12;;5052:458;;;;:::o;401:46:6:-;;;;;;;;;;;;;;;;;;;;:::o;4423:738::-;4490:9;4549:19;4582:21;4782:22;4571:1;4549:23;;4606:7;:25;550:3;4606:25;;;;;;;;;;;;;;;;;;;;;;;;;4582:49;;4641:132;550:3;4647:33;;:13;:33;;;;4641:132;;;4712:7;:22;4720:13;4712:22;;;;;;;;;;;;;;;;;;;;;;;;;4696:38;;4748:14;;;;;;;4641:132;;;4821:11;4807:26;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;4807:26:6;;;;4782:51;;4891:1;4877:15;;4918:7;:25;550:3;4918:25;;;;;;;;;;;;;;;;;;;;;;;;;4902:41;;4953:180;550:3;4959:33;;:13;:33;;;;4953:180;;;5029:13;5008:5;5014:11;5008:18;;;;;;;;;;;;;;;;;:34;;;;;;;;;;;5072:7;:22;5080:13;5072:22;;;;;;;;;;;;;;;;;;;;;;;;;5056:38;;5108:14;;;;;;;4953:180;;;5149:5;5142:12;;4423:738;;;;:::o;4398:318:7:-;244:4:8;222:27;;:10;:27;;;214:36;;;;;;;;4580:10:7;;4566;:24;;;;4558:33;;;;;;;;4675:1;4661:10;:15;;;;4653:24;;;;;;;;4699:10;4687:9;;:22;;;;;;;;;;;;;;;;;;4398:318;:::o;1906:528::-;244:4:8;222:27;;:10;:27;;;214:36;;;;;;;;2076:1:7;2067:5;:10;;;;:38;;;;;337:3;2081:24;;:5;:24;;;;2067:38;2059:47;;;;;;;;2181:1;2164:6;:13;2171:5;2164:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;2156:27;;;;;;;;2209:6;:23;337:3;2209:23;;;;;;;;;;;;;;;;;;;;;;;;;2193:6;:13;2200:5;2193:13;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;2268:5;2242:6;:23;337:3;2242:23;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;2283:10;;:12;;;;;;;;;;;;;2376:10;2363:23;;:9;;;;;;;;;;;:23;;;;2359:68;;;2400:27;2416:10;2400:15;:27::i;:::-;2359:68;1906:528;;:::o;1887:299:6:-;244:4:8;222:27;;:10;:27;;;214:36;;;;;;;;2095:6:6;2064:38;;:7;:19;2072:10;2064:19;;;;;;;;;;;;;;;;;;;;;;;;;:38;;;2056:47;;;;;;;;2135:7;:15;2143:6;2135:15;;;;;;;;;;;;;;;;;;;;;;;;;2113:7;:19;2121:10;2113:19;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;2178:1;2160:7;:15;2168:6;2160:15;;;;;;;;;;;;;;;;:19;;;;;;;;;;;;;;;;;;1887:299;;:::o;3683:526:7:-;244:4:8;222:27;;:10;:27;;;214:36;;;;;;;;3866:1:7;3854:8;:13;;;;:44;;;;;337:3;3871:27;;:8;:27;;;;3854:44;3846:53;;;;;;;;3977:1;3957:6;:16;3964:8;3957:16;;;;;;;;;;;;;;;;;;;;;;;;;:21;;;3949:30;;;;;;;;4080:8;4059:29;;:6;:17;4066:9;4059:17;;;;;;;;;;;;;;;;;;;;;;;;;:29;;;4051:38;;;;;;;;4118:6;:16;4125:8;4118:16;;;;;;;;;;;;;;;;;;;;;;;;;4099:6;:16;4106:8;4099:16;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;4164:8;4144:6;:17;4151:9;4144:17;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;4201:1;4182:6;:16;4189:8;4182:16;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;3683:526;;;:::o;4722:113::-;4791:5;4819:9;;;;;;;;;;;4812:16;;4722:113;:::o;453:40:6:-;;;;;;;;;;;;;;;;;;;;:::o;2905:548::-;3036:12;3307:19;3081;3068:32;;;;;;;;:9;:32;;;;;;;;;3064:383;;;3124:35;3136:2;3140:5;3147:4;3153:5;3124:11;:35::i;:::-;3114:45;;3064:383;;;3191:27;3178:40;;;;;;;;:9;:40;;;;;;;;;3174:273;;;3242:36;3262:2;3266:4;3272:5;3242:19;:36::i;:::-;3232:46;;3174:273;;;3329:19;3343:4;3329:13;:19::i;:::-;3307:41;;3387:1;3372:11;:16;;;;3362:26;;3407:29;3424:11;3407:29;;;;;;;;;;;;;;;;;;;;;;3174:273;3064:383;2905:548;;;;;;;;:::o;641:1025:7:-;1132:20;1185:9;1284:13;875:1;862:9;;;;;;;;;;;:14;;;854:23;;;;;;;;984:7;:14;970:10;:28;;;;962:37;;;;;;;;1083:1;1069:10;:15;;;;1061:24;;;;;;;;337:3;1132:38;;1197:1;1185:13;;1180:363;1204:7;:14;1200:1;:18;1180:363;;;1300:7;1308:1;1300:10;;;;;;;;;;;;;;;;;;1284:26;;1341:1;1332:5;:10;;;;:38;;;;;337:3;1346:24;;:5;:24;;;;1332:38;1324:47;;;;;;;;1454:1;1437:6;:13;1444:5;1437:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;1429:27;;;;;;;;1493:5;1470:6;:20;1477:12;1470:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;1527:5;1512:20;;1220:3;;;;;;;1180:363;;;337:3;1552:6;:20;1559:12;1552:20;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;1613:7;:14;1600:10;:27;;;;1649:10;1637:9;;:22;;;;;;;;;;;;;;;;;;641:1025;;;;;:::o;735:333:6:-;849:1;820:7;:25;550:3;820:25;;;;;;;;;;;;;;;;;;;;;;;;;:30;;;812:39;;;;;;;;550:3;861:7;:25;550:3;861:25;;;;;;;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;925:1;919:2;:7;;;;915:146;;;1020:40;1040:2;1044:4;1050:9;1020:19;:40::i;:::-;1012:49;;;;;;;;915:146;735:333;;:::o;3459:309::-;3568:12;3750:1;3747;3740:4;3734:11;3727:4;3721;3717:15;3710:5;3706:2;3699:5;3694:58;3683:69;;3669:93;;;;;;:::o;3774:303::-;3876:12;4059:1;4056;4049:4;4043:11;4036:4;4030;4026:15;4022:2;4015:5;4002:59;3991:70;;3977:94;;;;;:::o;4083:261::-;4152:19;4322:4;4316:11;4309:4;4303;4299:15;4296:1;4289:39;4274:54;;4260:78;;;:::o", - "source": "pragma solidity 0.4.23;\nimport \"./Module.sol\";\nimport \"./ModuleManager.sol\";\nimport \"./OwnerManager.sol\";\n\n\n/// @title Gnosis Safe - A multisignature wallet with support for modules and owners. This contract needs to be extented to add functionality to execute transactions.\n/// @author Stefan George - \ncontract GnosisSafe is ModuleManager, OwnerManager {\n\n /// @dev Setup function sets initial storage of contract.\n /// @param _owners List of Safe owners.\n /// @param _threshold Number of required confirmations for a Safe transaction.\n /// @param to Contract address for optional delegate call.\n /// @param data Data payload for optional delegate call.\n function setup(address[] _owners, uint8 _threshold, address to, bytes data)\n public\n {\n setupOwners(_owners, _threshold);\n // As setupOwners can only be called if the contract has not been initialized we don't need a check for setupModules\n setupModules(to, data);\n }\n}\n", + "bytecode": "0x608060405234801561001057600080fd5b50612100806100206000396000f3006080604052600436106100e6576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632f54bf6e146100e8578063468721a714610143578063610b5925146101fb57806385e332cd1461023e57806386040aa9146102955780638cff635514610305578063a04222e11461035c578063a0e67e2b14610435578063a3f4df7e146104a1578063b2494df314610531578063b7f3358d1461059d578063b91a667f146105cd578063e009cfde1461061d578063e318b52b14610680578063e75235b814610703578063ffa1ad7414610734575b005b3480156100f457600080fd5b50610129600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107c4565b604051808215151515815260200191505060405180910390f35b34801561014f57600080fd5b506101e1600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190505050610846565b604051808215151515815260200191505060405180910390f35b34801561020757600080fd5b5061023c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506108e2565b005b34801561024a57600080fd5b50610253610b5b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156102a157600080fd5b50610303600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050610b60565b005b34801561031157600080fd5b5061031a610de6565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561036857600080fd5b5061043360048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803560ff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050610deb565b005b34801561044157600080fd5b5061044a610e05565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561048d578082015181840152602081019050610472565b505050509050019250505060405180910390f35b3480156104ad57600080fd5b506104b6610fa0565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104f65780820151818401526020810190506104db565b50505050905090810190601f1680156105235780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561053d57600080fd5b50610546610fd9565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561058957808201518184015260208101905061056e565b505050509050019250505060405180910390f35b3480156105a957600080fd5b506105cb600480360381019080803560ff16906020019092919050505061127c565b005b3480156105d957600080fd5b5061061b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff1690602001909291905050506112fb565b005b34801561062957600080fd5b5061067e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506115b3565b005b34801561068c57600080fd5b50610701600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506117e2565b005b34801561070f57600080fd5b50610718611b77565b604051808260ff1660ff16815260200191505060405180910390f35b34801561074057600080fd5b50610749611b8e565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561078957808201518184015260208101905061076e565b50505050905090810190601f1680156107b65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b600080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b6000806000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515156108cb57600080fd5b6108d8858585855a611bc7565b9050949350505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561091c57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141580156109705750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b151561097b57600080fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156109fe57600080fd5b600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600181565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610b9a57600080fd5b8060ff1660016002540310151515610bb157600080fd5b8173ffffffffffffffffffffffffffffffffffffffff16600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610c4a57600080fd5b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600260008154809291906001900391905055508060ff16600360009054906101000a900460ff1660ff16141515610de157610de08161127c565b5b505050565b600181565b610df58484611cc4565b610dff8282611f54565b50505050565b606080600080600254604051908082528060200260200182016040528015610e3c5781602001602082028038833980820191505090505b5092506000915060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515610f9757808383815181101515610eec57fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508180600101925050610ea7565b82935050505090565b6040805190810160405280600e81526020017f4d6f64756c65204d616e6167657200000000000000000000000000000000000081525081565b6060600080606060009250600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415156110eb576000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508280600101935050611047565b8260405190808252806020026020018201604052801561111a5781602001602082028038833980820191505090505b50905060009250600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515611273578181848151811015156111c957fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508280600101935050611184565b80935050505090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156112b657600080fd5b6002548160ff16111515156112ca57600080fd5b60018160ff16101515156112dd57600080fd5b80600360006101000a81548160ff021916908360ff16021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561133557600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff16141580156113895750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b151561139457600080fd5b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561141857600080fd5b60016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506002600081548092919060010191905055508060ff16600360009054906101000a900460ff1660ff161415156115af576115ae8161127c565b5b5050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156115ed57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561168557600080fd5b6000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561181c57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141580156118705750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b151561187b57600080fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156118ff57600080fd5b8173ffffffffffffffffffffffffffffffffffffffff16600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561199857600080fd5b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b6000600360009054906101000a900460ff16905090565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b60008060006002811115611bd757fe5b846002811115611be357fe5b1415611bfc57611bf587878786612092565b9150611cba565b60016002811115611c0957fe5b846002811115611c1557fe5b1415611c2d57611c268786856120ab565b9150611cb9565b611c36856120c2565b905060008173ffffffffffffffffffffffffffffffffffffffff16141591507f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b5b5095945050505050565b600080600080600360009054906101000a900460ff1660ff16141515611ce957600080fd5b84518460ff1611151515611cfc57600080fd5b60018460ff1610151515611d0f57600080fd5b60019250600091505b8451821015611eac578482815181101515611d2f57fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff1614158015611d8f5750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1515611d9a57600080fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611e1e57600080fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508092508180600101925050611d18565b60018060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550845160028190555083600360006101000a81548160ff021916908360ff1602179055505050505050565b6000806000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611fd857600080fd5b6001600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008273ffffffffffffffffffffffffffffffffffffffff1614151561208e5761208282825a6120ab565b151561208d57600080fd5b5b5050565b6000806000845160208601878987f19050949350505050565b60008060008451602086018786f490509392505050565b60008151602083016000f090509190505600a165627a7a72305820320bc4a9d7df05e83245d3a6f7c0c117f907d8577ab1a6fb3eb23fc392c0a32b0029", + "deployedBytecode": "0x6080604052600436106100e6576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632f54bf6e146100e8578063468721a714610143578063610b5925146101fb57806385e332cd1461023e57806386040aa9146102955780638cff635514610305578063a04222e11461035c578063a0e67e2b14610435578063a3f4df7e146104a1578063b2494df314610531578063b7f3358d1461059d578063b91a667f146105cd578063e009cfde1461061d578063e318b52b14610680578063e75235b814610703578063ffa1ad7414610734575b005b3480156100f457600080fd5b50610129600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107c4565b604051808215151515815260200191505060405180910390f35b34801561014f57600080fd5b506101e1600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190505050610846565b604051808215151515815260200191505060405180910390f35b34801561020757600080fd5b5061023c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506108e2565b005b34801561024a57600080fd5b50610253610b5b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156102a157600080fd5b50610303600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050610b60565b005b34801561031157600080fd5b5061031a610de6565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561036857600080fd5b5061043360048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803560ff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050610deb565b005b34801561044157600080fd5b5061044a610e05565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561048d578082015181840152602081019050610472565b505050509050019250505060405180910390f35b3480156104ad57600080fd5b506104b6610fa0565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104f65780820151818401526020810190506104db565b50505050905090810190601f1680156105235780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561053d57600080fd5b50610546610fd9565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561058957808201518184015260208101905061056e565b505050509050019250505060405180910390f35b3480156105a957600080fd5b506105cb600480360381019080803560ff16906020019092919050505061127c565b005b3480156105d957600080fd5b5061061b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff1690602001909291905050506112fb565b005b34801561062957600080fd5b5061067e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506115b3565b005b34801561068c57600080fd5b50610701600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506117e2565b005b34801561070f57600080fd5b50610718611b77565b604051808260ff1660ff16815260200191505060405180910390f35b34801561074057600080fd5b50610749611b8e565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561078957808201518184015260208101905061076e565b50505050905090810190601f1680156107b65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b600080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b6000806000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515156108cb57600080fd5b6108d8858585855a611bc7565b9050949350505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561091c57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141580156109705750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b151561097b57600080fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156109fe57600080fd5b600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600181565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610b9a57600080fd5b8060ff1660016002540310151515610bb157600080fd5b8173ffffffffffffffffffffffffffffffffffffffff16600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610c4a57600080fd5b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600260008154809291906001900391905055508060ff16600360009054906101000a900460ff1660ff16141515610de157610de08161127c565b5b505050565b600181565b610df58484611cc4565b610dff8282611f54565b50505050565b606080600080600254604051908082528060200260200182016040528015610e3c5781602001602082028038833980820191505090505b5092506000915060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515610f9757808383815181101515610eec57fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508180600101925050610ea7565b82935050505090565b6040805190810160405280600e81526020017f4d6f64756c65204d616e6167657200000000000000000000000000000000000081525081565b6060600080606060009250600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415156110eb576000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508280600101935050611047565b8260405190808252806020026020018201604052801561111a5781602001602082028038833980820191505090505b50905060009250600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515611273578181848151811015156111c957fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508280600101935050611184565b80935050505090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156112b657600080fd5b6002548160ff16111515156112ca57600080fd5b60018160ff16101515156112dd57600080fd5b80600360006101000a81548160ff021916908360ff16021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561133557600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff16141580156113895750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b151561139457600080fd5b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561141857600080fd5b60016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506002600081548092919060010191905055508060ff16600360009054906101000a900460ff1660ff161415156115af576115ae8161127c565b5b5050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156115ed57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561168557600080fd5b6000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561181c57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141580156118705750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b151561187b57600080fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156118ff57600080fd5b8173ffffffffffffffffffffffffffffffffffffffff16600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561199857600080fd5b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b6000600360009054906101000a900460ff16905090565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b60008060006002811115611bd757fe5b846002811115611be357fe5b1415611bfc57611bf587878786612092565b9150611cba565b60016002811115611c0957fe5b846002811115611c1557fe5b1415611c2d57611c268786856120ab565b9150611cb9565b611c36856120c2565b905060008173ffffffffffffffffffffffffffffffffffffffff16141591507f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b5b5095945050505050565b600080600080600360009054906101000a900460ff1660ff16141515611ce957600080fd5b84518460ff1611151515611cfc57600080fd5b60018460ff1610151515611d0f57600080fd5b60019250600091505b8451821015611eac578482815181101515611d2f57fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff1614158015611d8f5750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1515611d9a57600080fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611e1e57600080fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508092508180600101925050611d18565b60018060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550845160028190555083600360006101000a81548160ff021916908360ff1602179055505050505050565b6000806000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611fd857600080fd5b6001600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008273ffffffffffffffffffffffffffffffffffffffff1614151561208e5761208282825a6120ab565b151561208d57600080fd5b5b5050565b6000806000845160208601878987f19050949350505050565b60008060008451602086018786f490509392505050565b60008151602083016000f090509190505600a165627a7a72305820320bc4a9d7df05e83245d3a6f7c0c117f907d8577ab1a6fb3eb23fc392c0a32b0029", + "sourceMap": "322:674:2:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;322:674:2;;;;;;;", + "deployedSourceMap": "322:674:2:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4841:129:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4841:129:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2522:377:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2522:377:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1235:391;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1235:391:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;499:55;;8:9:-1;5:2;;;30:1;27;20:12;5:2;499:55:8;;;;;;;;;;;;;;;;;;;;;;;;;;;2776:573:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2776:573:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;287:54;;8:9:-1;5:2;;;30:1;27;20:12;5:2;287:54:9;;;;;;;;;;;;;;;;;;;;;;;;;;;693:301:2;;8:9:-1;5:2;;;30:1;27;20:12;5:2;693:301:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5052:458:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5052:458:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;5052:458:9;;;;;;;;;;;;;;;;;401:46:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;401:46:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;401:46:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4423:738;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4423:738:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;4423:738:8;;;;;;;;;;;;;;;;;4398:318:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4398:318:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;1906:528;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1906:528:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1887:299:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1887:299:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3683:526:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3683:526:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4722:113;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4722:113:9;;;;;;;;;;;;;;;;;;;;;;;;;;;453:40:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;453:40:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;453:40:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4841:129:9;4918:4;4962:1;4945:6;:13;4952:5;4945:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;;4938:25;;4841:129;;;:::o;2522:377:8:-;2654:12;2762:1;2739:7;:19;2747:10;2739:19;;;;;;;;;;;;;;;;;;;;;;;;;:24;;;;2731:33;;;;;;;;2846:46;2854:2;2858:5;2865:4;2871:9;2882;2846:7;:46::i;:::-;2836:56;;2522:377;;;;;;:::o;1235:391::-;244:4:13;222:27;;:10;:27;;;214:36;;;;;;;;1401:1:8;1390:6;1382:20;;;;:59;;;;;550:3;1406:35;;1414:6;1406:35;;;;1382:59;1374:68;;;;;;;;1520:1;1501:7;:15;1509:6;1501:15;;;;;;;;;;;;;;;;;;;;;;;;;:20;;;1493:29;;;;;;;;1550:7;:25;550:3;1550:25;;;;;;;;;;;;;;;;;;;;;;;;;1532:7;:15;1540:6;1532:15;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;1613:6;1585:7;:25;550:3;1585:25;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;1235:391;:::o;499:55::-;550:3;499:55;:::o;2776:573:9:-;244:4:13;222:27;;:10;:27;;;214:36;;;;;;;;3000:10:9;2982:28;;2995:1;2982:10;;:14;:28;;2974:37;;;;;;;;3112:5;3091:26;;:6;:17;3098:9;3091:17;;;;;;;;;;;;;;;;;;;;;;;;;:26;;;3083:35;;;;;;;;3148:6;:13;3155:5;3148:13;;;;;;;;;;;;;;;;;;;;;;;;;3128:6;:17;3135:9;3128:17;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;3187:1;3171:6;:13;3178:5;3171:13;;;;;;;;;;;;;;;;:17;;;;;;;;;;;;;;;;;;3198:10;;:12;;;;;;;;;;;;;;3291:10;3278:23;;:9;;;;;;;;;;;:23;;;;3274:68;;;3315:27;3331:10;3315:15;:27::i;:::-;3274:68;2776:573;;;:::o;287:54::-;337:3;287:54;:::o;693:301:2:-;798:32;810:7;819:10;798:11;:32::i;:::-;965:22;978:2;982:4;965:12;:22::i;:::-;693:301;;;;:::o;5052:458:9:-;5118:9;5143:22;5237:13;5264:20;5182:10;;5168:25;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;5168:25:9;;;;5143:50;;5253:1;5237:17;;5287:6;:23;337:3;5287:23;;;;;;;;;;;;;;;;;;;;;;;;;5264:46;;5320:162;337:3;5326:31;;:12;:31;;;;5320:162;;;5388:12;5373:5;5379;5373:12;;;;;;;;;;;;;;;;;:27;;;;;;;;;;;5429:6;:20;5436:12;5429:20;;;;;;;;;;;;;;;;;;;;;;;;;5414:35;;5463:8;;;;;;;5320:162;;;5498:5;5491:12;;5052:458;;;;:::o;401:46:8:-;;;;;;;;;;;;;;;;;;;;:::o;4423:738::-;4490:9;4549:19;4582:21;4782:22;4571:1;4549:23;;4606:7;:25;550:3;4606:25;;;;;;;;;;;;;;;;;;;;;;;;;4582:49;;4641:132;550:3;4647:33;;:13;:33;;;;4641:132;;;4712:7;:22;4720:13;4712:22;;;;;;;;;;;;;;;;;;;;;;;;;4696:38;;4748:14;;;;;;;4641:132;;;4821:11;4807:26;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;4807:26:8;;;;4782:51;;4891:1;4877:15;;4918:7;:25;550:3;4918:25;;;;;;;;;;;;;;;;;;;;;;;;;4902:41;;4953:180;550:3;4959:33;;:13;:33;;;;4953:180;;;5029:13;5008:5;5014:11;5008:18;;;;;;;;;;;;;;;;;:34;;;;;;;;;;;5072:7;:22;5080:13;5072:22;;;;;;;;;;;;;;;;;;;;;;;;;5056:38;;5108:14;;;;;;;4953:180;;;5149:5;5142:12;;4423:738;;;;:::o;4398:318:9:-;244:4:13;222:27;;:10;:27;;;214:36;;;;;;;;4580:10:9;;4566;:24;;;;4558:33;;;;;;;;4675:1;4661:10;:15;;;;4653:24;;;;;;;;4699:10;4687:9;;:22;;;;;;;;;;;;;;;;;;4398:318;:::o;1906:528::-;244:4:13;222:27;;:10;:27;;;214:36;;;;;;;;2076:1:9;2067:5;:10;;;;:38;;;;;337:3;2081:24;;:5;:24;;;;2067:38;2059:47;;;;;;;;2181:1;2164:6;:13;2171:5;2164:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;2156:27;;;;;;;;2209:6;:23;337:3;2209:23;;;;;;;;;;;;;;;;;;;;;;;;;2193:6;:13;2200:5;2193:13;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;2268:5;2242:6;:23;337:3;2242:23;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;2283:10;;:12;;;;;;;;;;;;;2376:10;2363:23;;:9;;;;;;;;;;;:23;;;;2359:68;;;2400:27;2416:10;2400:15;:27::i;:::-;2359:68;1906:528;;:::o;1887:299:8:-;244:4:13;222:27;;:10;:27;;;214:36;;;;;;;;2095:6:8;2064:38;;:7;:19;2072:10;2064:19;;;;;;;;;;;;;;;;;;;;;;;;;:38;;;2056:47;;;;;;;;2135:7;:15;2143:6;2135:15;;;;;;;;;;;;;;;;;;;;;;;;;2113:7;:19;2121:10;2113:19;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;2178:1;2160:7;:15;2168:6;2160:15;;;;;;;;;;;;;;;;:19;;;;;;;;;;;;;;;;;;1887:299;;:::o;3683:526:9:-;244:4:13;222:27;;:10;:27;;;214:36;;;;;;;;3866:1:9;3854:8;:13;;;;:44;;;;;337:3;3871:27;;:8;:27;;;;3854:44;3846:53;;;;;;;;3977:1;3957:6;:16;3964:8;3957:16;;;;;;;;;;;;;;;;;;;;;;;;;:21;;;3949:30;;;;;;;;4080:8;4059:29;;:6;:17;4066:9;4059:17;;;;;;;;;;;;;;;;;;;;;;;;;:29;;;4051:38;;;;;;;;4118:6;:16;4125:8;4118:16;;;;;;;;;;;;;;;;;;;;;;;;;4099:6;:16;4106:8;4099:16;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;4164:8;4144:6;:17;4151:9;4144:17;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;4201:1;4182:6;:16;4189:8;4182:16;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;3683:526;;;:::o;4722:113::-;4791:5;4819:9;;;;;;;;;;;4812:16;;4722:113;:::o;453:40:8:-;;;;;;;;;;;;;;;;;;;;:::o;2905:548::-;3036:12;3307:19;3081;3068:32;;;;;;;;:9;:32;;;;;;;;;3064:383;;;3124:35;3136:2;3140:5;3147:4;3153:5;3124:11;:35::i;:::-;3114:45;;3064:383;;;3191:27;3178:40;;;;;;;;:9;:40;;;;;;;;;3174:273;;;3242:36;3262:2;3266:4;3272:5;3242:19;:36::i;:::-;3232:46;;3174:273;;;3329:19;3343:4;3329:13;:19::i;:::-;3307:41;;3387:1;3372:11;:16;;;;3362:26;;3407:29;3424:11;3407:29;;;;;;;;;;;;;;;;;;;;;;3174:273;3064:383;2905:548;;;;;;;;:::o;641:1025:9:-;1132:20;1185:9;1284:13;875:1;862:9;;;;;;;;;;;:14;;;854:23;;;;;;;;984:7;:14;970:10;:28;;;;962:37;;;;;;;;1083:1;1069:10;:15;;;;1061:24;;;;;;;;337:3;1132:38;;1197:1;1185:13;;1180:363;1204:7;:14;1200:1;:18;1180:363;;;1300:7;1308:1;1300:10;;;;;;;;;;;;;;;;;;1284:26;;1341:1;1332:5;:10;;;;:38;;;;;337:3;1346:24;;:5;:24;;;;1332:38;1324:47;;;;;;;;1454:1;1437:6;:13;1444:5;1437:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;1429:27;;;;;;;;1493:5;1470:6;:20;1477:12;1470:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;1527:5;1512:20;;1220:3;;;;;;;1180:363;;;337:3;1552:6;:20;1559:12;1552:20;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;1613:7;:14;1600:10;:27;;;;1649:10;1637:9;;:22;;;;;;;;;;;;;;;;;;641:1025;;;;;:::o;735:333:8:-;849:1;820:7;:25;550:3;820:25;;;;;;;;;;;;;;;;;;;;;;;;;:30;;;812:39;;;;;;;;550:3;861:7;:25;550:3;861:25;;;;;;;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;925:1;919:2;:7;;;;915:146;;;1020:40;1040:2;1044:4;1050:9;1020:19;:40::i;:::-;1012:49;;;;;;;;915:146;735:333;;:::o;3459:309::-;3568:12;3750:1;3747;3740:4;3734:11;3727:4;3721;3717:15;3710:5;3706:2;3699:5;3694:58;3683:69;;3669:93;;;;;;:::o;3774:303::-;3876:12;4059:1;4056;4049:4;4043:11;4036:4;4030;4026:15;4022:2;4015:5;4002:59;3991:70;;3977:94;;;;;:::o;4083:261::-;4152:19;4322:4;4316:11;4309:4;4303;4299:15;4296:1;4289:39;4274:54;;4260:78;;;:::o", + "source": "pragma solidity 0.4.24;\nimport \"./Module.sol\";\nimport \"./ModuleManager.sol\";\nimport \"./OwnerManager.sol\";\n\n\n/// @title Gnosis Safe - A multisignature wallet with support for modules and owners. This contract needs to be extented to add functionality to execute transactions.\n/// @author Stefan George - \ncontract GnosisSafe is ModuleManager, OwnerManager {\n\n /// @dev Setup function sets initial storage of contract.\n /// @param _owners List of Safe owners.\n /// @param _threshold Number of required confirmations for a Safe transaction.\n /// @param to Contract address for optional delegate call.\n /// @param data Data payload for optional delegate call.\n function setup(address[] _owners, uint8 _threshold, address to, bytes data)\n public\n {\n setupOwners(_owners, _threshold);\n // As setupOwners can only be called if the contract has not been initialized we don't need a check for setupModules\n setupModules(to, data);\n }\n}\n", "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafe.sol", "ast": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafe.sol", "exportedSymbols": { "GnosisSafe": [ - 39 + 63 ] }, - "id": 40, + "id": 64, "nodeType": "SourceUnit", "nodes": [ { - "id": 8, + "id": 32, "literals": [ "solidity", "0.4", - ".23" + ".24" ], "nodeType": "PragmaDirective", - "src": "0:23:1" + "src": "0:23:2" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Module.sol", "file": "./Module.sol", - "id": 9, + "id": 33, "nodeType": "ImportDirective", - "scope": 40, - "sourceUnit": 622, - "src": "24:22:1", + "scope": 64, + "sourceUnit": 751, + "src": "24:22:2", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/ModuleManager.sol", "file": "./ModuleManager.sol", - "id": 10, + "id": 34, "nodeType": "ImportDirective", - "scope": 40, - "sourceUnit": 972, - "src": "47:29:1", + "scope": 64, + "sourceUnit": 1101, + "src": "47:29:2", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/OwnerManager.sol", "file": "./OwnerManager.sol", - "id": 11, + "id": 35, "nodeType": "ImportDirective", - "scope": 40, - "sourceUnit": 1344, - "src": "77:28:1", + "scope": 64, + "sourceUnit": 1473, + "src": "77:28:2", "symbolAliases": [], "unitAlias": "" }, @@ -366,62 +366,62 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 12, + "id": 36, "name": "ModuleManager", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 971, - "src": "345:13:1", + "referencedDeclaration": 1100, + "src": "345:13:2", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$971", + "typeIdentifier": "t_contract$_ModuleManager_$1100", "typeString": "contract ModuleManager" } }, - "id": 13, + "id": 37, "nodeType": "InheritanceSpecifier", - "src": "345:13:1" + "src": "345:13:2" }, { "arguments": null, "baseName": { "contractScope": null, - "id": 14, + "id": 38, "name": "OwnerManager", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1343, - "src": "360:12:1", + "referencedDeclaration": 1472, + "src": "360:12:2", "typeDescriptions": { - "typeIdentifier": "t_contract$_OwnerManager_$1343", + "typeIdentifier": "t_contract$_OwnerManager_$1472", "typeString": "contract OwnerManager" } }, - "id": 15, + "id": 39, "nodeType": "InheritanceSpecifier", - "src": "360:12:1" + "src": "360:12:2" } ], "contractDependencies": [ - 971, - 1343, - 1359 + 1100, + 1472, + 1619 ], "contractKind": "contract", "documentation": "@title Gnosis Safe - A multisignature wallet with support for modules and owners. This contract needs to be extented to add functionality to execute transactions.\n @author Stefan George - ", "fullyImplemented": true, - "id": 39, + "id": 63, "linearizedBaseContracts": [ - 39, - 1343, - 971, - 1359 + 63, + 1472, + 1100, + 1619 ], "name": "GnosisSafe", "nodeType": "ContractDefinition", "nodes": [ { "body": { - "id": 37, + "id": 61, "nodeType": "Block", - "src": "788:206:1", + "src": "788:206:2", "statements": [ { "expression": { @@ -429,12 +429,12 @@ "arguments": [ { "argumentTypes": null, - "id": 28, + "id": 52, "name": "_owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 18, - "src": "810:7:1", + "referencedDeclaration": 42, + "src": "810:7:2", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" @@ -442,12 +442,12 @@ }, { "argumentTypes": null, - "id": 29, + "id": 53, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 20, - "src": "819:10:1", + "referencedDeclaration": 44, + "src": "819:10:2", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -465,18 +465,18 @@ "typeString": "uint8" } ], - "id": 27, + "id": 51, "name": "setupOwners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1083, - "src": "798:11:1", + "referencedDeclaration": 1212, + "src": "798:11:2", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$_t_uint8_$returns$__$", "typeString": "function (address[] memory,uint8)" } }, - "id": 30, + "id": 54, "isConstant": false, "isLValue": false, "isPure": false, @@ -484,15 +484,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "798:32:1", + "src": "798:32:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 31, + "id": 55, "nodeType": "ExpressionStatement", - "src": "798:32:1" + "src": "798:32:2" }, { "expression": { @@ -500,12 +500,12 @@ "arguments": [ { "argumentTypes": null, - "id": 33, + "id": 57, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 22, - "src": "978:2:1", + "referencedDeclaration": 46, + "src": "978:2:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -513,12 +513,12 @@ }, { "argumentTypes": null, - "id": 34, + "id": 58, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 24, - "src": "982:4:1", + "referencedDeclaration": 48, + "src": "982:4:2", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -536,18 +536,18 @@ "typeString": "bytes memory" } ], - "id": 32, + "id": 56, "name": "setupModules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 686, - "src": "965:12:1", + "referencedDeclaration": 815, + "src": "965:12:2", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (address,bytes memory)" } }, - "id": 35, + "id": 59, "isConstant": false, "isLValue": false, "isPure": false, @@ -555,20 +555,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "965:22:1", + "src": "965:22:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 36, + "id": 60, "nodeType": "ExpressionStatement", - "src": "965:22:1" + "src": "965:22:2" } ] }, "documentation": "@dev Setup function sets initial storage of contract.\n @param _owners List of Safe owners.\n @param _threshold Number of required confirmations for a Safe transaction.\n @param to Contract address for optional delegate call.\n @param data Data payload for optional delegate call.", - "id": 38, + "id": 62, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -576,16 +576,16 @@ "name": "setup", "nodeType": "FunctionDefinition", "parameters": { - "id": 25, + "id": 49, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 18, + "id": 42, "name": "_owners", "nodeType": "VariableDeclaration", - "scope": 38, - "src": "708:17:1", + "scope": 62, + "src": "708:17:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -594,19 +594,19 @@ }, "typeName": { "baseType": { - "id": 16, + "id": 40, "name": "address", "nodeType": "ElementaryTypeName", - "src": "708:7:1", + "src": "708:7:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 17, + "id": 41, "length": null, "nodeType": "ArrayTypeName", - "src": "708:9:1", + "src": "708:9:2", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" @@ -617,11 +617,11 @@ }, { "constant": false, - "id": 20, + "id": 44, "name": "_threshold", "nodeType": "VariableDeclaration", - "scope": 38, - "src": "727:16:1", + "scope": 62, + "src": "727:16:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -629,10 +629,10 @@ "typeString": "uint8" }, "typeName": { - "id": 19, + "id": 43, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "727:5:1", + "src": "727:5:2", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -643,11 +643,11 @@ }, { "constant": false, - "id": 22, + "id": 46, "name": "to", "nodeType": "VariableDeclaration", - "scope": 38, - "src": "745:10:1", + "scope": 62, + "src": "745:10:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -655,10 +655,10 @@ "typeString": "address" }, "typeName": { - "id": 21, + "id": 45, "name": "address", "nodeType": "ElementaryTypeName", - "src": "745:7:1", + "src": "745:7:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -669,11 +669,11 @@ }, { "constant": false, - "id": 24, + "id": 48, "name": "data", "nodeType": "VariableDeclaration", - "scope": 38, - "src": "757:10:1", + "scope": 62, + "src": "757:10:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -681,10 +681,10 @@ "typeString": "bytes" }, "typeName": { - "id": 23, + "id": 47, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "757:5:1", + "src": "757:5:2", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -694,78 +694,78 @@ "visibility": "internal" } ], - "src": "707:61:1" + "src": "707:61:2" }, "payable": false, "returnParameters": { - "id": 26, + "id": 50, "nodeType": "ParameterList", "parameters": [], - "src": "788:0:1" + "src": "788:0:2" }, - "scope": 39, - "src": "693:301:1", + "scope": 63, + "src": "693:301:2", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" } ], - "scope": 40, - "src": "322:674:1" + "scope": 64, + "src": "322:674:2" } ], - "src": "0:997:1" + "src": "0:997:2" }, "legacyAST": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafe.sol", "exportedSymbols": { "GnosisSafe": [ - 39 + 63 ] }, - "id": 40, + "id": 64, "nodeType": "SourceUnit", "nodes": [ { - "id": 8, + "id": 32, "literals": [ "solidity", "0.4", - ".23" + ".24" ], "nodeType": "PragmaDirective", - "src": "0:23:1" + "src": "0:23:2" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Module.sol", "file": "./Module.sol", - "id": 9, + "id": 33, "nodeType": "ImportDirective", - "scope": 40, - "sourceUnit": 622, - "src": "24:22:1", + "scope": 64, + "sourceUnit": 751, + "src": "24:22:2", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/ModuleManager.sol", "file": "./ModuleManager.sol", - "id": 10, + "id": 34, "nodeType": "ImportDirective", - "scope": 40, - "sourceUnit": 972, - "src": "47:29:1", + "scope": 64, + "sourceUnit": 1101, + "src": "47:29:2", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/OwnerManager.sol", "file": "./OwnerManager.sol", - "id": 11, + "id": 35, "nodeType": "ImportDirective", - "scope": 40, - "sourceUnit": 1344, - "src": "77:28:1", + "scope": 64, + "sourceUnit": 1473, + "src": "77:28:2", "symbolAliases": [], "unitAlias": "" }, @@ -775,62 +775,62 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 12, + "id": 36, "name": "ModuleManager", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 971, - "src": "345:13:1", + "referencedDeclaration": 1100, + "src": "345:13:2", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$971", + "typeIdentifier": "t_contract$_ModuleManager_$1100", "typeString": "contract ModuleManager" } }, - "id": 13, + "id": 37, "nodeType": "InheritanceSpecifier", - "src": "345:13:1" + "src": "345:13:2" }, { "arguments": null, "baseName": { "contractScope": null, - "id": 14, + "id": 38, "name": "OwnerManager", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1343, - "src": "360:12:1", + "referencedDeclaration": 1472, + "src": "360:12:2", "typeDescriptions": { - "typeIdentifier": "t_contract$_OwnerManager_$1343", + "typeIdentifier": "t_contract$_OwnerManager_$1472", "typeString": "contract OwnerManager" } }, - "id": 15, + "id": 39, "nodeType": "InheritanceSpecifier", - "src": "360:12:1" + "src": "360:12:2" } ], "contractDependencies": [ - 971, - 1343, - 1359 + 1100, + 1472, + 1619 ], "contractKind": "contract", "documentation": "@title Gnosis Safe - A multisignature wallet with support for modules and owners. This contract needs to be extented to add functionality to execute transactions.\n @author Stefan George - ", "fullyImplemented": true, - "id": 39, + "id": 63, "linearizedBaseContracts": [ - 39, - 1343, - 971, - 1359 + 63, + 1472, + 1100, + 1619 ], "name": "GnosisSafe", "nodeType": "ContractDefinition", "nodes": [ { "body": { - "id": 37, + "id": 61, "nodeType": "Block", - "src": "788:206:1", + "src": "788:206:2", "statements": [ { "expression": { @@ -838,12 +838,12 @@ "arguments": [ { "argumentTypes": null, - "id": 28, + "id": 52, "name": "_owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 18, - "src": "810:7:1", + "referencedDeclaration": 42, + "src": "810:7:2", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" @@ -851,12 +851,12 @@ }, { "argumentTypes": null, - "id": 29, + "id": 53, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 20, - "src": "819:10:1", + "referencedDeclaration": 44, + "src": "819:10:2", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -874,18 +874,18 @@ "typeString": "uint8" } ], - "id": 27, + "id": 51, "name": "setupOwners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1083, - "src": "798:11:1", + "referencedDeclaration": 1212, + "src": "798:11:2", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$_t_uint8_$returns$__$", "typeString": "function (address[] memory,uint8)" } }, - "id": 30, + "id": 54, "isConstant": false, "isLValue": false, "isPure": false, @@ -893,15 +893,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "798:32:1", + "src": "798:32:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 31, + "id": 55, "nodeType": "ExpressionStatement", - "src": "798:32:1" + "src": "798:32:2" }, { "expression": { @@ -909,12 +909,12 @@ "arguments": [ { "argumentTypes": null, - "id": 33, + "id": 57, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 22, - "src": "978:2:1", + "referencedDeclaration": 46, + "src": "978:2:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -922,12 +922,12 @@ }, { "argumentTypes": null, - "id": 34, + "id": 58, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 24, - "src": "982:4:1", + "referencedDeclaration": 48, + "src": "982:4:2", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -945,18 +945,18 @@ "typeString": "bytes memory" } ], - "id": 32, + "id": 56, "name": "setupModules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 686, - "src": "965:12:1", + "referencedDeclaration": 815, + "src": "965:12:2", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (address,bytes memory)" } }, - "id": 35, + "id": 59, "isConstant": false, "isLValue": false, "isPure": false, @@ -964,20 +964,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "965:22:1", + "src": "965:22:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 36, + "id": 60, "nodeType": "ExpressionStatement", - "src": "965:22:1" + "src": "965:22:2" } ] }, "documentation": "@dev Setup function sets initial storage of contract.\n @param _owners List of Safe owners.\n @param _threshold Number of required confirmations for a Safe transaction.\n @param to Contract address for optional delegate call.\n @param data Data payload for optional delegate call.", - "id": 38, + "id": 62, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -985,16 +985,16 @@ "name": "setup", "nodeType": "FunctionDefinition", "parameters": { - "id": 25, + "id": 49, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 18, + "id": 42, "name": "_owners", "nodeType": "VariableDeclaration", - "scope": 38, - "src": "708:17:1", + "scope": 62, + "src": "708:17:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1003,19 +1003,19 @@ }, "typeName": { "baseType": { - "id": 16, + "id": 40, "name": "address", "nodeType": "ElementaryTypeName", - "src": "708:7:1", + "src": "708:7:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 17, + "id": 41, "length": null, "nodeType": "ArrayTypeName", - "src": "708:9:1", + "src": "708:9:2", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" @@ -1026,11 +1026,11 @@ }, { "constant": false, - "id": 20, + "id": 44, "name": "_threshold", "nodeType": "VariableDeclaration", - "scope": 38, - "src": "727:16:1", + "scope": 62, + "src": "727:16:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1038,10 +1038,10 @@ "typeString": "uint8" }, "typeName": { - "id": 19, + "id": 43, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "727:5:1", + "src": "727:5:2", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -1052,11 +1052,11 @@ }, { "constant": false, - "id": 22, + "id": 46, "name": "to", "nodeType": "VariableDeclaration", - "scope": 38, - "src": "745:10:1", + "scope": 62, + "src": "745:10:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1064,10 +1064,10 @@ "typeString": "address" }, "typeName": { - "id": 21, + "id": 45, "name": "address", "nodeType": "ElementaryTypeName", - "src": "745:7:1", + "src": "745:7:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1078,11 +1078,11 @@ }, { "constant": false, - "id": 24, + "id": 48, "name": "data", "nodeType": "VariableDeclaration", - "scope": 38, - "src": "757:10:1", + "scope": 62, + "src": "757:10:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1090,10 +1090,10 @@ "typeString": "bytes" }, "typeName": { - "id": 23, + "id": 47, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "757:5:1", + "src": "757:5:2", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -1103,33 +1103,33 @@ "visibility": "internal" } ], - "src": "707:61:1" + "src": "707:61:2" }, "payable": false, "returnParameters": { - "id": 26, + "id": 50, "nodeType": "ParameterList", "parameters": [], - "src": "788:0:1" + "src": "788:0:2" }, - "scope": 39, - "src": "693:301:1", + "scope": 63, + "src": "693:301:2", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" } ], - "scope": 40, - "src": "322:674:1" + "scope": 64, + "src": "322:674:2" } ], - "src": "0:997:1" + "src": "0:997:2" }, "compiler": { "name": "solc", - "version": "0.4.23+commit.124ca40d.Emscripten.clang" + "version": "0.4.24+commit.e67f0147.Emscripten.clang" }, "networks": {}, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-16T10:51:14.736Z" + "updatedAt": "2018-05-27T11:12:45.575Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/GnosisSafePersonalEdition.json b/safe-contracts/build/contracts/GnosisSafePersonalEdition.json index 6f71f64c..970909dc 100644 --- a/safe-contracts/build/contracts/GnosisSafePersonalEdition.json +++ b/safe-contracts/build/contracts/GnosisSafePersonalEdition.json @@ -365,6 +365,10 @@ "name": "gasPrice", "type": "uint256" }, + { + "name": "gasToken", + "type": "address" + }, { "name": "v", "type": "uint8[]" @@ -378,7 +382,7 @@ "type": "bytes32[]" } ], - "name": "execPayTransaction", + "name": "execAndPayTransaction", "outputs": [], "payable": false, "stateMutability": "nonpayable", @@ -469,6 +473,10 @@ "name": "gasPrice", "type": "uint256" }, + { + "name": "gasToken", + "type": "address" + }, { "name": "_nonce", "type": "uint256" @@ -486,51 +494,62 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50612b38806100206000396000f300608060405260043610610128576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630a51b01c1461012a5780632f54bf6e146102b1578063468721a71461030c5780634db5d039146103c4578063610b5925146104a85780637de7edef146104eb57806385e332cd1461052e57806386040aa9146105855780638cff6355146105f5578063a04222e11461064c578063a0e67e2b14610725578063a3f4df7e14610791578063ad8a045014610821578063affed0e01461086c578063b2494df314610897578063b7f3358d14610903578063b91a667f14610933578063c4ca3a9c14610983578063e009cfde14610a37578063e318b52b14610a9a578063e75235b814610b1d578063ffa1ad7414610b4e575b005b34801561013657600080fd5b506102af600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190803590602001909291908035906020019092919080359060200190929190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050610bde565b005b3480156102bd57600080fd5b506102f2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ccb565b604051808215151515815260200191505060405180910390f35b34801561031857600080fd5b506103aa600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190505050610d4d565b604051808215151515815260200191505060405180910390f35b3480156103d057600080fd5b5061048a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919080359060200190929190803590602001909291908035906020019092919080359060200190929190505050610dea565b60405180826000191660001916815260200191505060405180910390f35b3480156104b457600080fd5b506104e9600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611021565b005b3480156104f757600080fd5b5061052c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061129e565b005b34801561053a57600080fd5b50610543611341565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561059157600080fd5b506105f3600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050611346565b005b34801561060157600080fd5b5061060a6115cc565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561065857600080fd5b5061072360048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803560ff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091929192905050506115d1565b005b34801561073157600080fd5b5061073a6115eb565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561077d578082015181840152602081019050610762565b505050509050019250505060405180910390f35b34801561079d57600080fd5b506107a6611786565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156107e65780820151818401526020810190506107cb565b50505050905090810190601f1680156108135780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561082d57600080fd5b5061085660048036038101908080359060200190929190803590602001909291905050506117bf565b6040518082815260200191505060405180910390f35b34801561087857600080fd5b506108816117d4565b6040518082815260200191505060405180910390f35b3480156108a357600080fd5b506108ac6117da565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156108ef5780820151818401526020810190506108d4565b505050509050019250505060405180910390f35b34801561090f57600080fd5b50610931600480360381019080803560ff169060200190929190505050611a81565b005b34801561093f57600080fd5b50610981600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050611b00565b005b34801561098f57600080fd5b50610a21600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190505050611db8565b6040518082815260200191505060405180910390f35b348015610a4357600080fd5b50610a98600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e1e565b005b348015610aa657600080fd5b50610b1b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612051565b005b348015610b2957600080fd5b50610b326123e6565b604051808260ff1660ff16815260200191505060405180910390f35b348015610b5a57600080fd5b50610b636123fd565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610ba3578082015181840152602081019050610b88565b50505050905090810190601f168015610bd05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6000805a9150610c01610bf98d8d8d8d8d8d8d600554610dea565b868686612436565b60056000815480929190600101919050555087612af85a0310151515610c2657600080fd5b610c338c8c8c8c8c6125fd565b1515610c66577facfdb444727b3b8994850a379f4bfc8a5ca665a55604339199daafa16f687b1a60405160405180910390a15b610c725a8303886117bf565b90503273ffffffffffffffffffffffffffffffffffffffff166108fc8783029081150290604051600060405180830381858888f19350505050158015610cbc573d6000803e3d6000fd5b50505050505050505050505050565b600080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600080600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151515610dd357600080fd5b610de0858585855a6125fd565b9050949350505050565b600060197f01000000000000000000000000000000000000000000000000000000000000000260007f010000000000000000000000000000000000000000000000000000000000000002308b8b8b8b8b8b8b8b604051808c7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140188815260200187805190602001908083835b602083101515610f8e5780518252602082019150602081019050602083039250610f69565b6001836020036101000a038019825116818451168082178552505050505050905001866002811115610fbc57fe5b60ff167f01000000000000000000000000000000000000000000000000000000000000000281526001018581526020018481526020018381526020018281526020019b5050505050505050505050506040518091039020905098975050505050505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561105b57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141580156110af5750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b15156110ba57600080fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561113e57600080fd5b60016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156112d857600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141515156112fe57600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600181565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561138057600080fd5b8060ff166001600354031015151561139757600080fd5b8173ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561143057600080fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360008154809291906001900391905055508060ff16600460009054906101000a900460ff1660ff161415156115c7576115c681611a81565b5b505050565b600181565b6115db84846126fa565b6115e5828261298b565b50505050565b6060806000806003546040519080825280602002602001820160405280156116225781602001602082028038833980820191505090505b5092506000915060026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151561177d578083838151811015156116d257fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050818060010192505061168d565b82935050505090565b6040805190810160405280601c81526020017f476e6f736973205361666520506572736f6e616c2045646974696f6e0000000081525081565b6000615208612af88385010101905092915050565b60055481565b606060008060606000925060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415156118ee57600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508280600101935050611849565b8260405190808252806020026020018201604052801561191d5781602001602082028038833980820191505090505b5090506000925060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515611a78578181848151811015156119cd57fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508280600101935050611988565b80935050505090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611abb57600080fd5b6003548160ff1611151515611acf57600080fd5b60018160ff1610151515611ae257600080fd5b80600460006101000a81548160ff021916908360ff16021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611b3a57600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff1614158015611b8e5750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1515611b9957600080fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611c1d57600080fd5b60026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506003600081548092919060010191905055508060ff16600460009054906101000a900460ff1660ff16141515611db457611db381611a81565b5b5050565b6000803073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611df557600080fd5b5a9050611e05868686865a6125fd565b1515611e1057600080fd5b5a8103915050949350505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611e5857600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611ef157600080fd5b600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561208b57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141580156120df5750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b15156120ea57600080fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561216e57600080fd5b8173ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561220757600080fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b6000600460009054906101000a900460ff16905090565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000806000809250600090505b600460009054906101000a900460ff1660ff168110156125f457600187878381518110151561246e57fe5b90602001906020020151878481518110151561248657fe5b90602001906020020151878581518110151561249e57fe5b90602001906020020151604051600081526020016040526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000865af1158015612519573d6000803e3d6000fd5b5050506020604051035191506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515156125aa57600080fd5b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161115156125e457600080fd5b8192508080600101915050612443565b50505050505050565b6000806000600281111561260d57fe5b84600281111561261957fe5b14156126325761262b87878786612aca565b91506126f0565b6001600281111561263f57fe5b84600281111561264b57fe5b14156126635761265c878685612ae3565b91506126ef565b61266c85612afa565b905060008173ffffffffffffffffffffffffffffffffffffffff16141591507f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b5b5095945050505050565b600080600080600460009054906101000a900460ff1660ff1614151561271f57600080fd5b84518460ff161115151561273257600080fd5b60018460ff161015151561274557600080fd5b60019250600091505b84518210156128e257848281518110151561276557fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff16141580156127c55750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b15156127d057600080fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561285457600080fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550809250818060010192505061274e565b6001600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550845160038190555083600460006101000a81548160ff021916908360ff1602179055505050505050565b600060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612a1057600080fd5b6001806000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008273ffffffffffffffffffffffffffffffffffffffff16141515612ac657612aba82825a612ae3565b1515612ac557600080fd5b5b5050565b6000806000845160208601878987f19050949350505050565b60008060008451602086018786f490509392505050565b60008151602083016000f090509190505600a165627a7a72305820ae084368703023e0af23298ba3bdd986ab72eb9889663044cee13cf3e0ae154c0029", - "deployedBytecode": "0x608060405260043610610128576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630a51b01c1461012a5780632f54bf6e146102b1578063468721a71461030c5780634db5d039146103c4578063610b5925146104a85780637de7edef146104eb57806385e332cd1461052e57806386040aa9146105855780638cff6355146105f5578063a04222e11461064c578063a0e67e2b14610725578063a3f4df7e14610791578063ad8a045014610821578063affed0e01461086c578063b2494df314610897578063b7f3358d14610903578063b91a667f14610933578063c4ca3a9c14610983578063e009cfde14610a37578063e318b52b14610a9a578063e75235b814610b1d578063ffa1ad7414610b4e575b005b34801561013657600080fd5b506102af600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190803590602001909291908035906020019092919080359060200190929190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050610bde565b005b3480156102bd57600080fd5b506102f2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ccb565b604051808215151515815260200191505060405180910390f35b34801561031857600080fd5b506103aa600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190505050610d4d565b604051808215151515815260200191505060405180910390f35b3480156103d057600080fd5b5061048a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919080359060200190929190803590602001909291908035906020019092919080359060200190929190505050610dea565b60405180826000191660001916815260200191505060405180910390f35b3480156104b457600080fd5b506104e9600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611021565b005b3480156104f757600080fd5b5061052c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061129e565b005b34801561053a57600080fd5b50610543611341565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561059157600080fd5b506105f3600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050611346565b005b34801561060157600080fd5b5061060a6115cc565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561065857600080fd5b5061072360048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803560ff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091929192905050506115d1565b005b34801561073157600080fd5b5061073a6115eb565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561077d578082015181840152602081019050610762565b505050509050019250505060405180910390f35b34801561079d57600080fd5b506107a6611786565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156107e65780820151818401526020810190506107cb565b50505050905090810190601f1680156108135780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561082d57600080fd5b5061085660048036038101908080359060200190929190803590602001909291905050506117bf565b6040518082815260200191505060405180910390f35b34801561087857600080fd5b506108816117d4565b6040518082815260200191505060405180910390f35b3480156108a357600080fd5b506108ac6117da565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156108ef5780820151818401526020810190506108d4565b505050509050019250505060405180910390f35b34801561090f57600080fd5b50610931600480360381019080803560ff169060200190929190505050611a81565b005b34801561093f57600080fd5b50610981600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050611b00565b005b34801561098f57600080fd5b50610a21600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190505050611db8565b6040518082815260200191505060405180910390f35b348015610a4357600080fd5b50610a98600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e1e565b005b348015610aa657600080fd5b50610b1b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612051565b005b348015610b2957600080fd5b50610b326123e6565b604051808260ff1660ff16815260200191505060405180910390f35b348015610b5a57600080fd5b50610b636123fd565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610ba3578082015181840152602081019050610b88565b50505050905090810190601f168015610bd05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6000805a9150610c01610bf98d8d8d8d8d8d8d600554610dea565b868686612436565b60056000815480929190600101919050555087612af85a0310151515610c2657600080fd5b610c338c8c8c8c8c6125fd565b1515610c66577facfdb444727b3b8994850a379f4bfc8a5ca665a55604339199daafa16f687b1a60405160405180910390a15b610c725a8303886117bf565b90503273ffffffffffffffffffffffffffffffffffffffff166108fc8783029081150290604051600060405180830381858888f19350505050158015610cbc573d6000803e3d6000fd5b50505050505050505050505050565b600080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600080600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151515610dd357600080fd5b610de0858585855a6125fd565b9050949350505050565b600060197f01000000000000000000000000000000000000000000000000000000000000000260007f010000000000000000000000000000000000000000000000000000000000000002308b8b8b8b8b8b8b8b604051808c7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140188815260200187805190602001908083835b602083101515610f8e5780518252602082019150602081019050602083039250610f69565b6001836020036101000a038019825116818451168082178552505050505050905001866002811115610fbc57fe5b60ff167f01000000000000000000000000000000000000000000000000000000000000000281526001018581526020018481526020018381526020018281526020019b5050505050505050505050506040518091039020905098975050505050505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561105b57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141580156110af5750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b15156110ba57600080fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561113e57600080fd5b60016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156112d857600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141515156112fe57600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600181565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561138057600080fd5b8060ff166001600354031015151561139757600080fd5b8173ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561143057600080fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360008154809291906001900391905055508060ff16600460009054906101000a900460ff1660ff161415156115c7576115c681611a81565b5b505050565b600181565b6115db84846126fa565b6115e5828261298b565b50505050565b6060806000806003546040519080825280602002602001820160405280156116225781602001602082028038833980820191505090505b5092506000915060026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151561177d578083838151811015156116d257fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050818060010192505061168d565b82935050505090565b6040805190810160405280601c81526020017f476e6f736973205361666520506572736f6e616c2045646974696f6e0000000081525081565b6000615208612af88385010101905092915050565b60055481565b606060008060606000925060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415156118ee57600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508280600101935050611849565b8260405190808252806020026020018201604052801561191d5781602001602082028038833980820191505090505b5090506000925060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515611a78578181848151811015156119cd57fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508280600101935050611988565b80935050505090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611abb57600080fd5b6003548160ff1611151515611acf57600080fd5b60018160ff1610151515611ae257600080fd5b80600460006101000a81548160ff021916908360ff16021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611b3a57600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff1614158015611b8e5750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1515611b9957600080fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611c1d57600080fd5b60026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506003600081548092919060010191905055508060ff16600460009054906101000a900460ff1660ff16141515611db457611db381611a81565b5b5050565b6000803073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611df557600080fd5b5a9050611e05868686865a6125fd565b1515611e1057600080fd5b5a8103915050949350505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611e5857600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611ef157600080fd5b600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561208b57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141580156120df5750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b15156120ea57600080fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561216e57600080fd5b8173ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561220757600080fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b6000600460009054906101000a900460ff16905090565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000806000809250600090505b600460009054906101000a900460ff1660ff168110156125f457600187878381518110151561246e57fe5b90602001906020020151878481518110151561248657fe5b90602001906020020151878581518110151561249e57fe5b90602001906020020151604051600081526020016040526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000865af1158015612519573d6000803e3d6000fd5b5050506020604051035191506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515156125aa57600080fd5b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161115156125e457600080fd5b8192508080600101915050612443565b50505050505050565b6000806000600281111561260d57fe5b84600281111561261957fe5b14156126325761262b87878786612aca565b91506126f0565b6001600281111561263f57fe5b84600281111561264b57fe5b14156126635761265c878685612ae3565b91506126ef565b61266c85612afa565b905060008173ffffffffffffffffffffffffffffffffffffffff16141591507f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b5b5095945050505050565b600080600080600460009054906101000a900460ff1660ff1614151561271f57600080fd5b84518460ff161115151561273257600080fd5b60018460ff161015151561274557600080fd5b60019250600091505b84518210156128e257848281518110151561276557fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff16141580156127c55750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b15156127d057600080fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561285457600080fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550809250818060010192505061274e565b6001600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550845160038190555083600460006101000a81548160ff021916908360ff1602179055505050505050565b600060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612a1057600080fd5b6001806000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008273ffffffffffffffffffffffffffffffffffffffff16141515612ac657612aba82825a612ae3565b1515612ac557600080fd5b5b5050565b6000806000845160208601878987f19050949350505050565b60008060008451602086018786f490509392505050565b60008151602083016000f090509190505600a165627a7a72305820ae084368703023e0af23298ba3bdd986ab72eb9889663044cee13cf3e0ae154c0029", - "sourceMap": "314:5262:2:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;314:5262:2;;;;;;;", - "deployedSourceMap": "314:5262:2:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1443:1003;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1443:1003:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4841:129:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4841:129:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2522:377:6;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2522:377:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5150:424:2;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5150:424:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1235:391:6;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1235:391:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;626:208:4;;8:9:-1;5:2;;;30:1;27;20:12;5:2;626:208:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;499:55:6;;8:9:-1;5:2;;;30:1;27;20:12;5:2;499:55:6;;;;;;;;;;;;;;;;;;;;;;;;;;;2776:573:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2776:573:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;287:54;;8:9:-1;5:2;;;30:1;27;20:12;5:2;287:54:7;;;;;;;;;;;;;;;;;;;;;;;;;;;693:301:1;;8:9:-1;5:2;;;30:1;27;20:12;5:2;693:301:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5052:458:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5052:458:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;5052:458:7;;;;;;;;;;;;;;;;;382:60:2;;8:9:-1;5:2;;;30:1;27;20:12;5:2;382:60:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;382:60:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2878:209;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2878:209:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;644:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;644:20:2;;;;;;;;;;;;;;;;;;;;;;;4423:738:6;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4423:738:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;4423:738:6;;;;;;;;;;;;;;;;;4398:318:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4398:318:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;1906:528;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1906:528:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3786:299:2;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3786:299:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1887::6;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1887:299:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3683:526:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3683:526:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4722:113;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4722:113:7;;;;;;;;;;;;;;;;;;;;;;;;;;;448:40:2;;8:9:-1;5:2;;;30:1;27;20:12;5:2;448:40:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;448:40:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1443:1003;1748:16;2137;1767:9;1748:28;;1786:103;1796:83;1815:2;1819:5;1826:4;1832:9;1843;1854:7;1863:8;1873:5;;1796:18;:83::i;:::-;1881:1;1884;1887;1786:9;:103::i;:::-;1950:5;;:7;;;;;;;;;;;;;2008:9;602:5;1975:9;:29;:42;;1967:51;;;;;;;;2033:46;2041:2;2045:5;2052:4;2058:9;2069;2033:7;:46::i;:::-;2032:47;2028:100;;;2100:17;;;;;;;;;;2028:100;2156:44;2181:9;2170:8;:20;2192:7;2156:13;:44::i;:::-;2137:63;;2400:9;:18;;:39;2430:8;2419;:19;2400:39;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2400:39:2;1443:1003;;;;;;;;;;;;:::o;4841:129:7:-;4918:4;4962:1;4945:6;:13;4952:5;4945:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;;4938:25;;4841:129;;;:::o;2522:377:6:-;2654:12;2762:1;2739:7;:19;2747:10;2739:19;;;;;;;;;;;;;;;;;;;;;;;;;:24;;;;2731:33;;;;;;;;2846:46;2854:2;2858:5;2865:4;2871:9;2882;2846:7;:46::i;:::-;2836:56;;2522:377;;;;;;:::o;5150:424:2:-;5435:7;5480:4;5475:10;;5492:1;5487:7;;5496:4;5502:2;5506:5;5513:4;5519:9;5530;5541:7;5550:8;5560:6;5465:102;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;;;5465:102:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5458:109;;5150:424;;;;;;;;;;:::o;1235:391:6:-;244:4:8;222:27;;:10;:27;;;214:36;;;;;;;;1401:1:6;1390:6;1382:20;;;;:59;;;;;550:3;1406:35;;1414:6;1406:35;;;;1382:59;1374:68;;;;;;;;1520:1;1501:7;:15;1509:6;1501:15;;;;;;;;;;;;;;;;;;;;;;;;;:20;;;1493:29;;;;;;;;1550:7;:25;550:3;1550:25;;;;;;;;;;;;;;;;;;;;;;;;;1532:7;:15;1540:6;1532:15;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;1613:6;1585:7;:25;550:3;1585:25;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;1235:391;:::o;626:208:4:-;244:4:8;222:27;;:10;:27;;;214:36;;;;;;;;791:1:4;776:11;:16;;;;768:25;;;;;;;;816:11;803:10;;:24;;;;;;;;;;;;;;;;;;626:208;:::o;499:55:6:-;550:3;499:55;:::o;2776:573:7:-;244:4:8;222:27;;:10;:27;;;214:36;;;;;;;;3000:10:7;2982:28;;2995:1;2982:10;;:14;:28;;2974:37;;;;;;;;3112:5;3091:26;;:6;:17;3098:9;3091:17;;;;;;;;;;;;;;;;;;;;;;;;;:26;;;3083:35;;;;;;;;3148:6;:13;3155:5;3148:13;;;;;;;;;;;;;;;;;;;;;;;;;3128:6;:17;3135:9;3128:17;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;3187:1;3171:6;:13;3178:5;3171:13;;;;;;;;;;;;;;;;:17;;;;;;;;;;;;;;;;;;3198:10;;:12;;;;;;;;;;;;;;3291:10;3278:23;;:9;;;;;;;;;;;:23;;;;3274:68;;;3315:27;3331:10;3315:15;:27::i;:::-;3274:68;2776:573;;;:::o;287:54::-;337:3;287:54;:::o;693:301:1:-;798:32;810:7;819:10;798:11;:32::i;:::-;965:22;978:2;982:4;965:12;:22::i;:::-;693:301;;;;:::o;5052:458:7:-;5118:9;5143:22;5237:13;5264:20;5182:10;;5168:25;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;5168:25:7;;;;5143:50;;5253:1;5237:17;;5287:6;:23;337:3;5287:23;;;;;;;;;;;;;;;;;;;;;;;;;5264:46;;5320:162;337:3;5326:31;;:12;:31;;;;5320:162;;;5388:12;5373:5;5379;5373:12;;;;;;;;;;;;;;;;;:27;;;;;;;;;;;5429:6;:20;5436:12;5429:20;;;;;;;;;;;;;;;;;;;;;;;;;5414:35;;5463:8;;;;;;;5320:162;;;5498:5;5491:12;;5052:458;;;;:::o;382:60:2:-;;;;;;;;;;;;;;;;;;;;:::o;2878:209::-;2987:7;545:5;602;3033:7;3018:12;:22;:42;:62;3011:69;;2878:209;;;;:::o;644:20::-;;;;:::o;4423:738:6:-;4490:9;4549:19;4582:21;4782:22;4571:1;4549:23;;4606:7;:25;550:3;4606:25;;;;;;;;;;;;;;;;;;;;;;;;;4582:49;;4641:132;550:3;4647:33;;:13;:33;;;;4641:132;;;4712:7;:22;4720:13;4712:22;;;;;;;;;;;;;;;;;;;;;;;;;4696:38;;4748:14;;;;;;;4641:132;;;4821:11;4807:26;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;4807:26:6;;;;4782:51;;4891:1;4877:15;;4918:7;:25;550:3;4918:25;;;;;;;;;;;;;;;;;;;;;;;;;4902:41;;4953:180;550:3;4959:33;;:13;:33;;;;4953:180;;;5029:13;5008:5;5014:11;5008:18;;;;;;;;;;;;;;;;;:34;;;;;;;;;;;5072:7;:22;5080:13;5072:22;;;;;;;;;;;;;;;;;;;;;;;;;5056:38;;5108:14;;;;;;;4953:180;;;5149:5;5142:12;;4423:738;;;;:::o;4398:318:7:-;244:4:8;222:27;;:10;:27;;;214:36;;;;;;;;4580:10:7;;4566;:24;;;;4558:33;;;;;;;;4675:1;4661:10;:15;;;;4653:24;;;;;;;;4699:10;4687:9;;:22;;;;;;;;;;;;;;;;;;4398:318;:::o;1906:528::-;244:4:8;222:27;;:10;:27;;;214:36;;;;;;;;2076:1:7;2067:5;:10;;;;:38;;;;;337:3;2081:24;;:5;:24;;;;2067:38;2059:47;;;;;;;;2181:1;2164:6;:13;2171:5;2164:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;2156:27;;;;;;;;2209:6;:23;337:3;2209:23;;;;;;;;;;;;;;;;;;;;;;;;;2193:6;:13;2200:5;2193:13;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;2268:5;2242:6;:23;337:3;2242:23;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;2283:10;;:12;;;;;;;;;;;;;2376:10;2363:23;;:9;;;;;;;;;;;:23;;;;2359:68;;;2400:27;2416:10;2400:15;:27::i;:::-;2359:68;1906:528;;:::o;3786:299:2:-;3925:7;3948:16;244:4:8;222:27;;:10;:27;;;214:36;;;;;;;;3967:9:2;3948:28;;3994:46;4002:2;4006:5;4013:4;4019:9;4030;3994:7;:46::i;:::-;3986:55;;;;;;;;4069:9;4058:8;:20;4051:27;;3786:299;;;;;;;:::o;1887::6:-;244:4:8;222:27;;:10;:27;;;214:36;;;;;;;;2095:6:6;2064:38;;:7;:19;2072:10;2064:19;;;;;;;;;;;;;;;;;;;;;;;;;:38;;;2056:47;;;;;;;;2135:7;:15;2143:6;2135:15;;;;;;;;;;;;;;;;;;;;;;;;;2113:7;:19;2121:10;2113:19;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;2178:1;2160:7;:15;2168:6;2160:15;;;;;;;;;;;;;;;;:19;;;;;;;;;;;;;;;;;;1887:299;;:::o;3683:526:7:-;244:4:8;222:27;;:10;:27;;;214:36;;;;;;;;3866:1:7;3854:8;:13;;;;:44;;;;;337:3;3871:27;;:8;:27;;;;3854:44;3846:53;;;;;;;;3977:1;3957:6;:16;3964:8;3957:16;;;;;;;;;;;;;;;;;;;;;;;;;:21;;;3949:30;;;;;;;;4080:8;4059:29;;:6;:17;4066:9;4059:17;;;;;;;;;;;;;;;;;;;;;;;;;:29;;;4051:38;;;;;;;;4118:6;:16;4125:8;4118:16;;;;;;;;;;;;;;;;;;;;;;;;;4099:6;:16;4106:8;4099:16;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;4164:8;4144:6;:17;4151:9;4144:17;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;4201:1;4182:6;:16;4189:8;4182:16;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;3683:526;;;:::o;4722:113::-;4791:5;4819:9;;;;;;;;;;;4812:16;;4722:113;:::o;448:40:2:-;;;;;;;;;;;;;;;;;;;;:::o;4091:541::-;4257:17;4297:20;4327:9;4285:1;4257:30;;4397:1;4393:5;;4388:238;4404:9;;;;;;;;;;;4400:13;;:1;:13;4388:238;;;4449:33;4459:4;4465:1;4467;4465:4;;;;;;;;;;;;;;;;;;4471:1;4473;4471:4;;;;;;;;;;;;;;;;;;4477:1;4479;4477:4;;;;;;;;;;;;;;;;;;4449:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4449:33:2;;;;;;;;4434:48;;4528:1;4504:6;:20;4511:12;4504:20;;;;;;;;;;;;;;;;;;;;;;;;;:25;;;;4496:34;;;;;;;;4567:9;4552:24;;:12;:24;;;4544:33;;;;;;;;4603:12;4591:24;;4415:3;;;;;;;4388:238;;;4091:541;;;;;;;:::o;2905:548:6:-;3036:12;3307:19;3081;3068:32;;;;;;;;:9;:32;;;;;;;;;3064:383;;;3124:35;3136:2;3140:5;3147:4;3153:5;3124:11;:35::i;:::-;3114:45;;3064:383;;;3191:27;3178:40;;;;;;;;:9;:40;;;;;;;;;3174:273;;;3242:36;3262:2;3266:4;3272:5;3242:19;:36::i;:::-;3232:46;;3174:273;;;3329:19;3343:4;3329:13;:19::i;:::-;3307:41;;3387:1;3372:11;:16;;;;3362:26;;3407:29;3424:11;3407:29;;;;;;;;;;;;;;;;;;;;;;3174:273;3064:383;2905:548;;;;;;;;:::o;641:1025:7:-;1132:20;1185:9;1284:13;875:1;862:9;;;;;;;;;;;:14;;;854:23;;;;;;;;984:7;:14;970:10;:28;;;;962:37;;;;;;;;1083:1;1069:10;:15;;;;1061:24;;;;;;;;337:3;1132:38;;1197:1;1185:13;;1180:363;1204:7;:14;1200:1;:18;1180:363;;;1300:7;1308:1;1300:10;;;;;;;;;;;;;;;;;;1284:26;;1341:1;1332:5;:10;;;;:38;;;;;337:3;1346:24;;:5;:24;;;;1332:38;1324:47;;;;;;;;1454:1;1437:6;:13;1444:5;1437:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;1429:27;;;;;;;;1493:5;1470:6;:20;1477:12;1470:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;1527:5;1512:20;;1220:3;;;;;;;1180:363;;;337:3;1552:6;:20;1559:12;1552:20;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;1613:7;:14;1600:10;:27;;;;1649:10;1637:9;;:22;;;;;;;;;;;;;;;;;;641:1025;;;;;:::o;735:333:6:-;849:1;820:7;:25;550:3;820:25;;;;;;;;;;;;;;;;;;;;;;;;;:30;;;812:39;;;;;;;;550:3;861:7;:25;550:3;861:25;;;;;;;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;925:1;919:2;:7;;;;915:146;;;1020:40;1040:2;1044:4;1050:9;1020:19;:40::i;:::-;1012:49;;;;;;;;915:146;735:333;;:::o;3459:309::-;3568:12;3750:1;3747;3740:4;3734:11;3727:4;3721;3717:15;3710:5;3706:2;3699:5;3694:58;3683:69;;3669:93;;;;;;:::o;3774:303::-;3876:12;4059:1;4056;4049:4;4043:11;4036:4;4030;4026:15;4022:2;4015:5;4002:59;3991:70;;3977:94;;;;;:::o;4083:261::-;4152:19;4322:4;4316:11;4309:4;4303;4299:15;4296:1;4289:39;4274:54;;4260:78;;;:::o", - "source": "pragma solidity 0.4.23;\nimport \"./GnosisSafe.sol\";\nimport \"./MasterCopy.sol\";\n\n\n/// @title Gnosis Safe Personal Edition - A multisignature wallet with support for confirmations using signed messages based on ERC191.\n/// @author Stefan George - \n/// @author Richard Meissner - \ncontract GnosisSafePersonalEdition is MasterCopy, GnosisSafe {\n\n string public constant NAME = \"Gnosis Safe Personal Edition\";\n string public constant VERSION = \"0.0.1\";\n \n uint256 internal constant BASE_TX_GAS_COSTS = 21000;\n uint256 internal constant PAYMENT_GAS_COSTS = 11000;\n\n event ExecutionFailed();\n\n uint256 public nonce;\n\n /// @dev Allows to execute a Safe transaction confirmed by required number of owners.\n /// @param to Destination address of Safe transaction.\n /// @param value Ether value of Safe transaction.\n /// @param data Data payload of Safe transaction.\n /// @param operation Operation type of Safe transaction.\n /// @param safeTxGas Gas that should be used for the Safe transaction.\n /// @param dataGas Gas costs for data used to trigger the safe transaction.\n /// @param gasPrice Gas price that should be used for the payment calculation.\n /// @param v Array of signature V values sorted by owner addresses.\n /// @param r Array of signature R values sorted by owner addresses.\n /// @param s Array of signature S values sorted by owner addresses.\n function execPayTransaction(\n address to, \n uint256 value, \n bytes data, \n Enum.Operation operation, \n uint256 safeTxGas,\n uint256 dataGas,\n uint256 gasPrice,\n uint8[] v, \n bytes32[] r, \n bytes32[] s\n )\n public\n {\n uint256 startGas = gasleft();\n checkHash(getTransactionHash(to, value, data, operation, safeTxGas, dataGas, gasPrice, nonce), v, r, s);\n // Increase nonce and execute transaction.\n nonce++;\n require(gasleft() - PAYMENT_GAS_COSTS >= safeTxGas);\n if (!execute(to, value, data, operation, safeTxGas)) {\n emit ExecutionFailed();\n }\n uint256 gasCosts = totalGasCosts(startGas - gasleft(), dataGas);\n\n // We transfer the calculated tx costs to the tx.origin to avoid sending it to intermediate contracts that have made calls\n // solium-disable-next-line security/no-tx-origin\n tx.origin.transfer(gasCosts * gasPrice);\n }\n\n /// @dev Calculates the total gas costs for a safe transaction with the gas costs for the execution of the transaction.\n /// @param executionGas Gas costs for the execution of the safe transaction.\n /// @param dataGas Gas costs for data used to trigger the safe transaction.\n /// @return Total gas costs for the execution (this includes gas costs for the payment to tx.origin, base transaction and payload data).\n function totalGasCosts(uint256 executionGas, uint256 dataGas) \n public \n pure\n returns (uint256) \n {\n return executionGas + dataGas + PAYMENT_GAS_COSTS + BASE_TX_GAS_COSTS;\n }\n\n /// @dev Allows to estimate a Safe transaction. \n /// This method can only be used by the safe itself in a transaction. When estimating set `from` to the address of the safe.\n /// Since the `estimateGas` function includes refunds, call this method to get an estimated of the costs that are deducted from the safe with `execPayTransaction`\n /// @param to Destination address of Safe transaction.\n /// @param value Ether value of Safe transaction.\n /// @param data Data payload of Safe transaction.\n /// @param operation Operation type of Safe transaction.\n /// @return Estimate without refunds and overhead fees (base transaction and payload data gas costs).\n function requiredTxGas(address to, uint256 value, bytes data, Enum.Operation operation)\n public\n authorized\n returns (uint256)\n {\n uint256 startGas = gasleft();\n require(execute(to, value, data, operation, gasleft()));\n return startGas - gasleft();\n }\n\n function checkHash(bytes32 hash, uint8[] v, bytes32[] r, bytes32[] s)\n internal\n view\n {\n // There cannot be an owner with address 0.\n address lastOwner = address(0);\n address currentOwner;\n uint256 i;\n // Validate threshold is reached.\n for (i = 0; i < threshold; i++) {\n currentOwner = ecrecover(hash, v[i], r[i], s[i]);\n require(owners[currentOwner] != 0);\n require(currentOwner > lastOwner);\n lastOwner = currentOwner;\n }\n }\n\n /// @dev Returns hash to be signed by owners.\n /// @param to Destination address.\n /// @param value Ether value.\n /// @param data Data payload.\n /// @param operation Operation type.\n /// @param safeTxGas Fas that should be used for the safe transaction.\n /// @param dataGas Gas costs for data used to trigger the safe transaction.\n /// @param gasPrice Maximum gas price that should be used for this transaction.\n /// @param _nonce Transaction nonce.\n /// @return Transaction hash.\n function getTransactionHash(\n address to, \n uint256 value, \n bytes data, \n Enum.Operation operation, \n uint256 safeTxGas, \n uint256 dataGas, \n uint256 gasPrice, \n uint256 _nonce\n )\n public\n view\n returns (bytes32)\n {\n return keccak256(byte(0x19), byte(0), this, to, value, data, operation, safeTxGas, dataGas, gasPrice, _nonce);\n }\n}\n", + "bytecode": "0x608060405234801561001057600080fd5b50612e18806100206000396000f300608060405260043610610128576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806314148af21461012a5780632f54bf6e146102d1578063468721a71461032c578063610b5925146103e45780637de7edef1461042757806385e332cd1461046a57806386040aa9146104c15780638cff635514610531578063a04222e114610588578063a0e67e2b14610661578063a3f4df7e146106cd578063ad8a04501461075d578063affed0e0146107a8578063b2494df3146107d3578063b7f3358d1461083f578063b91a667f1461086f578063ba08ea24146108bf578063c4ca3a9c146109c3578063e009cfde14610a77578063e318b52b14610ada578063e75235b814610b5d578063ffa1ad7414610b8e575b005b34801561013657600080fd5b506102cf600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190803590602001909291908035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050610c1e565b005b3480156102dd57600080fd5b50610312600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e41565b604051808215151515815260200191505060405180910390f35b34801561033857600080fd5b506103ca600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190505050610ec3565b604051808215151515815260200191505060405180910390f35b3480156103f057600080fd5b50610425600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f60565b005b34801561043357600080fd5b50610468600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506111dd565b005b34801561047657600080fd5b5061047f611280565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156104cd57600080fd5b5061052f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050611285565b005b34801561053d57600080fd5b5061054661150b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561059457600080fd5b5061065f60048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803560ff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050611510565b005b34801561066d57600080fd5b5061067661152a565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156106b957808201518184015260208101905061069e565b505050509050019250505060405180910390f35b3480156106d957600080fd5b506106e26116c5565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610722578082015181840152602081019050610707565b50505050905090810190601f16801561074f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561076957600080fd5b5061079260048036038101908080359060200190929190803590602001909291905050506116fe565b6040518082815260200191505060405180910390f35b3480156107b457600080fd5b506107bd611713565b6040518082815260200191505060405180910390f35b3480156107df57600080fd5b506107e8611719565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561082b578082015181840152602081019050610810565b505050509050019250505060405180910390f35b34801561084b57600080fd5b5061086d600480360381019080803560ff1690602001909291905050506119c0565b005b34801561087b57600080fd5b506108bd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050611a3f565b005b3480156108cb57600080fd5b506109a5600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190803590602001909291908035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611cf7565b60405180826000191660001916815260200191505060405180910390f35b3480156109cf57600080fd5b50610a61600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190505050611fde565b6040518082815260200191505060405180910390f35b348015610a8357600080fd5b50610ad8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506120fe565b005b348015610ae657600080fd5b50610b5b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612331565b005b348015610b6957600080fd5b50610b726126c6565b604051808260ff1660ff16815260200191505060405180910390f35b348015610b9a57600080fd5b50610ba36126dd565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610be3578082015181840152602081019050610bc8565b50505050905090810190601f168015610c105780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60008060005a9250610c44610c3c8f8f8f8f8f8f8f8f600554611cf7565b878787612716565b60056000815480929190600101919050555089612af85a0310151515610c6957600080fd5b610c768e8e8e8e8e6128dd565b1515610ca9577facfdb444727b3b8994850a379f4bfc8a5ca665a55604339199daafa16f687b1a60405160405180910390a15b6000881115610e3157610cbe5a84038a6116fe565b91508782029050600073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff161415610d46573273ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610d40573d6000803e3d6000fd5b50610e30565b8673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb32836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610de957600080fd5b505af1158015610dfd573d6000803e3d6000fd5b505050506040513d6020811015610e1357600080fd5b81019080805190602001909291905050501515610e2f57600080fd5b5b5b5050505050505050505050505050565b600080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600080600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151515610f4957600080fd5b610f56858585855a6128dd565b9050949350505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610f9a57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614158015610fee5750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1515610ff957600080fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561107d57600080fd5b60016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561121757600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561123d57600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600181565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156112bf57600080fd5b8060ff16600160035403101515156112d657600080fd5b8173ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561136f57600080fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360008154809291906001900391905055508060ff16600460009054906101000a900460ff1660ff1614151561150657611505816119c0565b5b505050565b600181565b61151a84846129da565b6115248282612c6b565b50505050565b6060806000806003546040519080825280602002602001820160405280156115615781602001602082028038833980820191505090505b5092506000915060026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415156116bc5780838381518110151561161157fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081806001019250506115cc565b82935050505090565b6040805190810160405280601c81526020017f476e6f736973205361666520506572736f6e616c2045646974696f6e0000000081525081565b6000615208612af88385010101905092915050565b60055481565b606060008060606000925060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151561182d57600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508280600101935050611788565b8260405190808252806020026020018201604052801561185c5781602001602082028038833980820191505090505b5090506000925060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415156119b75781818481518110151561190c57fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915082806001019350506118c7565b80935050505090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156119fa57600080fd5b6003548160ff1611151515611a0e57600080fd5b60018160ff1610151515611a2157600080fd5b80600460006101000a81548160ff021916908360ff16021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611a7957600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff1614158015611acd5750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1515611ad857600080fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611b5c57600080fd5b60026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506003600081548092919060010191905055508060ff16600460009054906101000a900460ff1660ff16141515611cf357611cf2816119c0565b5b5050565b600060197f01000000000000000000000000000000000000000000000000000000000000000260007f010000000000000000000000000000000000000000000000000000000000000002308c8c8c8c8c8c8c8c8c604051602001808d7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018c7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140189815260200188805190602001908083835b602083101515611e9f5780518252602082019150602081019050602083039250611e7a565b6001836020036101000a038019825116818451168082178552505050505050905001876002811115611ecd57fe5b60ff167f01000000000000000000000000000000000000000000000000000000000000000281526001018681526020018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018281526020019c505050505050505050505050506040516020818303038152906040526040518082805190602001908083835b602083101515611fa25780518252602082019150602081019050602083039250611f7d565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902090509998505050505050505050565b60008060003073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561201d57600080fd5b5a915061202d878787875a6128dd565b151561203857600080fd5b5a8203905080604051602001808281526020019150506040516020818303038152906040526040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156120c35780820151818401526020810190506120a8565b50505050905090810190601f1680156120f05780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561213857600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156121d157600080fd5b600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561236b57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141580156123bf5750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b15156123ca57600080fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561244e57600080fd5b8173ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156124e757600080fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b6000600460009054906101000a900460ff16905090565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000806000809250600090505b600460009054906101000a900460ff1660ff168110156128d457600187878381518110151561274e57fe5b90602001906020020151878481518110151561276657fe5b90602001906020020151878581518110151561277e57fe5b90602001906020020151604051600081526020016040526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000865af11580156127f9573d6000803e3d6000fd5b5050506020604051035191506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415151561288a57600080fd5b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161115156128c457600080fd5b8192508080600101915050612723565b50505050505050565b600080600060028111156128ed57fe5b8460028111156128f957fe5b14156129125761290b87878786612daa565b91506129d0565b6001600281111561291f57fe5b84600281111561292b57fe5b14156129435761293c878685612dc3565b91506129cf565b61294c85612dda565b905060008173ffffffffffffffffffffffffffffffffffffffff16141591507f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b5b5095945050505050565b600080600080600460009054906101000a900460ff1660ff161415156129ff57600080fd5b84518460ff1611151515612a1257600080fd5b60018460ff1610151515612a2557600080fd5b60019250600091505b8451821015612bc2578482815181101515612a4557fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff1614158015612aa55750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1515612ab057600080fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612b3457600080fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508092508180600101925050612a2e565b6001600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550845160038190555083600460006101000a81548160ff021916908360ff1602179055505050505050565b600060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612cf057600080fd5b6001806000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008273ffffffffffffffffffffffffffffffffffffffff16141515612da657612d9a82825a612dc3565b1515612da557600080fd5b5b5050565b6000806000845160208601878987f19050949350505050565b60008060008451602086018786f490509392505050565b60008151602083016000f090509190505600a165627a7a72305820347ad2b5b6fe6e72a8ecd2f9f47f2abf73193416650afadcef171dd55cb8297c0029", + "deployedBytecode": "0x608060405260043610610128576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806314148af21461012a5780632f54bf6e146102d1578063468721a71461032c578063610b5925146103e45780637de7edef1461042757806385e332cd1461046a57806386040aa9146104c15780638cff635514610531578063a04222e114610588578063a0e67e2b14610661578063a3f4df7e146106cd578063ad8a04501461075d578063affed0e0146107a8578063b2494df3146107d3578063b7f3358d1461083f578063b91a667f1461086f578063ba08ea24146108bf578063c4ca3a9c146109c3578063e009cfde14610a77578063e318b52b14610ada578063e75235b814610b5d578063ffa1ad7414610b8e575b005b34801561013657600080fd5b506102cf600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190803590602001909291908035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050610c1e565b005b3480156102dd57600080fd5b50610312600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e41565b604051808215151515815260200191505060405180910390f35b34801561033857600080fd5b506103ca600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190505050610ec3565b604051808215151515815260200191505060405180910390f35b3480156103f057600080fd5b50610425600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f60565b005b34801561043357600080fd5b50610468600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506111dd565b005b34801561047657600080fd5b5061047f611280565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156104cd57600080fd5b5061052f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050611285565b005b34801561053d57600080fd5b5061054661150b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561059457600080fd5b5061065f60048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803560ff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050611510565b005b34801561066d57600080fd5b5061067661152a565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156106b957808201518184015260208101905061069e565b505050509050019250505060405180910390f35b3480156106d957600080fd5b506106e26116c5565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610722578082015181840152602081019050610707565b50505050905090810190601f16801561074f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561076957600080fd5b5061079260048036038101908080359060200190929190803590602001909291905050506116fe565b6040518082815260200191505060405180910390f35b3480156107b457600080fd5b506107bd611713565b6040518082815260200191505060405180910390f35b3480156107df57600080fd5b506107e8611719565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561082b578082015181840152602081019050610810565b505050509050019250505060405180910390f35b34801561084b57600080fd5b5061086d600480360381019080803560ff1690602001909291905050506119c0565b005b34801561087b57600080fd5b506108bd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050611a3f565b005b3480156108cb57600080fd5b506109a5600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190803590602001909291908035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611cf7565b60405180826000191660001916815260200191505060405180910390f35b3480156109cf57600080fd5b50610a61600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190505050611fde565b6040518082815260200191505060405180910390f35b348015610a8357600080fd5b50610ad8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506120fe565b005b348015610ae657600080fd5b50610b5b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612331565b005b348015610b6957600080fd5b50610b726126c6565b604051808260ff1660ff16815260200191505060405180910390f35b348015610b9a57600080fd5b50610ba36126dd565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610be3578082015181840152602081019050610bc8565b50505050905090810190601f168015610c105780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60008060005a9250610c44610c3c8f8f8f8f8f8f8f8f600554611cf7565b878787612716565b60056000815480929190600101919050555089612af85a0310151515610c6957600080fd5b610c768e8e8e8e8e6128dd565b1515610ca9577facfdb444727b3b8994850a379f4bfc8a5ca665a55604339199daafa16f687b1a60405160405180910390a15b6000881115610e3157610cbe5a84038a6116fe565b91508782029050600073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff161415610d46573273ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610d40573d6000803e3d6000fd5b50610e30565b8673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb32836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610de957600080fd5b505af1158015610dfd573d6000803e3d6000fd5b505050506040513d6020811015610e1357600080fd5b81019080805190602001909291905050501515610e2f57600080fd5b5b5b5050505050505050505050505050565b600080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600080600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151515610f4957600080fd5b610f56858585855a6128dd565b9050949350505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610f9a57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614158015610fee5750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1515610ff957600080fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561107d57600080fd5b60016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561121757600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561123d57600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600181565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156112bf57600080fd5b8060ff16600160035403101515156112d657600080fd5b8173ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561136f57600080fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360008154809291906001900391905055508060ff16600460009054906101000a900460ff1660ff1614151561150657611505816119c0565b5b505050565b600181565b61151a84846129da565b6115248282612c6b565b50505050565b6060806000806003546040519080825280602002602001820160405280156115615781602001602082028038833980820191505090505b5092506000915060026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415156116bc5780838381518110151561161157fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081806001019250506115cc565b82935050505090565b6040805190810160405280601c81526020017f476e6f736973205361666520506572736f6e616c2045646974696f6e0000000081525081565b6000615208612af88385010101905092915050565b60055481565b606060008060606000925060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151561182d57600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508280600101935050611788565b8260405190808252806020026020018201604052801561185c5781602001602082028038833980820191505090505b5090506000925060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415156119b75781818481518110151561190c57fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915082806001019350506118c7565b80935050505090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156119fa57600080fd5b6003548160ff1611151515611a0e57600080fd5b60018160ff1610151515611a2157600080fd5b80600460006101000a81548160ff021916908360ff16021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611a7957600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff1614158015611acd5750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1515611ad857600080fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611b5c57600080fd5b60026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506003600081548092919060010191905055508060ff16600460009054906101000a900460ff1660ff16141515611cf357611cf2816119c0565b5b5050565b600060197f01000000000000000000000000000000000000000000000000000000000000000260007f010000000000000000000000000000000000000000000000000000000000000002308c8c8c8c8c8c8c8c8c604051602001808d7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018c7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140189815260200188805190602001908083835b602083101515611e9f5780518252602082019150602081019050602083039250611e7a565b6001836020036101000a038019825116818451168082178552505050505050905001876002811115611ecd57fe5b60ff167f01000000000000000000000000000000000000000000000000000000000000000281526001018681526020018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018281526020019c505050505050505050505050506040516020818303038152906040526040518082805190602001908083835b602083101515611fa25780518252602082019150602081019050602083039250611f7d565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902090509998505050505050505050565b60008060003073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561201d57600080fd5b5a915061202d878787875a6128dd565b151561203857600080fd5b5a8203905080604051602001808281526020019150506040516020818303038152906040526040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156120c35780820151818401526020810190506120a8565b50505050905090810190601f1680156120f05780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561213857600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156121d157600080fd5b600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561236b57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141580156123bf5750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b15156123ca57600080fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561244e57600080fd5b8173ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156124e757600080fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b6000600460009054906101000a900460ff16905090565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000806000809250600090505b600460009054906101000a900460ff1660ff168110156128d457600187878381518110151561274e57fe5b90602001906020020151878481518110151561276657fe5b90602001906020020151878581518110151561277e57fe5b90602001906020020151604051600081526020016040526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000865af11580156127f9573d6000803e3d6000fd5b5050506020604051035191506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415151561288a57600080fd5b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161115156128c457600080fd5b8192508080600101915050612723565b50505050505050565b600080600060028111156128ed57fe5b8460028111156128f957fe5b14156129125761290b87878786612daa565b91506129d0565b6001600281111561291f57fe5b84600281111561292b57fe5b14156129435761293c878685612dc3565b91506129cf565b61294c85612dda565b905060008173ffffffffffffffffffffffffffffffffffffffff16141591507f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b5b5095945050505050565b600080600080600460009054906101000a900460ff1660ff161415156129ff57600080fd5b84518460ff1611151515612a1257600080fd5b60018460ff1610151515612a2557600080fd5b60019250600091505b8451821015612bc2578482815181101515612a4557fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff1614158015612aa55750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1515612ab057600080fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612b3457600080fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508092508180600101925050612a2e565b6001600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550845160038190555083600460006101000a81548160ff021916908360ff1602179055505050505050565b600060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612cf057600080fd5b6001806000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008273ffffffffffffffffffffffffffffffffffffffff16141515612da657612d9a82825a612dc3565b1515612da557600080fd5b5b5050565b6000806000845160208601878987f19050949350505050565b60008060008451602086018786f490509392505050565b60008151602083016000f090509190505600a165627a7a72305820347ad2b5b6fe6e72a8ecd2f9f47f2abf73193416650afadcef171dd55cb8297c0029", + "sourceMap": "449:6193:3:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;449:6193:3;;;;;;;", + "deployedSourceMap": "449:6193:3:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1660:1367;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1660:1367:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4841:129:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4841:129:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2522:377:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2522:377:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1235:391;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1235:391:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;626:208:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;626:208:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;499:55:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;499:55:8;;;;;;;;;;;;;;;;;;;;;;;;;;;2776:573:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2776:573:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;287:54;;8:9:-1;5:2;;;30:1;27;20:12;5:2;287:54:9;;;;;;;;;;;;;;;;;;;;;;;;;;;693:301:2;;8:9:-1;5:2;;;30:1;27;20:12;5:2;693:301:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5052:458:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5052:458:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;5052:458:9;;;;;;;;;;;;;;;;;517:60:3;;8:9:-1;5:2;;;30:1;27;20:12;5:2;517:60:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;517:60:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3459:209;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3459:209:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;779:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;779:20:3;;;;;;;;;;;;;;;;;;;;;;;4423:738:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4423:738:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;4423:738:8;;;;;;;;;;;;;;;;;4398:318:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4398:318:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;1906:528;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1906:528:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6140:500:3;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6140:500:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4586:407;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4586:407:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1887:299:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1887:299:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3683:526:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3683:526:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4722:113;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4722:113:9;;;;;;;;;;;;;;;;;;;;;;;;;;;583:40:3;;8:9:-1;5:2;;;30:1;27;20:12;5:2;583:40:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;583:40:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1660:1367;1994:16;2565;2642:14;2013:9;1994:28;;2032:113;2042:93;2061:2;2065:5;2072:4;2078:9;2089;2100:7;2109:8;2119;2129:5;;2042:18;:93::i;:::-;2137:1;2140;2143;2032:9;:113::i;:::-;2206:5;;:7;;;;;;;;;;;;;2264:9;737:5;2231:9;:29;:42;;2223:51;;;;;;;;2289:46;2297:2;2301:5;2308:4;2314:9;2325;2289:7;:46::i;:::-;2288:47;2284:100;;;2356:17;;;;;;;;;;2284:100;2548:1;2537:8;:12;2533:486;;;2584:44;2609:9;2598:8;:20;2620:7;2584:13;:44::i;:::-;2565:63;;2670:8;2659;:19;2642:36;;2716:1;2696:22;;:8;:22;;;2692:317;;;2805:9;:18;;:26;2824:6;2805:26;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2805:26:3;2692:317;;;2956:8;2945:29;;;2975:9;2986:6;2945:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2945:48:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2945:48:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2945:48:3;;;;;;;;;;;;;;;;2937:57;;;;;;;;2692:317;2533:486;1660:1367;;;;;;;;;;;;;;:::o;4841:129:9:-;4918:4;4962:1;4945:6;:13;4952:5;4945:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;;4938:25;;4841:129;;;:::o;2522:377:8:-;2654:12;2762:1;2739:7;:19;2747:10;2739:19;;;;;;;;;;;;;;;;;;;;;;;;;:24;;;;2731:33;;;;;;;;2846:46;2854:2;2858:5;2865:4;2871:9;2882;2846:7;:46::i;:::-;2836:56;;2522:377;;;;;;:::o;1235:391::-;244:4:13;222:27;;:10;:27;;;214:36;;;;;;;;1401:1:8;1390:6;1382:20;;;;:59;;;;;550:3;1406:35;;1414:6;1406:35;;;;1382:59;1374:68;;;;;;;;1520:1;1501:7;:15;1509:6;1501:15;;;;;;;;;;;;;;;;;;;;;;;;;:20;;;1493:29;;;;;;;;1550:7;:25;550:3;1550:25;;;;;;;;;;;;;;;;;;;;;;;;;1532:7;:15;1540:6;1532:15;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;1613:6;1585:7;:25;550:3;1585:25;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;1235:391;:::o;626:208:5:-;244:4:13;222:27;;:10;:27;;;214:36;;;;;;;;791:1:5;776:11;:16;;;;768:25;;;;;;;;816:11;803:10;;:24;;;;;;;;;;;;;;;;;;626:208;:::o;499:55:8:-;550:3;499:55;:::o;2776:573:9:-;244:4:13;222:27;;:10;:27;;;214:36;;;;;;;;3000:10:9;2982:28;;2995:1;2982:10;;:14;:28;;2974:37;;;;;;;;3112:5;3091:26;;:6;:17;3098:9;3091:17;;;;;;;;;;;;;;;;;;;;;;;;;:26;;;3083:35;;;;;;;;3148:6;:13;3155:5;3148:13;;;;;;;;;;;;;;;;;;;;;;;;;3128:6;:17;3135:9;3128:17;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;3187:1;3171:6;:13;3178:5;3171:13;;;;;;;;;;;;;;;;:17;;;;;;;;;;;;;;;;;;3198:10;;:12;;;;;;;;;;;;;;3291:10;3278:23;;:9;;;;;;;;;;;:23;;;;3274:68;;;3315:27;3331:10;3315:15;:27::i;:::-;3274:68;2776:573;;;:::o;287:54::-;337:3;287:54;:::o;693:301:2:-;798:32;810:7;819:10;798:11;:32::i;:::-;965:22;978:2;982:4;965:12;:22::i;:::-;693:301;;;;:::o;5052:458:9:-;5118:9;5143:22;5237:13;5264:20;5182:10;;5168:25;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;5168:25:9;;;;5143:50;;5253:1;5237:17;;5287:6;:23;337:3;5287:23;;;;;;;;;;;;;;;;;;;;;;;;;5264:46;;5320:162;337:3;5326:31;;:12;:31;;;;5320:162;;;5388:12;5373:5;5379;5373:12;;;;;;;;;;;;;;;;;:27;;;;;;;;;;;5429:6;:20;5436:12;5429:20;;;;;;;;;;;;;;;;;;;;;;;;;5414:35;;5463:8;;;;;;;5320:162;;;5498:5;5491:12;;5052:458;;;;:::o;517:60:3:-;;;;;;;;;;;;;;;;;;;;:::o;3459:209::-;3568:7;680:5;737;3614:7;3599:12;:22;:42;:62;3592:69;;3459:209;;;;:::o;779:20::-;;;;:::o;4423:738:8:-;4490:9;4549:19;4582:21;4782:22;4571:1;4549:23;;4606:7;:25;550:3;4606:25;;;;;;;;;;;;;;;;;;;;;;;;;4582:49;;4641:132;550:3;4647:33;;:13;:33;;;;4641:132;;;4712:7;:22;4720:13;4712:22;;;;;;;;;;;;;;;;;;;;;;;;;4696:38;;4748:14;;;;;;;4641:132;;;4821:11;4807:26;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;4807:26:8;;;;4782:51;;4891:1;4877:15;;4918:7;:25;550:3;4918:25;;;;;;;;;;;;;;;;;;;;;;;;;4902:41;;4953:180;550:3;4959:33;;:13;:33;;;;4953:180;;;5029:13;5008:5;5014:11;5008:18;;;;;;;;;;;;;;;;;:34;;;;;;;;;;;5072:7;:22;5080:13;5072:22;;;;;;;;;;;;;;;;;;;;;;;;;5056:38;;5108:14;;;;;;;4953:180;;;5149:5;5142:12;;4423:738;;;;:::o;4398:318:9:-;244:4:13;222:27;;:10;:27;;;214:36;;;;;;;;4580:10:9;;4566;:24;;;;4558:33;;;;;;;;4675:1;4661:10;:15;;;;4653:24;;;;;;;;4699:10;4687:9;;:22;;;;;;;;;;;;;;;;;;4398:318;:::o;1906:528::-;244:4:13;222:27;;:10;:27;;;214:36;;;;;;;;2076:1:9;2067:5;:10;;;;:38;;;;;337:3;2081:24;;:5;:24;;;;2067:38;2059:47;;;;;;;;2181:1;2164:6;:13;2171:5;2164:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;2156:27;;;;;;;;2209:6;:23;337:3;2209:23;;;;;;;;;;;;;;;;;;;;;;;;;2193:6;:13;2200:5;2193:13;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;2268:5;2242:6;:23;337:3;2242:23;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;2283:10;;:12;;;;;;;;;;;;;2376:10;2363:23;;:9;;;;;;;;;;;:23;;;;2359:68;;;2400:27;2416:10;2400:15;:27::i;:::-;2359:68;1906:528;;:::o;6140:500:3:-;6451:7;6526:4;6521:10;;6538:1;6533:7;;6542:4;6548:2;6552:5;6559:4;6565:9;6576;6587:7;6596:8;6606;6616:6;6504:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;;;6504:119:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;6504:119:3;;;6481:152;;;;;;;;;;;;;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;;;6481:152:3;;;;;;;;;;;;;;;;6474:159;;6140:500;;;;;;;;;;;:::o;4586:407::-;4725:7;4748:16;4851:19;244:4:13;222:27;;:10;:27;;;214:36;;;;;;;;4767:9:3;4748:28;;4794:46;4802:2;4806:5;4813:4;4819:9;4830;4794:7;:46::i;:::-;4786:55;;;;;;;;4884:9;4873:8;:20;4851:42;;4972:11;4955:29;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;4955:29:3;;;4941: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;4941:45:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1887:299:8;244:4:13;222:27;;:10;:27;;;214:36;;;;;;;;2095:6:8;2064:38;;:7;:19;2072:10;2064:19;;;;;;;;;;;;;;;;;;;;;;;;;:38;;;2056:47;;;;;;;;2135:7;:15;2143:6;2135:15;;;;;;;;;;;;;;;;;;;;;;;;;2113:7;:19;2121:10;2113:19;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;2178:1;2160:7;:15;2168:6;2160:15;;;;;;;;;;;;;;;;:19;;;;;;;;;;;;;;;;;;1887:299;;:::o;3683:526:9:-;244:4:13;222:27;;:10;:27;;;214:36;;;;;;;;3866:1:9;3854:8;:13;;;;:44;;;;;337:3;3871:27;;:8;:27;;;;3854:44;3846:53;;;;;;;;3977:1;3957:6;:16;3964:8;3957:16;;;;;;;;;;;;;;;;;;;;;;;;;:21;;;3949:30;;;;;;;;4080:8;4059:29;;:6;:17;4066:9;4059:17;;;;;;;;;;;;;;;;;;;;;;;;;:29;;;4051:38;;;;;;;;4118:6;:16;4125:8;4118:16;;;;;;;;;;;;;;;;;;;;;;;;;4099:6;:16;4106:8;4099:16;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;4164:8;4144:6;:17;4151:9;4144:17;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;4201:1;4182:6;:16;4189:8;4182:16;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;3683:526;;;:::o;4722:113::-;4791:5;4819:9;;;;;;;;;;;4812:16;;4722:113;:::o;583:40:3:-;;;;;;;;;;;;;;;;;;;;:::o;4999:541::-;5165:17;5205:20;5235:9;5193:1;5165:30;;5305:1;5301:5;;5296:238;5312:9;;;;;;;;;;;5308:13;;:1;:13;5296:238;;;5357:33;5367:4;5373:1;5375;5373:4;;;;;;;;;;;;;;;;;;5379:1;5381;5379:4;;;;;;;;;;;;;;;;;;5385:1;5387;5385:4;;;;;;;;;;;;;;;;;;5357:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5357:33:3;;;;;;;;5342:48;;5436:1;5412:6;:20;5419:12;5412:20;;;;;;;;;;;;;;;;;;;;;;;;;:25;;;;5404:34;;;;;;;;5475:9;5460:24;;:12;:24;;;5452:33;;;;;;;;5511:12;5499:24;;5323:3;;;;;;;5296:238;;;4999:541;;;;;;;:::o;2905:548:8:-;3036:12;3307:19;3081;3068:32;;;;;;;;:9;:32;;;;;;;;;3064:383;;;3124:35;3136:2;3140:5;3147:4;3153:5;3124:11;:35::i;:::-;3114:45;;3064:383;;;3191:27;3178:40;;;;;;;;:9;:40;;;;;;;;;3174:273;;;3242:36;3262:2;3266:4;3272:5;3242:19;:36::i;:::-;3232:46;;3174:273;;;3329:19;3343:4;3329:13;:19::i;:::-;3307:41;;3387:1;3372:11;:16;;;;3362:26;;3407:29;3424:11;3407:29;;;;;;;;;;;;;;;;;;;;;;3174:273;3064:383;2905:548;;;;;;;;:::o;641:1025:9:-;1132:20;1185:9;1284:13;875:1;862:9;;;;;;;;;;;:14;;;854:23;;;;;;;;984:7;:14;970:10;:28;;;;962:37;;;;;;;;1083:1;1069:10;:15;;;;1061:24;;;;;;;;337:3;1132:38;;1197:1;1185:13;;1180:363;1204:7;:14;1200:1;:18;1180:363;;;1300:7;1308:1;1300:10;;;;;;;;;;;;;;;;;;1284:26;;1341:1;1332:5;:10;;;;:38;;;;;337:3;1346:24;;:5;:24;;;;1332:38;1324:47;;;;;;;;1454:1;1437:6;:13;1444:5;1437:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;1429:27;;;;;;;;1493:5;1470:6;:20;1477:12;1470:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;1527:5;1512:20;;1220:3;;;;;;;1180:363;;;337:3;1552:6;:20;1559:12;1552:20;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;1613:7;:14;1600:10;:27;;;;1649:10;1637:9;;:22;;;;;;;;;;;;;;;;;;641:1025;;;;;:::o;735:333:8:-;849:1;820:7;:25;550:3;820:25;;;;;;;;;;;;;;;;;;;;;;;;;:30;;;812:39;;;;;;;;550:3;861:7;:25;550:3;861:25;;;;;;;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;925:1;919:2;:7;;;;915:146;;;1020:40;1040:2;1044:4;1050:9;1020:19;:40::i;:::-;1012:49;;;;;;;;915:146;735:333;;:::o;3459:309::-;3568:12;3750:1;3747;3740:4;3734:11;3727:4;3721;3717:15;3710:5;3706:2;3699:5;3694:58;3683:69;;3669:93;;;;;;:::o;3774:303::-;3876:12;4059:1;4056;4049:4;4043:11;4036:4;4030;4026:15;4022:2;4015:5;4002:59;3991:70;;3977:94;;;;;:::o;4083:261::-;4152:19;4322:4;4316:11;4309:4;4303;4299:15;4296:1;4289:39;4274:54;;4260:78;;;:::o", + "source": "pragma solidity 0.4.24;\nimport \"./interfaces/ERC20Token.sol\";\nimport \"./GnosisSafe.sol\";\nimport \"./MasterCopy.sol\";\n\n\n/// @title Gnosis Safe Personal Edition - A multisignature wallet with support for confirmations using signed messages based on ERC191.\n/// @author Stefan George - \n/// @author Richard Meissner - \n/// @author Ricardo Guilherme Schmidt - (Status Research & Development GmbH) - Gas Token Payment\ncontract GnosisSafePersonalEdition is MasterCopy, GnosisSafe {\n\n string public constant NAME = \"Gnosis Safe Personal Edition\";\n string public constant VERSION = \"0.0.1\";\n \n uint256 internal constant BASE_TX_GAS_COSTS = 21000;\n uint256 internal constant PAYMENT_GAS_COSTS = 11000;\n\n event ExecutionFailed();\n\n uint256 public nonce;\n\n /// @dev Allows to execute a Safe transaction confirmed by required number of owners.\n /// @param to Destination address of Safe transaction.\n /// @param value Ether value of Safe transaction.\n /// @param data Data payload of Safe transaction.\n /// @param operation Operation type of Safe transaction.\n /// @param safeTxGas Gas that should be used for the Safe transaction.\n /// @param dataGas Gas costs for data used to trigger the safe transaction.\n /// @param gasPrice Gas price that should be used for the payment calculation.\n /// @param gasToken Token address (or 0 if ETH) that is used for the payment.\n /// @param v Array of signature V values sorted by owner addresses.\n /// @param r Array of signature R values sorted by owner addresses.\n /// @param s Array of signature S values sorted by owner addresses.\n function execAndPayTransaction(\n address to, \n uint256 value, \n bytes data, \n Enum.Operation operation, \n uint256 safeTxGas,\n uint256 dataGas,\n uint256 gasPrice,\n address gasToken,\n uint8[] v, \n bytes32[] r, \n bytes32[] s\n )\n public\n {\n uint256 startGas = gasleft();\n checkHash(getTransactionHash(to, value, data, operation, safeTxGas, dataGas, gasPrice, gasToken, nonce), v, r, s);\n // Increase nonce and execute transaction.\n nonce++;\n require(gasleft() - PAYMENT_GAS_COSTS >= safeTxGas);\n if (!execute(to, value, data, operation, safeTxGas)) {\n emit ExecutionFailed();\n }\n \n // We transfer the calculated tx costs to the tx.origin to avoid sending it to intermediate contracts that have made calls\n if (gasPrice > 0) {\n uint256 gasCosts = totalGasCosts(startGas - gasleft(), dataGas);\n uint256 amount = gasCosts * gasPrice;\n if (gasToken == address(0)) {\n // solium-disable-next-line security/no-tx-origin\n tx.origin.transfer(amount);\n } else {\n // solium-disable-next-line security/no-tx-origin\n require(ERC20Token(gasToken).transfer(tx.origin, amount));\n }\n } \n }\n\n /// @dev Calculates the total gas costs for a safe transaction with the gas costs for the execution of the transaction.\n /// @param executionGas Gas costs for the execution of the safe transaction.\n /// @param dataGas Gas costs for data used to trigger the safe transaction.\n /// @return Total gas costs for the execution (this includes gas costs for the payment to tx.origin, base transaction and payload data).\n function totalGasCosts(uint256 executionGas, uint256 dataGas) \n public \n pure\n returns (uint256) \n {\n return executionGas + dataGas + PAYMENT_GAS_COSTS + BASE_TX_GAS_COSTS;\n }\n\n /// @dev Allows to estimate a Safe transaction. \n /// This method is only meant for estimation purpose, therfore two different protection mechanism against execution in a transaction have been made:\n /// 1.) The method can only be called from the safe itself\n /// 2.) The response is returned with a revert\n /// When estimating set `from` to the address of the safe.\n /// Since the `estimateGas` function includes refunds, call this method to get an estimated of the costs that are deducted from the safe with `execAndPayTransaction`\n /// @param to Destination address of Safe transaction.\n /// @param value Ether value of Safe transaction.\n /// @param data Data payload of Safe transaction.\n /// @param operation Operation type of Safe transaction.\n /// @return Estimate without refunds and overhead fees (base transaction and payload data gas costs).\n function requiredTxGas(address to, uint256 value, bytes data, Enum.Operation operation)\n public\n authorized\n returns (uint256)\n {\n uint256 startGas = gasleft();\n require(execute(to, value, data, operation, gasleft()));\n uint256 requiredGas = startGas - gasleft();\n // Convert response to string\n revert(string(abi.encodePacked(requiredGas)));\n }\n\n function checkHash(bytes32 hash, uint8[] v, bytes32[] r, bytes32[] s)\n internal\n view\n {\n // There cannot be an owner with address 0.\n address lastOwner = address(0);\n address currentOwner;\n uint256 i;\n // Validate threshold is reached.\n for (i = 0; i < threshold; i++) {\n currentOwner = ecrecover(hash, v[i], r[i], s[i]);\n require(owners[currentOwner] != 0);\n require(currentOwner > lastOwner);\n lastOwner = currentOwner;\n }\n }\n\n /// @dev Returns hash to be signed by owners.\n /// @param to Destination address.\n /// @param value Ether value.\n /// @param data Data payload.\n /// @param operation Operation type.\n /// @param safeTxGas Fas that should be used for the safe transaction.\n /// @param dataGas Gas costs for data used to trigger the safe transaction.\n /// @param gasPrice Maximum gas price that should be used for this transaction.\n /// @param gasToken Token address (or 0 if ETH) that is used for the payment.\n /// @param _nonce Transaction nonce.\n /// @return Transaction hash.\n function getTransactionHash(\n address to, \n uint256 value, \n bytes data, \n Enum.Operation operation, \n uint256 safeTxGas, \n uint256 dataGas, \n uint256 gasPrice, \n address gasToken,\n uint256 _nonce\n )\n public\n view\n returns (bytes32)\n {\n return keccak256(\n abi.encodePacked(byte(0x19), byte(0), this, to, value, data, operation, safeTxGas, dataGas, gasPrice, gasToken, _nonce)\n );\n }\n}\n", "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafePersonalEdition.sol", "ast": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafePersonalEdition.sol", "exportedSymbols": { "GnosisSafePersonalEdition": [ - 324 + 397 ] }, - "id": 325, + "id": 398, "nodeType": "SourceUnit", "nodes": [ { - "id": 41, + "id": 65, "literals": [ "solidity", "0.4", - ".23" + ".24" ], "nodeType": "PragmaDirective", - "src": "0:23:2" + "src": "0:23:3" + }, + { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/interfaces/ERC20Token.sol", + "file": "./interfaces/ERC20Token.sol", + "id": 66, + "nodeType": "ImportDirective", + "scope": 398, + "sourceUnit": 1686, + "src": "24:37:3", + "symbolAliases": [], + "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafe.sol", "file": "./GnosisSafe.sol", - "id": 42, + "id": 67, "nodeType": "ImportDirective", - "scope": 325, - "sourceUnit": 40, - "src": "24:26:2", + "scope": 398, + "sourceUnit": 64, + "src": "62:26:3", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/MasterCopy.sol", "file": "./MasterCopy.sol", - "id": 43, + "id": 68, "nodeType": "ImportDirective", - "scope": 325, - "sourceUnit": 581, - "src": "51:26:2", + "scope": 398, + "sourceUnit": 653, + "src": "89:26:3", "symbolAliases": [], "unitAlias": "" }, @@ -540,68 +559,68 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 44, + "id": 69, "name": "MasterCopy", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 580, - "src": "352:10:2", + "referencedDeclaration": 652, + "src": "487:10:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_MasterCopy_$580", + "typeIdentifier": "t_contract$_MasterCopy_$652", "typeString": "contract MasterCopy" } }, - "id": 45, + "id": 70, "nodeType": "InheritanceSpecifier", - "src": "352:10:2" + "src": "487:10:3" }, { "arguments": null, "baseName": { "contractScope": null, - "id": 46, + "id": 71, "name": "GnosisSafe", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 39, - "src": "364:10:2", + "referencedDeclaration": 63, + "src": "499:10:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$39", + "typeIdentifier": "t_contract$_GnosisSafe_$63", "typeString": "contract GnosisSafe" } }, - "id": 47, + "id": 72, "nodeType": "InheritanceSpecifier", - "src": "364:10:2" + "src": "499:10:3" } ], "contractDependencies": [ - 39, - 580, - 971, - 1343, - 1359 + 63, + 652, + 1100, + 1472, + 1619 ], "contractKind": "contract", - "documentation": "@title Gnosis Safe Personal Edition - A multisignature wallet with support for confirmations using signed messages based on ERC191.\n @author Stefan George - \n @author Richard Meissner - ", + "documentation": "@title Gnosis Safe Personal Edition - A multisignature wallet with support for confirmations using signed messages based on ERC191.\n @author Stefan George - \n @author Richard Meissner - \n @author Ricardo Guilherme Schmidt - (Status Research & Development GmbH) - Gas Token Payment", "fullyImplemented": true, - "id": 324, + "id": 397, "linearizedBaseContracts": [ - 324, - 39, - 1343, - 971, - 580, - 1359 + 397, + 63, + 1472, + 1100, + 652, + 1619 ], "name": "GnosisSafePersonalEdition", "nodeType": "ContractDefinition", "nodes": [ { "constant": true, - "id": 50, + "id": 75, "name": "NAME", "nodeType": "VariableDeclaration", - "scope": 324, - "src": "382:60:2", + "scope": 397, + "src": "517:60:3", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -609,10 +628,10 @@ "typeString": "string" }, "typeName": { - "id": 48, + "id": 73, "name": "string", "nodeType": "ElementaryTypeName", - "src": "382:6:2", + "src": "517:6:3", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -621,14 +640,14 @@ "value": { "argumentTypes": null, "hexValue": "476e6f736973205361666520506572736f6e616c2045646974696f6e", - "id": 49, + "id": 74, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "412:30:2", + "src": "547:30:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_b657d2895d137bf089ce1df776b732639b1ebc2a3aec3bd837e225e9e0965154", @@ -640,11 +659,11 @@ }, { "constant": true, - "id": 53, + "id": 78, "name": "VERSION", "nodeType": "VariableDeclaration", - "scope": 324, - "src": "448:40:2", + "scope": 397, + "src": "583:40:3", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -652,10 +671,10 @@ "typeString": "string" }, "typeName": { - "id": 51, + "id": 76, "name": "string", "nodeType": "ElementaryTypeName", - "src": "448:6:2", + "src": "583:6:3", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -664,14 +683,14 @@ "value": { "argumentTypes": null, "hexValue": "302e302e31", - "id": 52, + "id": 77, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "481:7:2", + "src": "616:7:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_ae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc199163811885", @@ -683,11 +702,11 @@ }, { "constant": true, - "id": 56, + "id": 81, "name": "BASE_TX_GAS_COSTS", "nodeType": "VariableDeclaration", - "scope": 324, - "src": "499:51:2", + "scope": 397, + "src": "634:51:3", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -695,10 +714,10 @@ "typeString": "uint256" }, "typeName": { - "id": 54, + "id": 79, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "499:7:2", + "src": "634:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -707,14 +726,14 @@ "value": { "argumentTypes": null, "hexValue": "3231303030", - "id": 55, + "id": 80, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "545:5:2", + "src": "680:5:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_21000_by_1", @@ -726,11 +745,11 @@ }, { "constant": true, - "id": 59, + "id": 84, "name": "PAYMENT_GAS_COSTS", "nodeType": "VariableDeclaration", - "scope": 324, - "src": "556:51:2", + "scope": 397, + "src": "691:51:3", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -738,10 +757,10 @@ "typeString": "uint256" }, "typeName": { - "id": 57, + "id": 82, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "556:7:2", + "src": "691:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -750,14 +769,14 @@ "value": { "argumentTypes": null, "hexValue": "3131303030", - "id": 58, + "id": 83, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "602:5:2", + "src": "737:5:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_11000_by_1", @@ -770,24 +789,24 @@ { "anonymous": false, "documentation": null, - "id": 61, + "id": 86, "name": "ExecutionFailed", "nodeType": "EventDefinition", "parameters": { - "id": 60, + "id": 85, "nodeType": "ParameterList", "parameters": [], - "src": "635:2:2" + "src": "770:2:3" }, - "src": "614:24:2" + "src": "749:24:3" }, { "constant": false, - "id": 63, + "id": 88, "name": "nonce", "nodeType": "VariableDeclaration", - "scope": 324, - "src": "644:20:2", + "scope": 397, + "src": "779:20:3", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -795,10 +814,10 @@ "typeString": "uint256" }, "typeName": { - "id": 62, + "id": 87, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "644:7:2", + "src": "779:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -809,22 +828,22 @@ }, { "body": { - "id": 155, + "id": 211, "nodeType": "Block", - "src": "1738:708:2", + "src": "1984:1043:3", "statements": [ { "assignments": [ - 90 + 117 ], "declarations": [ { "constant": false, - "id": 90, + "id": 117, "name": "startGas", "nodeType": "VariableDeclaration", - "scope": 156, - "src": "1748:16:2", + "scope": 212, + "src": "1994:16:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -832,10 +851,10 @@ "typeString": "uint256" }, "typeName": { - "id": 89, + "id": 116, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1748:7:2", + "src": "1994:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -845,24 +864,24 @@ "visibility": "internal" } ], - "id": 93, + "id": 120, "initialValue": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], - "id": 91, + "id": 118, "name": "gasleft", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2389, - "src": "1767:7:2", + "referencedDeclaration": 2591, + "src": "2013:7:3", "typeDescriptions": { "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, - "id": 92, + "id": 119, "isConstant": false, "isLValue": false, "isPure": false, @@ -870,14 +889,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1767:9:2", + "src": "2013:9:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "1748:28:2" + "src": "1994:28:3" }, { "expression": { @@ -888,12 +907,12 @@ "arguments": [ { "argumentTypes": null, - "id": 96, + "id": 123, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 65, - "src": "1815:2:2", + "referencedDeclaration": 90, + "src": "2061:2:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -901,12 +920,12 @@ }, { "argumentTypes": null, - "id": 97, + "id": 124, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 67, - "src": "1819:5:2", + "referencedDeclaration": 92, + "src": "2065:5:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -914,12 +933,12 @@ }, { "argumentTypes": null, - "id": 98, + "id": 125, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69, - "src": "1826:4:2", + "referencedDeclaration": 94, + "src": "2072:4:3", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -927,25 +946,25 @@ }, { "argumentTypes": null, - "id": 99, + "id": 126, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71, - "src": "1832:9:2", + "referencedDeclaration": 96, + "src": "2078:9:3", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, { "argumentTypes": null, - "id": 100, + "id": 127, "name": "safeTxGas", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73, - "src": "1843:9:2", + "referencedDeclaration": 98, + "src": "2089:9:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -953,12 +972,12 @@ }, { "argumentTypes": null, - "id": 101, + "id": 128, "name": "dataGas", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 75, - "src": "1854:7:2", + "referencedDeclaration": 100, + "src": "2100:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -966,12 +985,12 @@ }, { "argumentTypes": null, - "id": 102, + "id": 129, "name": "gasPrice", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 77, - "src": "1863:8:2", + "referencedDeclaration": 102, + "src": "2109:8:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -979,12 +998,25 @@ }, { "argumentTypes": null, - "id": 103, + "id": 130, + "name": "gasToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 104, + "src": "2119:8:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 131, "name": "nonce", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 63, - "src": "1873:5:2", + "referencedDeclaration": 88, + "src": "2129:5:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1006,7 +1038,7 @@ "typeString": "bytes memory" }, { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, { @@ -1021,23 +1053,27 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], - "id": 95, + "id": 122, "name": "getTransactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 323, - "src": "1796:18:2", + "referencedDeclaration": 396, + "src": "2042:18:3", "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$5_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$", - "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256,uint256,uint256,uint256) view returns (bytes32)" + "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$_t_uint256_$_t_uint256_$_t_uint256_$_t_address_$_t_uint256_$returns$_t_bytes32_$", + "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256,uint256,uint256,address,uint256) view returns (bytes32)" } }, - "id": 104, + "id": 132, "isConstant": false, "isLValue": false, "isPure": false, @@ -1045,7 +1081,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1796:83:2", + "src": "2042:93:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1053,12 +1089,12 @@ }, { "argumentTypes": null, - "id": 105, + "id": 133, "name": "v", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 80, - "src": "1881:1:2", + "referencedDeclaration": 107, + "src": "2137:1:3", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr", "typeString": "uint8[] memory" @@ -1066,12 +1102,12 @@ }, { "argumentTypes": null, - "id": 106, + "id": 134, "name": "r", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 83, - "src": "1884:1:2", + "referencedDeclaration": 110, + "src": "2140:1:3", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", "typeString": "bytes32[] memory" @@ -1079,12 +1115,12 @@ }, { "argumentTypes": null, - "id": 107, + "id": 135, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 86, - "src": "1887:1:2", + "referencedDeclaration": 113, + "src": "2143:1:3", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", "typeString": "bytes32[] memory" @@ -1110,18 +1146,18 @@ "typeString": "bytes32[] memory" } ], - "id": 94, + "id": 121, "name": "checkHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 283, - "src": "1786:9:2", + "referencedDeclaration": 350, + "src": "2032:9:3", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_array$_t_uint8_$dyn_memory_ptr_$_t_array$_t_bytes32_$dyn_memory_ptr_$_t_array$_t_bytes32_$dyn_memory_ptr_$returns$__$", "typeString": "function (bytes32,uint8[] memory,bytes32[] memory,bytes32[] memory) view" } }, - "id": 108, + "id": 136, "isConstant": false, "isLValue": false, "isPure": false, @@ -1129,20 +1165,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1786:103:2", + "src": "2032:113:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 109, + "id": 137, "nodeType": "ExpressionStatement", - "src": "1786:103:2" + "src": "2032:113:3" }, { "expression": { "argumentTypes": null, - "id": 111, + "id": 139, "isConstant": false, "isLValue": false, "isPure": false, @@ -1150,15 +1186,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "1950:7:2", + "src": "2206:7:3", "subExpression": { "argumentTypes": null, - "id": 110, + "id": 138, "name": "nonce", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 63, - "src": "1950:5:2", + "referencedDeclaration": 88, + "src": "2206:5:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1169,9 +1205,9 @@ "typeString": "uint256" } }, - "id": 112, + "id": 140, "nodeType": "ExpressionStatement", - "src": "1950:7:2" + "src": "2206:7:3" }, { "expression": { @@ -1183,7 +1219,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 119, + "id": 147, "isConstant": false, "isLValue": false, "isPure": false, @@ -1194,7 +1230,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 117, + "id": 145, "isConstant": false, "isLValue": false, "isPure": false, @@ -1204,18 +1240,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 114, + "id": 142, "name": "gasleft", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2389, - "src": "1975:7:2", + "referencedDeclaration": 2591, + "src": "2231:7:3", "typeDescriptions": { "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, - "id": 115, + "id": 143, "isConstant": false, "isLValue": false, "isPure": false, @@ -1223,7 +1259,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1975:9:2", + "src": "2231:9:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1233,18 +1269,18 @@ "operator": "-", "rightExpression": { "argumentTypes": null, - "id": 116, + "id": 144, "name": "PAYMENT_GAS_COSTS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 59, - "src": "1987:17:2", + "referencedDeclaration": 84, + "src": "2243:17:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1975:29:2", + "src": "2231:29:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1254,18 +1290,18 @@ "operator": ">=", "rightExpression": { "argumentTypes": null, - "id": 118, + "id": 146, "name": "safeTxGas", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73, - "src": "2008:9:2", + "referencedDeclaration": 98, + "src": "2264:9:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1975:42:2", + "src": "2231:42:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1279,21 +1315,21 @@ "typeString": "bool" } ], - "id": 113, + "id": 141, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "1967:7:2", + "referencedDeclaration": 2601, + "src": "2223:7:3", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 120, + "id": 148, "isConstant": false, "isLValue": false, "isPure": false, @@ -1301,20 +1337,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1967:51:2", + "src": "2223:51:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 121, + "id": 149, "nodeType": "ExpressionStatement", - "src": "1967:51:2" + "src": "2223:51:3" }, { "condition": { "argumentTypes": null, - "id": 129, + "id": 157, "isConstant": false, "isLValue": false, "isPure": false, @@ -1322,18 +1358,18 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "2032:47:2", + "src": "2288:47:3", "subExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 123, + "id": 151, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 65, - "src": "2041:2:2", + "referencedDeclaration": 90, + "src": "2297:2:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1341,12 +1377,12 @@ }, { "argumentTypes": null, - "id": 124, + "id": 152, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 67, - "src": "2045:5:2", + "referencedDeclaration": 92, + "src": "2301:5:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1354,12 +1390,12 @@ }, { "argumentTypes": null, - "id": 125, + "id": 153, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69, - "src": "2052:4:2", + "referencedDeclaration": 94, + "src": "2308:4:3", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -1367,25 +1403,25 @@ }, { "argumentTypes": null, - "id": 126, + "id": 154, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71, - "src": "2058:9:2", + "referencedDeclaration": 96, + "src": "2314:9:3", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, { "argumentTypes": null, - "id": 127, + "id": 155, "name": "safeTxGas", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73, - "src": "2069:9:2", + "referencedDeclaration": 98, + "src": "2325:9:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1407,7 +1443,7 @@ "typeString": "bytes memory" }, { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, { @@ -1415,18 +1451,18 @@ "typeString": "uint256" } ], - "id": 122, + "id": 150, "name": "execute", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 860, - "src": "2033:7:2", + "referencedDeclaration": 989, + "src": "2289:7:3", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$5_$_t_uint256_$returns$_t_bool_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256) returns (bool)" } }, - "id": 128, + "id": 156, "isConstant": false, "isLValue": false, "isPure": false, @@ -1434,7 +1470,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2033:46:2", + "src": "2289:46:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1446,13 +1482,13 @@ } }, "falseBody": null, - "id": 134, + "id": 162, "nodeType": "IfStatement", - "src": "2028:100:2", + "src": "2284:100:3", "trueBody": { - "id": 133, + "id": 161, "nodeType": "Block", - "src": "2081:47:2", + "src": "2337:47:3", "statements": [ { "eventCall": { @@ -1460,18 +1496,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 130, + "id": 158, "name": "ExecutionFailed", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 61, - "src": "2100:15:2", + "referencedDeclaration": 86, + "src": "2356:15:3", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$__$returns$__$", "typeString": "function ()" } }, - "id": 131, + "id": 159, "isConstant": false, "isLValue": false, "isPure": false, @@ -1479,98 +1515,214 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2100:17:2", + "src": "2356:17:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 132, + "id": 160, "nodeType": "EmitStatement", - "src": "2095:22:2" + "src": "2351:22:3" } ] } }, { - "assignments": [ - 136 - ], - "declarations": [ - { - "constant": false, - "id": 136, - "name": "gasCosts", - "nodeType": "VariableDeclaration", - "scope": 156, - "src": "2137:16:2", - "stateVariable": false, - "storageLocation": "default", + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 165, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 163, + "name": "gasPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 102, + "src": "2537:8:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 164, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2548:1:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" }, - "typeName": { - "id": 135, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2137:7:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" + "value": "0" + }, + "src": "2537:12:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" } - ], - "id": 144, - "initialValue": { - "argumentTypes": null, - "arguments": [ + }, + "falseBody": null, + "id": 210, + "nodeType": "IfStatement", + "src": "2533:486:3", + "trueBody": { + "id": 209, + "nodeType": "Block", + "src": "2551:468:3", + "statements": [ { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 141, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 138, - "name": "startGas", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 90, - "src": "2170:8:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "assignments": [ + 167 + ], + "declarations": [ + { + "constant": false, + "id": 167, + "name": "gasCosts", + "nodeType": "VariableDeclaration", + "scope": 212, + "src": "2565:16:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 166, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2565:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { + ], + "id": 175, + "initialValue": { "argumentTypes": null, - "arguments": [], + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 172, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 169, + "name": "startGas", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 117, + "src": "2598:8:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 170, + "name": "gasleft", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2591, + "src": "2609:7:3", + "typeDescriptions": { + "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", + "typeString": "function () view returns (uint256)" + } + }, + "id": 171, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2609:9:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2598:20:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 173, + "name": "dataGas", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 100, + "src": "2620:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], "expression": { - "argumentTypes": [], - "id": 139, - "name": "gasleft", + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 168, + "name": "totalGasCosts", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2389, - "src": "2181:7:2", + "referencedDeclaration": 230, + "src": "2584:13:3", "typeDescriptions": { - "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", - "typeString": "function () view returns (uint256)" + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" } }, - "id": 140, + "id": 174, "isConstant": false, "isLValue": false, "isPure": false, @@ -1578,210 +1730,491 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2181:9:2", + "src": "2584:44:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "2170:20:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } + "nodeType": "VariableDeclarationStatement", + "src": "2565:63:3" }, { - "argumentTypes": null, - "id": 142, - "name": "dataGas", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 75, - "src": "2192:7:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 137, - "name": "totalGasCosts", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 174, - "src": "2156:13:2", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256) pure returns (uint256)" - } - }, - "id": 143, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2156:44:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "2137:63:2" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 152, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { + "assignments": [ + 177 + ], + "declarations": [ + { + "constant": false, + "id": 177, + "name": "amount", + "nodeType": "VariableDeclaration", + "scope": 212, + "src": "2642:14:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 176, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2642:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 181, + "initialValue": { "argumentTypes": null, - "id": 150, - "name": "gasCosts", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 136, - "src": "2419:8:2", + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 180, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 178, + "name": "gasCosts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 167, + "src": "2659:8:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "id": 179, + "name": "gasPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 102, + "src": "2670:8:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2659:19:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "nodeType": "BinaryOperation", - "operator": "*", - "rightExpression": { - "argumentTypes": null, - "id": 151, - "name": "gasPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 77, - "src": "2430:8:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2419:19:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 145, - "name": "tx", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2408, - "src": "2400:2:2", - "typeDescriptions": { - "typeIdentifier": "t_magic_transaction", - "typeString": "tx" - } - }, - "id": 148, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "origin", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "2400:9:2", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } + "nodeType": "VariableDeclarationStatement", + "src": "2642:36:3" }, - "id": 149, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "transfer", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "2400:18:2", - "typeDescriptions": { - "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$", - "typeString": "function (uint256)" + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 186, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 182, + "name": "gasToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 104, + "src": "2696:8:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 184, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2716:1:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 183, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2708:7:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 185, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2708:10:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "2696:22:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 207, + "nodeType": "Block", + "src": "2852:157:3", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 201, + "name": "tx", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2610, + "src": "2975:2:3", + "typeDescriptions": { + "typeIdentifier": "t_magic_transaction", + "typeString": "tx" + } + }, + "id": 202, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "origin", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2975:9:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 203, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 177, + "src": "2986:6:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 198, + "name": "gasToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 104, + "src": "2956:8:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 197, + "name": "ERC20Token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1685, + "src": "2945:10:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC20Token_$1685_$", + "typeString": "type(contract ERC20Token)" + } + }, + "id": 199, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2945:20:3", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Token_$1685", + "typeString": "contract ERC20Token" + } + }, + "id": 200, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 1639, + "src": "2945:29:3", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + "id": 204, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2945:48:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 196, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2601, + 2602 + ], + "referencedDeclaration": 2601, + "src": "2937:7:3", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 205, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2937:57:3", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 206, + "nodeType": "ExpressionStatement", + "src": "2937:57:3" + } + ] + }, + "id": 208, + "nodeType": "IfStatement", + "src": "2692:317:3", + "trueBody": { + "id": 195, + "nodeType": "Block", + "src": "2720:126:3", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 192, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 177, + "src": "2824:6:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 187, + "name": "tx", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2610, + "src": "2805:2:3", + "typeDescriptions": { + "typeIdentifier": "t_magic_transaction", + "typeString": "tx" + } + }, + "id": 190, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "origin", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2805:9:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 191, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transfer", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2805:18:3", + "typeDescriptions": { + "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 193, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2805:26:3", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 194, + "nodeType": "ExpressionStatement", + "src": "2805:26:3" + } + ] + } } - }, - "id": 153, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2400:39:2", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 154, - "nodeType": "ExpressionStatement", - "src": "2400:39:2" + ] + } } ] }, - "documentation": "@dev Allows to execute a Safe transaction confirmed by required number of owners.\n @param to Destination address of Safe transaction.\n @param value Ether value of Safe transaction.\n @param data Data payload of Safe transaction.\n @param operation Operation type of Safe transaction.\n @param safeTxGas Gas that should be used for the Safe transaction.\n @param dataGas Gas costs for data used to trigger the safe transaction.\n @param gasPrice Gas price that should be used for the payment calculation.\n @param v Array of signature V values sorted by owner addresses.\n @param r Array of signature R values sorted by owner addresses.\n @param s Array of signature S values sorted by owner addresses.", - "id": 156, + "documentation": "@dev Allows to execute a Safe transaction confirmed by required number of owners.\n @param to Destination address of Safe transaction.\n @param value Ether value of Safe transaction.\n @param data Data payload of Safe transaction.\n @param operation Operation type of Safe transaction.\n @param safeTxGas Gas that should be used for the Safe transaction.\n @param dataGas Gas costs for data used to trigger the safe transaction.\n @param gasPrice Gas price that should be used for the payment calculation.\n @param gasToken Token address (or 0 if ETH) that is used for the payment.\n @param v Array of signature V values sorted by owner addresses.\n @param r Array of signature R values sorted by owner addresses.\n @param s Array of signature S values sorted by owner addresses.", + "id": 212, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [], - "name": "execPayTransaction", + "name": "execAndPayTransaction", "nodeType": "FunctionDefinition", "parameters": { - "id": 87, + "id": 114, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 65, + "id": 90, "name": "to", "nodeType": "VariableDeclaration", - "scope": 156, - "src": "1480:10:2", + "scope": 212, + "src": "1700:10:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1789,10 +2222,10 @@ "typeString": "address" }, "typeName": { - "id": 64, + "id": 89, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1480:7:2", + "src": "1700:7:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1803,11 +2236,11 @@ }, { "constant": false, - "id": 67, + "id": 92, "name": "value", "nodeType": "VariableDeclaration", - "scope": 156, - "src": "1501:13:2", + "scope": 212, + "src": "1721:13:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1815,10 +2248,10 @@ "typeString": "uint256" }, "typeName": { - "id": 66, + "id": 91, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1501:7:2", + "src": "1721:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1829,11 +2262,11 @@ }, { "constant": false, - "id": 69, + "id": 94, "name": "data", "nodeType": "VariableDeclaration", - "scope": 156, - "src": "1525:10:2", + "scope": 212, + "src": "1745:10:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1841,10 +2274,10 @@ "typeString": "bytes" }, "typeName": { - "id": 68, + "id": 93, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "1525:5:2", + "src": "1745:5:3", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -1855,26 +2288,26 @@ }, { "constant": false, - "id": 71, + "id": 96, "name": "operation", "nodeType": "VariableDeclaration", - "scope": 156, - "src": "1546:24:2", + "scope": 212, + "src": "1766:24:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, "typeName": { "contractScope": null, - "id": 70, + "id": 95, "name": "Enum.Operation", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 5, - "src": "1546:14:2", + "referencedDeclaration": 29, + "src": "1766:14:3", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, @@ -1883,11 +2316,11 @@ }, { "constant": false, - "id": 73, + "id": 98, "name": "safeTxGas", "nodeType": "VariableDeclaration", - "scope": 156, - "src": "1581:17:2", + "scope": 212, + "src": "1801:17:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1895,10 +2328,10 @@ "typeString": "uint256" }, "typeName": { - "id": 72, + "id": 97, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1581:7:2", + "src": "1801:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1909,11 +2342,11 @@ }, { "constant": false, - "id": 75, + "id": 100, "name": "dataGas", "nodeType": "VariableDeclaration", - "scope": 156, - "src": "1608:15:2", + "scope": 212, + "src": "1828:15:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1921,10 +2354,10 @@ "typeString": "uint256" }, "typeName": { - "id": 74, + "id": 99, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1608:7:2", + "src": "1828:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1935,11 +2368,11 @@ }, { "constant": false, - "id": 77, + "id": 102, "name": "gasPrice", "nodeType": "VariableDeclaration", - "scope": 156, - "src": "1633:16:2", + "scope": 212, + "src": "1853:16:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1947,10 +2380,10 @@ "typeString": "uint256" }, "typeName": { - "id": 76, + "id": 101, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1633:7:2", + "src": "1853:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1961,11 +2394,37 @@ }, { "constant": false, - "id": 80, + "id": 104, + "name": "gasToken", + "nodeType": "VariableDeclaration", + "scope": 212, + "src": "1879:16:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 103, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1879:7:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 107, "name": "v", "nodeType": "VariableDeclaration", - "scope": 156, - "src": "1659:9:2", + "scope": 212, + "src": "1905:9:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1974,19 +2433,19 @@ }, "typeName": { "baseType": { - "id": 78, + "id": 105, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "1659:5:2", + "src": "1905:5:3", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "id": 79, + "id": 106, "length": null, "nodeType": "ArrayTypeName", - "src": "1659:7:2", + "src": "1905:7:3", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint8_$dyn_storage_ptr", "typeString": "uint8[]" @@ -1997,11 +2456,11 @@ }, { "constant": false, - "id": 83, + "id": 110, "name": "r", "nodeType": "VariableDeclaration", - "scope": 156, - "src": "1679:11:2", + "scope": 212, + "src": "1925:11:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2010,19 +2469,19 @@ }, "typeName": { "baseType": { - "id": 81, + "id": 108, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "1679:7:2", + "src": "1925:7:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "id": 82, + "id": 109, "length": null, "nodeType": "ArrayTypeName", - "src": "1679:9:2", + "src": "1925:9:3", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", "typeString": "bytes32[]" @@ -2033,11 +2492,11 @@ }, { "constant": false, - "id": 86, + "id": 113, "name": "s", "nodeType": "VariableDeclaration", - "scope": 156, - "src": "1701:11:2", + "scope": 212, + "src": "1947:11:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2046,19 +2505,19 @@ }, "typeName": { "baseType": { - "id": 84, + "id": 111, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "1701:7:2", + "src": "1947:7:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "id": 85, + "id": 112, "length": null, "nodeType": "ArrayTypeName", - "src": "1701:9:2", + "src": "1947:9:3", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", "typeString": "bytes32[]" @@ -2068,26 +2527,26 @@ "visibility": "internal" } ], - "src": "1470:248:2" + "src": "1690:274:3" }, "payable": false, "returnParameters": { - "id": 88, + "id": 115, "nodeType": "ParameterList", "parameters": [], - "src": "1738:0:2" + "src": "1984:0:3" }, - "scope": 324, - "src": "1443:1003:2", + "scope": 397, + "src": "1660:1367:3", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 173, + "id": 229, "nodeType": "Block", - "src": "3001:86:2", + "src": "3582:86:3", "statements": [ { "expression": { @@ -2096,7 +2555,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 171, + "id": 227, "isConstant": false, "isLValue": false, "isPure": false, @@ -2107,7 +2566,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 169, + "id": 225, "isConstant": false, "isLValue": false, "isPure": false, @@ -2118,19 +2577,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 167, + "id": 223, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 165, + "id": 221, "name": "executionGas", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 158, - "src": "3018:12:2", + "referencedDeclaration": 214, + "src": "3599:12:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2140,18 +2599,18 @@ "operator": "+", "rightExpression": { "argumentTypes": null, - "id": 166, + "id": 222, "name": "dataGas", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 160, - "src": "3033:7:2", + "referencedDeclaration": 216, + "src": "3614:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3018:22:2", + "src": "3599:22:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2161,18 +2620,18 @@ "operator": "+", "rightExpression": { "argumentTypes": null, - "id": 168, + "id": 224, "name": "PAYMENT_GAS_COSTS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 59, - "src": "3043:17:2", + "referencedDeclaration": 84, + "src": "3624:17:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3018:42:2", + "src": "3599:42:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2182,32 +2641,32 @@ "operator": "+", "rightExpression": { "argumentTypes": null, - "id": 170, + "id": 226, "name": "BASE_TX_GAS_COSTS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 56, - "src": "3063:17:2", + "referencedDeclaration": 81, + "src": "3644:17:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3018:62:2", + "src": "3599:62:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 164, - "id": 172, + "functionReturnParameters": 220, + "id": 228, "nodeType": "Return", - "src": "3011:69:2" + "src": "3592:69:3" } ] }, "documentation": "@dev Calculates the total gas costs for a safe transaction with the gas costs for the execution of the transaction.\n @param executionGas Gas costs for the execution of the safe transaction.\n @param dataGas Gas costs for data used to trigger the safe transaction.\n @return Total gas costs for the execution (this includes gas costs for the payment to tx.origin, base transaction and payload data).", - "id": 174, + "id": 230, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -2215,16 +2674,16 @@ "name": "totalGasCosts", "nodeType": "FunctionDefinition", "parameters": { - "id": 161, + "id": 217, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 158, + "id": 214, "name": "executionGas", "nodeType": "VariableDeclaration", - "scope": 174, - "src": "2901:20:2", + "scope": 230, + "src": "3482:20:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2232,10 +2691,10 @@ "typeString": "uint256" }, "typeName": { - "id": 157, + "id": 213, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2901:7:2", + "src": "3482:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2246,11 +2705,11 @@ }, { "constant": false, - "id": 160, + "id": 216, "name": "dataGas", "nodeType": "VariableDeclaration", - "scope": 174, - "src": "2923:15:2", + "scope": 230, + "src": "3504:15:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2258,10 +2717,10 @@ "typeString": "uint256" }, "typeName": { - "id": 159, + "id": 215, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2923:7:2", + "src": "3504:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2271,20 +2730,20 @@ "visibility": "internal" } ], - "src": "2900:39:2" + "src": "3481:39:3" }, "payable": false, "returnParameters": { - "id": 164, + "id": 220, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 163, + "id": 219, "name": "", "nodeType": "VariableDeclaration", - "scope": 174, - "src": "2987:7:2", + "scope": 230, + "src": "3568:7:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2292,10 +2751,10 @@ "typeString": "uint256" }, "typeName": { - "id": 162, + "id": 218, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2987:7:2", + "src": "3568:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2305,32 +2764,32 @@ "visibility": "internal" } ], - "src": "2986:9:2" + "src": "3567:9:3" }, - "scope": 324, - "src": "2878:209:2", + "scope": 397, + "src": "3459:209:3", "stateMutability": "pure", "superFunction": null, "visibility": "public" }, { "body": { - "id": 210, + "id": 277, "nodeType": "Block", - "src": "3938:147:2", + "src": "4738:255:3", "statements": [ { "assignments": [ - 190 + 246 ], "declarations": [ { "constant": false, - "id": 190, + "id": 246, "name": "startGas", "nodeType": "VariableDeclaration", - "scope": 211, - "src": "3948:16:2", + "scope": 278, + "src": "4748:16:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2338,10 +2797,10 @@ "typeString": "uint256" }, "typeName": { - "id": 189, + "id": 245, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3948:7:2", + "src": "4748:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2351,24 +2810,24 @@ "visibility": "internal" } ], - "id": 193, + "id": 249, "initialValue": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], - "id": 191, + "id": 247, "name": "gasleft", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2389, - "src": "3967:7:2", + "referencedDeclaration": 2591, + "src": "4767:7:3", "typeDescriptions": { "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, - "id": 192, + "id": 248, "isConstant": false, "isLValue": false, "isPure": false, @@ -2376,14 +2835,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3967:9:2", + "src": "4767:9:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "3948:28:2" + "src": "4748:28:3" }, { "expression": { @@ -2394,12 +2853,12 @@ "arguments": [ { "argumentTypes": null, - "id": 196, + "id": 252, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 176, - "src": "4002:2:2", + "referencedDeclaration": 232, + "src": "4802:2:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2407,12 +2866,12 @@ }, { "argumentTypes": null, - "id": 197, + "id": 253, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 178, - "src": "4006:5:2", + "referencedDeclaration": 234, + "src": "4806:5:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2420,12 +2879,12 @@ }, { "argumentTypes": null, - "id": 198, + "id": 254, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 180, - "src": "4013:4:2", + "referencedDeclaration": 236, + "src": "4813:4:3", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -2433,14 +2892,14 @@ }, { "argumentTypes": null, - "id": 199, + "id": 255, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 182, - "src": "4019:9:2", + "referencedDeclaration": 238, + "src": "4819:9:3", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, @@ -2449,18 +2908,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 200, + "id": 256, "name": "gasleft", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2389, - "src": "4030:7:2", + "referencedDeclaration": 2591, + "src": "4830:7:3", "typeDescriptions": { "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, - "id": 201, + "id": 257, "isConstant": false, "isLValue": false, "isPure": false, @@ -2468,7 +2927,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4030:9:2", + "src": "4830:9:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2490,7 +2949,7 @@ "typeString": "bytes memory" }, { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, { @@ -2498,18 +2957,18 @@ "typeString": "uint256" } ], - "id": 195, + "id": 251, "name": "execute", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 860, - "src": "3994:7:2", + "referencedDeclaration": 989, + "src": "4794:7:3", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$5_$_t_uint256_$returns$_t_bool_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256) returns (bool)" } }, - "id": 202, + "id": 258, "isConstant": false, "isLValue": false, "isPure": false, @@ -2517,7 +2976,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3994:46:2", + "src": "4794:46:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2531,21 +2990,21 @@ "typeString": "bool" } ], - "id": 194, + "id": 250, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "3986:7:2", + "referencedDeclaration": 2601, + "src": "4786:7:3", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 203, + "id": 259, "isConstant": false, "isLValue": false, "isPure": false, @@ -2553,36 +3012,68 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3986:55:2", + "src": "4786:55:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 204, + "id": 260, "nodeType": "ExpressionStatement", - "src": "3986:55:2" + "src": "4786:55:3" }, { - "expression": { + "assignments": [ + 262 + ], + "declarations": [ + { + "constant": false, + "id": 262, + "name": "requiredGas", + "nodeType": "VariableDeclaration", + "scope": 278, + "src": "4851:19:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 261, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4851:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 267, + "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 208, + "id": 266, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 205, + "id": 263, "name": "startGas", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 190, - "src": "4058:8:2", + "referencedDeclaration": 246, + "src": "4873:8:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2595,18 +3086,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 206, + "id": 264, "name": "gasleft", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2389, - "src": "4069:7:2", + "referencedDeclaration": 2591, + "src": "4884:7:3", "typeDescriptions": { "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, - "id": 207, + "id": 265, "isConstant": false, "isLValue": false, "isPure": false, @@ -2614,64 +3105,209 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4069:9:2", + "src": "4884:9:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4058:20:2", + "src": "4873:20:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 188, - "id": 209, - "nodeType": "Return", - "src": "4051:27:2" + "nodeType": "VariableDeclarationStatement", + "src": "4851:42:3" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 272, + "name": "requiredGas", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 262, + "src": "4972:11:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 270, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2585, + "src": "4955:3:3", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 271, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4955:16:3", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 273, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4955:29:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 269, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4948:6:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_string_storage_ptr_$", + "typeString": "type(string storage pointer)" + }, + "typeName": "string" + }, + "id": 274, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4948:37:3", + "typeDescriptions": { + "typeIdentifier": "t_string_memory", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory", + "typeString": "string memory" + } + ], + "id": 268, + "name": "revert", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2603, + 2604 + ], + "referencedDeclaration": 2604, + "src": "4941:6:3", + "typeDescriptions": { + "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", + "typeString": "function (string memory) pure" + } + }, + "id": 275, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4941:45:3", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 276, + "nodeType": "ExpressionStatement", + "src": "4941:45:3" } ] }, - "documentation": "@dev Allows to estimate a Safe transaction. \n This method can only be used by the safe itself in a transaction. When estimating set `from` to the address of the safe.\n Since the `estimateGas` function includes refunds, call this method to get an estimated of the costs that are deducted from the safe with `execPayTransaction`\n @param to Destination address of Safe transaction.\n @param value Ether value of Safe transaction.\n @param data Data payload of Safe transaction.\n @param operation Operation type of Safe transaction.\n @return Estimate without refunds and overhead fees (base transaction and payload data gas costs).", - "id": 211, + "documentation": "@dev Allows to estimate a Safe transaction. \n This method is only meant for estimation purpose, therfore two different protection mechanism against execution in a transaction have been made:\n 1.) The method can only be called from the safe itself\n 2.) The response is returned with a revert\n When estimating set `from` to the address of the safe.\n Since the `estimateGas` function includes refunds, call this method to get an estimated of the costs that are deducted from the safe with `execAndPayTransaction`\n @param to Destination address of Safe transaction.\n @param value Ether value of Safe transaction.\n @param data Data payload of Safe transaction.\n @param operation Operation type of Safe transaction.\n @return Estimate without refunds and overhead fees (base transaction and payload data gas costs).", + "id": 278, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 185, + "id": 241, "modifierName": { "argumentTypes": null, - "id": 184, + "id": 240, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1358, - "src": "3897:10:2", + "referencedDeclaration": 1618, + "src": "4697:10:3", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "3897:10:2" + "src": "4697:10:3" } ], "name": "requiredTxGas", "nodeType": "FunctionDefinition", "parameters": { - "id": 183, + "id": 239, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 176, + "id": 232, "name": "to", "nodeType": "VariableDeclaration", - "scope": 211, - "src": "3809:10:2", + "scope": 278, + "src": "4609:10:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2679,10 +3315,10 @@ "typeString": "address" }, "typeName": { - "id": 175, + "id": 231, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3809:7:2", + "src": "4609:7:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2693,11 +3329,11 @@ }, { "constant": false, - "id": 178, + "id": 234, "name": "value", "nodeType": "VariableDeclaration", - "scope": 211, - "src": "3821:13:2", + "scope": 278, + "src": "4621:13:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2705,10 +3341,10 @@ "typeString": "uint256" }, "typeName": { - "id": 177, + "id": 233, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3821:7:2", + "src": "4621:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2719,11 +3355,11 @@ }, { "constant": false, - "id": 180, + "id": 236, "name": "data", "nodeType": "VariableDeclaration", - "scope": 211, - "src": "3836:10:2", + "scope": 278, + "src": "4636:10:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2731,10 +3367,10 @@ "typeString": "bytes" }, "typeName": { - "id": 179, + "id": 235, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "3836:5:2", + "src": "4636:5:3", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -2745,26 +3381,26 @@ }, { "constant": false, - "id": 182, + "id": 238, "name": "operation", "nodeType": "VariableDeclaration", - "scope": 211, - "src": "3848:24:2", + "scope": 278, + "src": "4648:24:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, "typeName": { "contractScope": null, - "id": 181, + "id": 237, "name": "Enum.Operation", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 5, - "src": "3848:14:2", + "referencedDeclaration": 29, + "src": "4648:14:3", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, @@ -2772,20 +3408,20 @@ "visibility": "internal" } ], - "src": "3808:65:2" + "src": "4608:65:3" }, "payable": false, "returnParameters": { - "id": 188, + "id": 244, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 187, + "id": 243, "name": "", "nodeType": "VariableDeclaration", - "scope": 211, - "src": "3925:7:2", + "scope": 278, + "src": "4725:7:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2793,10 +3429,10 @@ "typeString": "uint256" }, "typeName": { - "id": 186, + "id": 242, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3925:7:2", + "src": "4725:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2806,32 +3442,32 @@ "visibility": "internal" } ], - "src": "3924:9:2" + "src": "4724:9:3" }, - "scope": 324, - "src": "3786:299:2", + "scope": 397, + "src": "4586:407:3", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 282, + "id": 349, "nodeType": "Block", - "src": "4195:437:2", + "src": "5103:437:3", "statements": [ { "assignments": [ - 226 + 293 ], "declarations": [ { "constant": false, - "id": 226, + "id": 293, "name": "lastOwner", "nodeType": "VariableDeclaration", - "scope": 283, - "src": "4257:17:2", + "scope": 350, + "src": "5165:17:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2839,10 +3475,10 @@ "typeString": "address" }, "typeName": { - "id": 225, + "id": 292, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4257:7:2", + "src": "5165:7:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2852,21 +3488,21 @@ "visibility": "internal" } ], - "id": 230, + "id": 297, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", - "id": 228, + "id": 295, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4285:1:2", + "src": "5193:1:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -2882,20 +3518,20 @@ "typeString": "int_const 0" } ], - "id": 227, + "id": 294, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "4277:7:2", + "src": "5185:7:3", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 229, + "id": 296, "isConstant": false, "isLValue": false, "isPure": true, @@ -2903,25 +3539,25 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4277:10:2", + "src": "5185:10:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", - "src": "4257:30:2" + "src": "5165:30:3" }, { "assignments": [], "declarations": [ { "constant": false, - "id": 232, + "id": 299, "name": "currentOwner", "nodeType": "VariableDeclaration", - "scope": 283, - "src": "4297:20:2", + "scope": 350, + "src": "5205:20:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2929,10 +3565,10 @@ "typeString": "address" }, "typeName": { - "id": 231, + "id": 298, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4297:7:2", + "src": "5205:7:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2942,21 +3578,21 @@ "visibility": "internal" } ], - "id": 233, + "id": 300, "initialValue": null, "nodeType": "VariableDeclarationStatement", - "src": "4297:20:2" + "src": "5205:20:3" }, { "assignments": [], "declarations": [ { "constant": false, - "id": 235, + "id": 302, "name": "i", "nodeType": "VariableDeclaration", - "scope": 283, - "src": "4327:9:2", + "scope": 350, + "src": "5235:9:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2964,10 +3600,10 @@ "typeString": "uint256" }, "typeName": { - "id": 234, + "id": 301, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4327:7:2", + "src": "5235:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2977,33 +3613,33 @@ "visibility": "internal" } ], - "id": 236, + "id": 303, "initialValue": null, "nodeType": "VariableDeclarationStatement", - "src": "4327:9:2" + "src": "5235:9:3" }, { "body": { - "id": 280, + "id": 347, "nodeType": "Block", - "src": "4420:206:2", + "src": "5328:206:3", "statements": [ { "expression": { "argumentTypes": null, - "id": 260, + "id": 327, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 247, + "id": 314, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 232, - "src": "4434:12:2", + "referencedDeclaration": 299, + "src": "5342:12:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3016,12 +3652,12 @@ "arguments": [ { "argumentTypes": null, - "id": 249, + "id": 316, "name": "hash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 213, - "src": "4459:4:2", + "referencedDeclaration": 280, + "src": "5367:4:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -3031,26 +3667,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 250, + "id": 317, "name": "v", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 216, - "src": "4465:1:2", + "referencedDeclaration": 283, + "src": "5373:1:3", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr", "typeString": "uint8[] memory" } }, - "id": 252, + "id": 319, "indexExpression": { "argumentTypes": null, - "id": 251, + "id": 318, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 235, - "src": "4467:1:2", + "referencedDeclaration": 302, + "src": "5375:1:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3061,7 +3697,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4465:4:2", + "src": "5373:4:3", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -3071,26 +3707,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 253, + "id": 320, "name": "r", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 219, - "src": "4471:1:2", + "referencedDeclaration": 286, + "src": "5379:1:3", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", "typeString": "bytes32[] memory" } }, - "id": 255, + "id": 322, "indexExpression": { "argumentTypes": null, - "id": 254, + "id": 321, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 235, - "src": "4473:1:2", + "referencedDeclaration": 302, + "src": "5381:1:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3101,7 +3737,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4471:4:2", + "src": "5379:4:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -3111,26 +3747,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 256, + "id": 323, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 222, - "src": "4477:1:2", + "referencedDeclaration": 289, + "src": "5385:1:3", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", "typeString": "bytes32[] memory" } }, - "id": 258, + "id": 325, "indexExpression": { "argumentTypes": null, - "id": 257, + "id": 324, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 235, - "src": "4479:1:2", + "referencedDeclaration": 302, + "src": "5387:1:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3141,7 +3777,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4477:4:2", + "src": "5385:4:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -3167,18 +3803,18 @@ "typeString": "bytes32" } ], - "id": 248, + "id": 315, "name": "ecrecover", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2388, - "src": "4449:9:2", + "referencedDeclaration": 2590, + "src": "5357:9:3", "typeDescriptions": { "typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$", "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)" } }, - "id": 259, + "id": 326, "isConstant": false, "isLValue": false, "isPure": false, @@ -3186,21 +3822,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4449:33:2", + "src": "5357:33:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "4434:48:2", + "src": "5342:48:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 261, + "id": 328, "nodeType": "ExpressionStatement", - "src": "4434:48:2" + "src": "5342:48:3" }, { "expression": { @@ -3212,7 +3848,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 267, + "id": 334, "isConstant": false, "isLValue": false, "isPure": false, @@ -3221,26 +3857,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 263, + "id": 330, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 985, - "src": "4504:6:2", + "referencedDeclaration": 1114, + "src": "5412:6:3", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 265, + "id": 332, "indexExpression": { "argumentTypes": null, - "id": 264, + "id": 331, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 232, - "src": "4511:12:2", + "referencedDeclaration": 299, + "src": "5419:12:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3251,7 +3887,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4504:20:2", + "src": "5412:20:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3262,14 +3898,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 266, + "id": 333, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4528:1:2", + "src": "5436:1:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -3277,7 +3913,7 @@ }, "value": "0" }, - "src": "4504:25:2", + "src": "5412:25:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3291,21 +3927,21 @@ "typeString": "bool" } ], - "id": 262, + "id": 329, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "4496:7:2", + "referencedDeclaration": 2601, + "src": "5404:7:3", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 268, + "id": 335, "isConstant": false, "isLValue": false, "isPure": false, @@ -3313,15 +3949,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4496:34:2", + "src": "5404:34:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 269, + "id": 336, "nodeType": "ExpressionStatement", - "src": "4496:34:2" + "src": "5404:34:3" }, { "expression": { @@ -3333,19 +3969,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 273, + "id": 340, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 271, + "id": 338, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 232, - "src": "4552:12:2", + "referencedDeclaration": 299, + "src": "5460:12:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3355,18 +3991,18 @@ "operator": ">", "rightExpression": { "argumentTypes": null, - "id": 272, + "id": 339, "name": "lastOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 226, - "src": "4567:9:2", + "referencedDeclaration": 293, + "src": "5475:9:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "4552:24:2", + "src": "5460:24:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3380,21 +4016,21 @@ "typeString": "bool" } ], - "id": 270, + "id": 337, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "4544:7:2", + "referencedDeclaration": 2601, + "src": "5452:7:3", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 274, + "id": 341, "isConstant": false, "isLValue": false, "isPure": false, @@ -3402,32 +4038,32 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4544:33:2", + "src": "5452:33:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 275, + "id": 342, "nodeType": "ExpressionStatement", - "src": "4544:33:2" + "src": "5452:33:3" }, { "expression": { "argumentTypes": null, - "id": 278, + "id": 345, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 276, + "id": 343, "name": "lastOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 226, - "src": "4591:9:2", + "referencedDeclaration": 293, + "src": "5499:9:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3437,26 +4073,26 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 277, + "id": 344, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 232, - "src": "4603:12:2", + "referencedDeclaration": 299, + "src": "5511:12:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "4591:24:2", + "src": "5499:24:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 279, + "id": 346, "nodeType": "ExpressionStatement", - "src": "4591:24:2" + "src": "5499:24:3" } ] }, @@ -3466,19 +4102,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 243, + "id": 310, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 241, + "id": 308, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 235, - "src": "4400:1:2", + "referencedDeclaration": 302, + "src": "5308:1:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3488,40 +4124,40 @@ "operator": "<", "rightExpression": { "argumentTypes": null, - "id": 242, + "id": 309, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 989, - "src": "4404:9:2", + "referencedDeclaration": 1118, + "src": "5312:9:3", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "src": "4400:13:2", + "src": "5308:13:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 281, + "id": 348, "initializationExpression": { "expression": { "argumentTypes": null, - "id": 239, + "id": 306, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 237, + "id": 304, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 235, - "src": "4393:1:2", + "referencedDeclaration": 302, + "src": "5301:1:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3532,14 +4168,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "30", - "id": 238, + "id": 305, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4397:1:2", + "src": "5305:1:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -3547,20 +4183,20 @@ }, "value": "0" }, - "src": "4393:5:2", + "src": "5301:5:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 240, + "id": 307, "nodeType": "ExpressionStatement", - "src": "4393:5:2" + "src": "5301:5:3" }, "loopExpression": { "expression": { "argumentTypes": null, - "id": 245, + "id": 312, "isConstant": false, "isLValue": false, "isPure": false, @@ -3568,15 +4204,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "4415:3:2", + "src": "5323:3:3", "subExpression": { "argumentTypes": null, - "id": 244, + "id": 311, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 235, - "src": "4415:1:2", + "referencedDeclaration": 302, + "src": "5323:1:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3587,17 +4223,17 @@ "typeString": "uint256" } }, - "id": 246, + "id": 313, "nodeType": "ExpressionStatement", - "src": "4415:3:2" + "src": "5323:3:3" }, "nodeType": "ForStatement", - "src": "4388:238:2" + "src": "5296:238:3" } ] }, "documentation": null, - "id": 283, + "id": 350, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -3605,16 +4241,16 @@ "name": "checkHash", "nodeType": "FunctionDefinition", "parameters": { - "id": 223, + "id": 290, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 213, + "id": 280, "name": "hash", "nodeType": "VariableDeclaration", - "scope": 283, - "src": "4110:12:2", + "scope": 350, + "src": "5018:12:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3622,10 +4258,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 212, + "id": 279, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "4110:7:2", + "src": "5018:7:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -3636,11 +4272,11 @@ }, { "constant": false, - "id": 216, + "id": 283, "name": "v", "nodeType": "VariableDeclaration", - "scope": 283, - "src": "4124:9:2", + "scope": 350, + "src": "5032:9:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3649,19 +4285,19 @@ }, "typeName": { "baseType": { - "id": 214, + "id": 281, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "4124:5:2", + "src": "5032:5:3", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "id": 215, + "id": 282, "length": null, "nodeType": "ArrayTypeName", - "src": "4124:7:2", + "src": "5032:7:3", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint8_$dyn_storage_ptr", "typeString": "uint8[]" @@ -3672,11 +4308,11 @@ }, { "constant": false, - "id": 219, + "id": 286, "name": "r", "nodeType": "VariableDeclaration", - "scope": 283, - "src": "4135:11:2", + "scope": 350, + "src": "5043:11:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3685,19 +4321,19 @@ }, "typeName": { "baseType": { - "id": 217, + "id": 284, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "4135:7:2", + "src": "5043:7:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "id": 218, + "id": 285, "length": null, "nodeType": "ArrayTypeName", - "src": "4135:9:2", + "src": "5043:9:3", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", "typeString": "bytes32[]" @@ -3708,11 +4344,11 @@ }, { "constant": false, - "id": 222, + "id": 289, "name": "s", "nodeType": "VariableDeclaration", - "scope": 283, - "src": "4148:11:2", + "scope": 350, + "src": "5056:11:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3721,19 +4357,19 @@ }, "typeName": { "baseType": { - "id": 220, + "id": 287, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "4148:7:2", + "src": "5056:7:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "id": 221, + "id": 288, "length": null, "nodeType": "ArrayTypeName", - "src": "4148:9:2", + "src": "5056:9:3", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", "typeString": "bytes32[]" @@ -3743,26 +4379,26 @@ "visibility": "internal" } ], - "src": "4109:51:2" + "src": "5017:51:3" }, "payable": false, "returnParameters": { - "id": 224, + "id": 291, "nodeType": "ParameterList", "parameters": [], - "src": "4195:0:2" + "src": "5103:0:3" }, - "scope": 324, - "src": "4091:541:2", + "scope": 397, + "src": "4999:541:3", "stateMutability": "view", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 322, + "id": 395, "nodeType": "Block", - "src": "5448:126:2", + "src": "6464:176:3", "statements": [ { "expression": { @@ -3773,290 +4409,359 @@ "arguments": [ { "argumentTypes": null, - "hexValue": "30783139", - "id": 306, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30783139", + "id": 377, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6526:4:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_25_by_1", + "typeString": "int_const 25" + }, + "value": "0x19" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_25_by_1", + "typeString": "int_const 25" + } + ], + "id": 376, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6521:4:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes1_$", + "typeString": "type(bytes1)" + }, + "typeName": "byte" + }, + "id": 378, "isConstant": false, "isLValue": false, "isPure": true, - "kind": "number", + "kind": "typeConversion", "lValueRequested": false, - "nodeType": "Literal", - "src": "5480:4:2", - "subdenomination": null, + "names": [], + "nodeType": "FunctionCall", + "src": "6521:10:3", "typeDescriptions": { - "typeIdentifier": "t_rational_25_by_1", - "typeString": "int_const 25" - }, - "value": "0x19" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_25_by_1", - "typeString": "int_const 25" + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" } - ], - "id": 305, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "5475:4:2", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes1_$", - "typeString": "type(bytes1)" }, - "typeName": "byte" - }, - "id": 307, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5475:10:2", - "typeDescriptions": { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - } - }, - { - "argumentTypes": null, - "arguments": [ { "argumentTypes": null, - "hexValue": "30", - "id": 309, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 380, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6538:1:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 379, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6533:4:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes1_$", + "typeString": "type(bytes1)" + }, + "typeName": "byte" + }, + "id": 381, "isConstant": false, "isLValue": false, "isPure": true, - "kind": "number", + "kind": "typeConversion", "lValueRequested": false, - "nodeType": "Literal", - "src": "5492:1:2", - "subdenomination": null, + "names": [], + "nodeType": "FunctionCall", + "src": "6533:7:3", "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + { + "argumentTypes": null, + "id": 382, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2631, + "src": "6542:4:3", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GnosisSafePersonalEdition_$397", + "typeString": "contract GnosisSafePersonalEdition" + } + }, + { + "argumentTypes": null, + "id": 383, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 352, + "src": "6548:2:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 384, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 354, + "src": "6552:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 385, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 356, + "src": "6559:4:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 386, + "name": "operation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 358, + "src": "6565:9:3", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + } + }, + { + "argumentTypes": null, + "id": 387, + "name": "safeTxGas", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 360, + "src": "6576:9:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 388, + "name": "dataGas", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 362, + "src": "6587:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 389, + "name": "gasPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 364, + "src": "6596:8:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 390, + "name": "gasToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 366, + "src": "6606:8:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 391, + "name": "_nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 368, + "src": "6616:6:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } } ], "expression": { "argumentTypes": [ { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + }, + { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + }, + { + "typeIdentifier": "t_contract$_GnosisSafePersonalEdition_$397", + "typeString": "contract GnosisSafePersonalEdition" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } ], - "id": 308, + "expression": { + "argumentTypes": null, + "id": 374, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2585, + "src": "6504:3:3", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 375, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "5487:4:2", + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "6504:16:3", "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes1_$", - "typeString": "type(bytes1)" - }, - "typeName": "byte" + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } }, - "id": 310, + "id": 392, "isConstant": false, "isLValue": false, - "isPure": true, - "kind": "typeConversion", + "isPure": false, + "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5487:7:2", - "typeDescriptions": { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - } - }, - { - "argumentTypes": null, - "id": 311, - "name": "this", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2423, - "src": "5496:4:2", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafePersonalEdition_$324", - "typeString": "contract GnosisSafePersonalEdition" - } - }, - { - "argumentTypes": null, - "id": 312, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 285, - "src": "5502:2:2", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 313, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 287, - "src": "5506:5:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 314, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 289, - "src": "5513:4:2", + "src": "6504:119:3", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } - }, - { - "argumentTypes": null, - "id": 315, - "name": "operation", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 291, - "src": "5519:9:2", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", - "typeString": "enum Enum.Operation" - } - }, - { - "argumentTypes": null, - "id": 316, - "name": "safeTxGas", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 293, - "src": "5530:9:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 317, - "name": "dataGas", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 295, - "src": "5541:7:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 318, - "name": "gasPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 297, - "src": "5550:8:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 319, - "name": "_nonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 299, - "src": "5560:6:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } } ], "expression": { "argumentTypes": [ - { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - }, - { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - }, - { - "typeIdentifier": "t_contract$_GnosisSafePersonalEdition_$324", - "typeString": "contract GnosisSafePersonalEdition" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_enum$_Operation_$5", - "typeString": "enum Enum.Operation" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" } ], - "id": 304, + "id": 373, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2390, - "src": "5465:9:2", + "referencedDeclaration": 2592, + "src": "6481:9:3", "typeDescriptions": { "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", "typeString": "function () pure returns (bytes32)" } }, - "id": 320, + "id": 393, "isConstant": false, "isLValue": false, "isPure": false, @@ -4064,21 +4769,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5465:102:2", + "src": "6481:152:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "functionReturnParameters": 303, - "id": 321, + "functionReturnParameters": 372, + "id": 394, "nodeType": "Return", - "src": "5458:109:2" + "src": "6474:159:3" } ] }, - "documentation": "@dev Returns hash to be signed by owners.\n @param to Destination address.\n @param value Ether value.\n @param data Data payload.\n @param operation Operation type.\n @param safeTxGas Fas that should be used for the safe transaction.\n @param dataGas Gas costs for data used to trigger the safe transaction.\n @param gasPrice Maximum gas price that should be used for this transaction.\n @param _nonce Transaction nonce.\n @return Transaction hash.", - "id": 323, + "documentation": "@dev Returns hash to be signed by owners.\n @param to Destination address.\n @param value Ether value.\n @param data Data payload.\n @param operation Operation type.\n @param safeTxGas Fas that should be used for the safe transaction.\n @param dataGas Gas costs for data used to trigger the safe transaction.\n @param gasPrice Maximum gas price that should be used for this transaction.\n @param gasToken Token address (or 0 if ETH) that is used for the payment.\n @param _nonce Transaction nonce.\n @return Transaction hash.", + "id": 396, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -4086,16 +4791,16 @@ "name": "getTransactionHash", "nodeType": "FunctionDefinition", "parameters": { - "id": 300, + "id": 369, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 285, + "id": 352, "name": "to", "nodeType": "VariableDeclaration", - "scope": 323, - "src": "5187:10:2", + "scope": 396, + "src": "6177:10:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4103,10 +4808,10 @@ "typeString": "address" }, "typeName": { - "id": 284, + "id": 351, "name": "address", "nodeType": "ElementaryTypeName", - "src": "5187:7:2", + "src": "6177:7:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4117,11 +4822,11 @@ }, { "constant": false, - "id": 287, + "id": 354, "name": "value", "nodeType": "VariableDeclaration", - "scope": 323, - "src": "5208:13:2", + "scope": 396, + "src": "6198:13:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4129,10 +4834,10 @@ "typeString": "uint256" }, "typeName": { - "id": 286, + "id": 353, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "5208:7:2", + "src": "6198:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4143,11 +4848,11 @@ }, { "constant": false, - "id": 289, + "id": 356, "name": "data", "nodeType": "VariableDeclaration", - "scope": 323, - "src": "5232:10:2", + "scope": 396, + "src": "6222:10:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4155,10 +4860,10 @@ "typeString": "bytes" }, "typeName": { - "id": 288, + "id": 355, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "5232:5:2", + "src": "6222:5:3", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -4169,26 +4874,26 @@ }, { "constant": false, - "id": 291, + "id": 358, "name": "operation", "nodeType": "VariableDeclaration", - "scope": 323, - "src": "5253:24:2", + "scope": 396, + "src": "6243:24:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, "typeName": { "contractScope": null, - "id": 290, + "id": 357, "name": "Enum.Operation", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 5, - "src": "5253:14:2", + "referencedDeclaration": 29, + "src": "6243:14:3", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, @@ -4197,11 +4902,11 @@ }, { "constant": false, - "id": 293, + "id": 360, "name": "safeTxGas", "nodeType": "VariableDeclaration", - "scope": 323, - "src": "5288:17:2", + "scope": 396, + "src": "6278:17:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4209,10 +4914,10 @@ "typeString": "uint256" }, "typeName": { - "id": 292, + "id": 359, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "5288:7:2", + "src": "6278:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4223,11 +4928,11 @@ }, { "constant": false, - "id": 295, + "id": 362, "name": "dataGas", "nodeType": "VariableDeclaration", - "scope": 323, - "src": "5316:15:2", + "scope": 396, + "src": "6306:15:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4235,10 +4940,10 @@ "typeString": "uint256" }, "typeName": { - "id": 294, + "id": 361, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "5316:7:2", + "src": "6306:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4249,11 +4954,11 @@ }, { "constant": false, - "id": 297, + "id": 364, "name": "gasPrice", "nodeType": "VariableDeclaration", - "scope": 323, - "src": "5342:16:2", + "scope": 396, + "src": "6332:16:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4261,10 +4966,10 @@ "typeString": "uint256" }, "typeName": { - "id": 296, + "id": 363, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "5342:7:2", + "src": "6332:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4275,11 +4980,37 @@ }, { "constant": false, - "id": 299, + "id": 366, + "name": "gasToken", + "nodeType": "VariableDeclaration", + "scope": 396, + "src": "6359:16:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 365, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6359:7:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 368, "name": "_nonce", "nodeType": "VariableDeclaration", - "scope": 323, - "src": "5369:14:2", + "scope": 396, + "src": "6385:14:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4287,10 +5018,10 @@ "typeString": "uint256" }, "typeName": { - "id": 298, + "id": 367, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "5369:7:2", + "src": "6385:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4300,20 +5031,20 @@ "visibility": "internal" } ], - "src": "5177:212:2" + "src": "6167:238:3" }, "payable": false, "returnParameters": { - "id": 303, + "id": 372, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 302, + "id": 371, "name": "", "nodeType": "VariableDeclaration", - "scope": 323, - "src": "5435:7:2", + "scope": 396, + "src": "6451:7:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4321,10 +5052,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 301, + "id": 370, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "5435:7:2", + "src": "6451:7:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -4334,60 +5065,71 @@ "visibility": "internal" } ], - "src": "5434:9:2" + "src": "6450:9:3" }, - "scope": 324, - "src": "5150:424:2", + "scope": 397, + "src": "6140:500:3", "stateMutability": "view", "superFunction": null, "visibility": "public" } ], - "scope": 325, - "src": "314:5262:2" + "scope": 398, + "src": "449:6193:3" } ], - "src": "0:5577:2" + "src": "0:6643:3" }, "legacyAST": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafePersonalEdition.sol", "exportedSymbols": { "GnosisSafePersonalEdition": [ - 324 + 397 ] }, - "id": 325, + "id": 398, "nodeType": "SourceUnit", "nodes": [ { - "id": 41, + "id": 65, "literals": [ "solidity", "0.4", - ".23" + ".24" ], "nodeType": "PragmaDirective", - "src": "0:23:2" + "src": "0:23:3" + }, + { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/interfaces/ERC20Token.sol", + "file": "./interfaces/ERC20Token.sol", + "id": 66, + "nodeType": "ImportDirective", + "scope": 398, + "sourceUnit": 1686, + "src": "24:37:3", + "symbolAliases": [], + "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafe.sol", "file": "./GnosisSafe.sol", - "id": 42, + "id": 67, "nodeType": "ImportDirective", - "scope": 325, - "sourceUnit": 40, - "src": "24:26:2", + "scope": 398, + "sourceUnit": 64, + "src": "62:26:3", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/MasterCopy.sol", "file": "./MasterCopy.sol", - "id": 43, + "id": 68, "nodeType": "ImportDirective", - "scope": 325, - "sourceUnit": 581, - "src": "51:26:2", + "scope": 398, + "sourceUnit": 653, + "src": "89:26:3", "symbolAliases": [], "unitAlias": "" }, @@ -4397,68 +5139,68 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 44, + "id": 69, "name": "MasterCopy", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 580, - "src": "352:10:2", + "referencedDeclaration": 652, + "src": "487:10:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_MasterCopy_$580", + "typeIdentifier": "t_contract$_MasterCopy_$652", "typeString": "contract MasterCopy" } }, - "id": 45, + "id": 70, "nodeType": "InheritanceSpecifier", - "src": "352:10:2" + "src": "487:10:3" }, { "arguments": null, "baseName": { "contractScope": null, - "id": 46, + "id": 71, "name": "GnosisSafe", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 39, - "src": "364:10:2", + "referencedDeclaration": 63, + "src": "499:10:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$39", + "typeIdentifier": "t_contract$_GnosisSafe_$63", "typeString": "contract GnosisSafe" } }, - "id": 47, + "id": 72, "nodeType": "InheritanceSpecifier", - "src": "364:10:2" + "src": "499:10:3" } ], "contractDependencies": [ - 39, - 580, - 971, - 1343, - 1359 + 63, + 652, + 1100, + 1472, + 1619 ], "contractKind": "contract", - "documentation": "@title Gnosis Safe Personal Edition - A multisignature wallet with support for confirmations using signed messages based on ERC191.\n @author Stefan George - \n @author Richard Meissner - ", + "documentation": "@title Gnosis Safe Personal Edition - A multisignature wallet with support for confirmations using signed messages based on ERC191.\n @author Stefan George - \n @author Richard Meissner - \n @author Ricardo Guilherme Schmidt - (Status Research & Development GmbH) - Gas Token Payment", "fullyImplemented": true, - "id": 324, + "id": 397, "linearizedBaseContracts": [ - 324, - 39, - 1343, - 971, - 580, - 1359 + 397, + 63, + 1472, + 1100, + 652, + 1619 ], "name": "GnosisSafePersonalEdition", "nodeType": "ContractDefinition", "nodes": [ { "constant": true, - "id": 50, + "id": 75, "name": "NAME", "nodeType": "VariableDeclaration", - "scope": 324, - "src": "382:60:2", + "scope": 397, + "src": "517:60:3", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -4466,10 +5208,10 @@ "typeString": "string" }, "typeName": { - "id": 48, + "id": 73, "name": "string", "nodeType": "ElementaryTypeName", - "src": "382:6:2", + "src": "517:6:3", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -4478,14 +5220,14 @@ "value": { "argumentTypes": null, "hexValue": "476e6f736973205361666520506572736f6e616c2045646974696f6e", - "id": 49, + "id": 74, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "412:30:2", + "src": "547:30:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_b657d2895d137bf089ce1df776b732639b1ebc2a3aec3bd837e225e9e0965154", @@ -4497,11 +5239,11 @@ }, { "constant": true, - "id": 53, + "id": 78, "name": "VERSION", "nodeType": "VariableDeclaration", - "scope": 324, - "src": "448:40:2", + "scope": 397, + "src": "583:40:3", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -4509,10 +5251,10 @@ "typeString": "string" }, "typeName": { - "id": 51, + "id": 76, "name": "string", "nodeType": "ElementaryTypeName", - "src": "448:6:2", + "src": "583:6:3", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -4521,14 +5263,14 @@ "value": { "argumentTypes": null, "hexValue": "302e302e31", - "id": 52, + "id": 77, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "481:7:2", + "src": "616:7:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_ae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc199163811885", @@ -4540,11 +5282,11 @@ }, { "constant": true, - "id": 56, + "id": 81, "name": "BASE_TX_GAS_COSTS", "nodeType": "VariableDeclaration", - "scope": 324, - "src": "499:51:2", + "scope": 397, + "src": "634:51:3", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -4552,10 +5294,10 @@ "typeString": "uint256" }, "typeName": { - "id": 54, + "id": 79, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "499:7:2", + "src": "634:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4564,14 +5306,14 @@ "value": { "argumentTypes": null, "hexValue": "3231303030", - "id": 55, + "id": 80, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "545:5:2", + "src": "680:5:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_21000_by_1", @@ -4583,11 +5325,11 @@ }, { "constant": true, - "id": 59, + "id": 84, "name": "PAYMENT_GAS_COSTS", "nodeType": "VariableDeclaration", - "scope": 324, - "src": "556:51:2", + "scope": 397, + "src": "691:51:3", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -4595,10 +5337,10 @@ "typeString": "uint256" }, "typeName": { - "id": 57, + "id": 82, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "556:7:2", + "src": "691:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4607,14 +5349,14 @@ "value": { "argumentTypes": null, "hexValue": "3131303030", - "id": 58, + "id": 83, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "602:5:2", + "src": "737:5:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_11000_by_1", @@ -4627,24 +5369,24 @@ { "anonymous": false, "documentation": null, - "id": 61, + "id": 86, "name": "ExecutionFailed", "nodeType": "EventDefinition", "parameters": { - "id": 60, + "id": 85, "nodeType": "ParameterList", "parameters": [], - "src": "635:2:2" + "src": "770:2:3" }, - "src": "614:24:2" + "src": "749:24:3" }, { "constant": false, - "id": 63, + "id": 88, "name": "nonce", "nodeType": "VariableDeclaration", - "scope": 324, - "src": "644:20:2", + "scope": 397, + "src": "779:20:3", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -4652,10 +5394,10 @@ "typeString": "uint256" }, "typeName": { - "id": 62, + "id": 87, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "644:7:2", + "src": "779:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4666,22 +5408,22 @@ }, { "body": { - "id": 155, + "id": 211, "nodeType": "Block", - "src": "1738:708:2", + "src": "1984:1043:3", "statements": [ { "assignments": [ - 90 + 117 ], "declarations": [ { "constant": false, - "id": 90, + "id": 117, "name": "startGas", "nodeType": "VariableDeclaration", - "scope": 156, - "src": "1748:16:2", + "scope": 212, + "src": "1994:16:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4689,10 +5431,10 @@ "typeString": "uint256" }, "typeName": { - "id": 89, + "id": 116, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1748:7:2", + "src": "1994:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4702,24 +5444,24 @@ "visibility": "internal" } ], - "id": 93, + "id": 120, "initialValue": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], - "id": 91, + "id": 118, "name": "gasleft", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2389, - "src": "1767:7:2", + "referencedDeclaration": 2591, + "src": "2013:7:3", "typeDescriptions": { "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, - "id": 92, + "id": 119, "isConstant": false, "isLValue": false, "isPure": false, @@ -4727,14 +5469,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1767:9:2", + "src": "2013:9:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "1748:28:2" + "src": "1994:28:3" }, { "expression": { @@ -4745,12 +5487,12 @@ "arguments": [ { "argumentTypes": null, - "id": 96, + "id": 123, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 65, - "src": "1815:2:2", + "referencedDeclaration": 90, + "src": "2061:2:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4758,12 +5500,12 @@ }, { "argumentTypes": null, - "id": 97, + "id": 124, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 67, - "src": "1819:5:2", + "referencedDeclaration": 92, + "src": "2065:5:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4771,12 +5513,12 @@ }, { "argumentTypes": null, - "id": 98, + "id": 125, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69, - "src": "1826:4:2", + "referencedDeclaration": 94, + "src": "2072:4:3", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -4784,25 +5526,25 @@ }, { "argumentTypes": null, - "id": 99, + "id": 126, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71, - "src": "1832:9:2", + "referencedDeclaration": 96, + "src": "2078:9:3", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, { "argumentTypes": null, - "id": 100, + "id": 127, "name": "safeTxGas", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73, - "src": "1843:9:2", + "referencedDeclaration": 98, + "src": "2089:9:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4810,12 +5552,12 @@ }, { "argumentTypes": null, - "id": 101, + "id": 128, "name": "dataGas", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 75, - "src": "1854:7:2", + "referencedDeclaration": 100, + "src": "2100:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4823,12 +5565,12 @@ }, { "argumentTypes": null, - "id": 102, + "id": 129, "name": "gasPrice", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 77, - "src": "1863:8:2", + "referencedDeclaration": 102, + "src": "2109:8:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4836,12 +5578,25 @@ }, { "argumentTypes": null, - "id": 103, + "id": 130, + "name": "gasToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 104, + "src": "2119:8:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 131, "name": "nonce", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 63, - "src": "1873:5:2", + "referencedDeclaration": 88, + "src": "2129:5:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4863,7 +5618,7 @@ "typeString": "bytes memory" }, { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, { @@ -4878,23 +5633,27 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], - "id": 95, + "id": 122, "name": "getTransactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 323, - "src": "1796:18:2", + "referencedDeclaration": 396, + "src": "2042:18:3", "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$5_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$", - "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256,uint256,uint256,uint256) view returns (bytes32)" + "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$_t_uint256_$_t_uint256_$_t_uint256_$_t_address_$_t_uint256_$returns$_t_bytes32_$", + "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256,uint256,uint256,address,uint256) view returns (bytes32)" } }, - "id": 104, + "id": 132, "isConstant": false, "isLValue": false, "isPure": false, @@ -4902,7 +5661,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1796:83:2", + "src": "2042:93:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -4910,12 +5669,12 @@ }, { "argumentTypes": null, - "id": 105, + "id": 133, "name": "v", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 80, - "src": "1881:1:2", + "referencedDeclaration": 107, + "src": "2137:1:3", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr", "typeString": "uint8[] memory" @@ -4923,12 +5682,12 @@ }, { "argumentTypes": null, - "id": 106, + "id": 134, "name": "r", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 83, - "src": "1884:1:2", + "referencedDeclaration": 110, + "src": "2140:1:3", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", "typeString": "bytes32[] memory" @@ -4936,12 +5695,12 @@ }, { "argumentTypes": null, - "id": 107, + "id": 135, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 86, - "src": "1887:1:2", + "referencedDeclaration": 113, + "src": "2143:1:3", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", "typeString": "bytes32[] memory" @@ -4967,18 +5726,18 @@ "typeString": "bytes32[] memory" } ], - "id": 94, + "id": 121, "name": "checkHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 283, - "src": "1786:9:2", + "referencedDeclaration": 350, + "src": "2032:9:3", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_array$_t_uint8_$dyn_memory_ptr_$_t_array$_t_bytes32_$dyn_memory_ptr_$_t_array$_t_bytes32_$dyn_memory_ptr_$returns$__$", "typeString": "function (bytes32,uint8[] memory,bytes32[] memory,bytes32[] memory) view" } }, - "id": 108, + "id": 136, "isConstant": false, "isLValue": false, "isPure": false, @@ -4986,20 +5745,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1786:103:2", + "src": "2032:113:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 109, + "id": 137, "nodeType": "ExpressionStatement", - "src": "1786:103:2" + "src": "2032:113:3" }, { "expression": { "argumentTypes": null, - "id": 111, + "id": 139, "isConstant": false, "isLValue": false, "isPure": false, @@ -5007,15 +5766,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "1950:7:2", + "src": "2206:7:3", "subExpression": { "argumentTypes": null, - "id": 110, + "id": 138, "name": "nonce", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 63, - "src": "1950:5:2", + "referencedDeclaration": 88, + "src": "2206:5:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5026,9 +5785,9 @@ "typeString": "uint256" } }, - "id": 112, + "id": 140, "nodeType": "ExpressionStatement", - "src": "1950:7:2" + "src": "2206:7:3" }, { "expression": { @@ -5040,7 +5799,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 119, + "id": 147, "isConstant": false, "isLValue": false, "isPure": false, @@ -5051,7 +5810,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 117, + "id": 145, "isConstant": false, "isLValue": false, "isPure": false, @@ -5061,18 +5820,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 114, + "id": 142, "name": "gasleft", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2389, - "src": "1975:7:2", + "referencedDeclaration": 2591, + "src": "2231:7:3", "typeDescriptions": { "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, - "id": 115, + "id": 143, "isConstant": false, "isLValue": false, "isPure": false, @@ -5080,7 +5839,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1975:9:2", + "src": "2231:9:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5090,18 +5849,18 @@ "operator": "-", "rightExpression": { "argumentTypes": null, - "id": 116, + "id": 144, "name": "PAYMENT_GAS_COSTS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 59, - "src": "1987:17:2", + "referencedDeclaration": 84, + "src": "2243:17:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1975:29:2", + "src": "2231:29:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5111,18 +5870,18 @@ "operator": ">=", "rightExpression": { "argumentTypes": null, - "id": 118, + "id": 146, "name": "safeTxGas", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73, - "src": "2008:9:2", + "referencedDeclaration": 98, + "src": "2264:9:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1975:42:2", + "src": "2231:42:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5136,21 +5895,21 @@ "typeString": "bool" } ], - "id": 113, + "id": 141, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "1967:7:2", + "referencedDeclaration": 2601, + "src": "2223:7:3", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 120, + "id": 148, "isConstant": false, "isLValue": false, "isPure": false, @@ -5158,20 +5917,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1967:51:2", + "src": "2223:51:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 121, + "id": 149, "nodeType": "ExpressionStatement", - "src": "1967:51:2" + "src": "2223:51:3" }, { "condition": { "argumentTypes": null, - "id": 129, + "id": 157, "isConstant": false, "isLValue": false, "isPure": false, @@ -5179,18 +5938,18 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "2032:47:2", + "src": "2288:47:3", "subExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 123, + "id": 151, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 65, - "src": "2041:2:2", + "referencedDeclaration": 90, + "src": "2297:2:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5198,12 +5957,12 @@ }, { "argumentTypes": null, - "id": 124, + "id": 152, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 67, - "src": "2045:5:2", + "referencedDeclaration": 92, + "src": "2301:5:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5211,12 +5970,12 @@ }, { "argumentTypes": null, - "id": 125, + "id": 153, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69, - "src": "2052:4:2", + "referencedDeclaration": 94, + "src": "2308:4:3", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -5224,25 +5983,25 @@ }, { "argumentTypes": null, - "id": 126, + "id": 154, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71, - "src": "2058:9:2", + "referencedDeclaration": 96, + "src": "2314:9:3", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, { "argumentTypes": null, - "id": 127, + "id": 155, "name": "safeTxGas", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73, - "src": "2069:9:2", + "referencedDeclaration": 98, + "src": "2325:9:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5264,7 +6023,7 @@ "typeString": "bytes memory" }, { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, { @@ -5272,18 +6031,18 @@ "typeString": "uint256" } ], - "id": 122, + "id": 150, "name": "execute", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 860, - "src": "2033:7:2", + "referencedDeclaration": 989, + "src": "2289:7:3", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$5_$_t_uint256_$returns$_t_bool_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256) returns (bool)" } }, - "id": 128, + "id": 156, "isConstant": false, "isLValue": false, "isPure": false, @@ -5291,7 +6050,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2033:46:2", + "src": "2289:46:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5303,13 +6062,13 @@ } }, "falseBody": null, - "id": 134, + "id": 162, "nodeType": "IfStatement", - "src": "2028:100:2", + "src": "2284:100:3", "trueBody": { - "id": 133, + "id": 161, "nodeType": "Block", - "src": "2081:47:2", + "src": "2337:47:3", "statements": [ { "eventCall": { @@ -5317,18 +6076,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 130, + "id": 158, "name": "ExecutionFailed", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 61, - "src": "2100:15:2", + "referencedDeclaration": 86, + "src": "2356:15:3", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$__$returns$__$", "typeString": "function ()" } }, - "id": 131, + "id": 159, "isConstant": false, "isLValue": false, "isPure": false, @@ -5336,98 +6095,214 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2100:17:2", + "src": "2356:17:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 132, + "id": 160, "nodeType": "EmitStatement", - "src": "2095:22:2" + "src": "2351:22:3" } ] } }, { - "assignments": [ - 136 - ], - "declarations": [ - { - "constant": false, - "id": 136, - "name": "gasCosts", - "nodeType": "VariableDeclaration", - "scope": 156, - "src": "2137:16:2", - "stateVariable": false, - "storageLocation": "default", + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 165, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 163, + "name": "gasPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 102, + "src": "2537:8:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 164, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2548:1:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" }, - "typeName": { - "id": 135, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2137:7:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" + "value": "0" + }, + "src": "2537:12:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" } - ], - "id": 144, - "initialValue": { - "argumentTypes": null, - "arguments": [ + }, + "falseBody": null, + "id": 210, + "nodeType": "IfStatement", + "src": "2533:486:3", + "trueBody": { + "id": 209, + "nodeType": "Block", + "src": "2551:468:3", + "statements": [ { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 141, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 138, - "name": "startGas", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 90, - "src": "2170:8:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "assignments": [ + 167 + ], + "declarations": [ + { + "constant": false, + "id": 167, + "name": "gasCosts", + "nodeType": "VariableDeclaration", + "scope": 212, + "src": "2565:16:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 166, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2565:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { + ], + "id": 175, + "initialValue": { "argumentTypes": null, - "arguments": [], + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 172, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 169, + "name": "startGas", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 117, + "src": "2598:8:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 170, + "name": "gasleft", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2591, + "src": "2609:7:3", + "typeDescriptions": { + "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", + "typeString": "function () view returns (uint256)" + } + }, + "id": 171, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2609:9:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2598:20:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 173, + "name": "dataGas", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 100, + "src": "2620:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], "expression": { - "argumentTypes": [], - "id": 139, - "name": "gasleft", + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 168, + "name": "totalGasCosts", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2389, - "src": "2181:7:2", + "referencedDeclaration": 230, + "src": "2584:13:3", "typeDescriptions": { - "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", - "typeString": "function () view returns (uint256)" + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" } }, - "id": 140, + "id": 174, "isConstant": false, "isLValue": false, "isPure": false, @@ -5435,210 +6310,491 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2181:9:2", + "src": "2584:44:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "2170:20:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } + "nodeType": "VariableDeclarationStatement", + "src": "2565:63:3" }, { - "argumentTypes": null, - "id": 142, - "name": "dataGas", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 75, - "src": "2192:7:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 137, - "name": "totalGasCosts", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 174, - "src": "2156:13:2", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256) pure returns (uint256)" - } - }, - "id": 143, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2156:44:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "2137:63:2" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 152, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { + "assignments": [ + 177 + ], + "declarations": [ + { + "constant": false, + "id": 177, + "name": "amount", + "nodeType": "VariableDeclaration", + "scope": 212, + "src": "2642:14:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 176, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2642:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 181, + "initialValue": { "argumentTypes": null, - "id": 150, - "name": "gasCosts", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 136, - "src": "2419:8:2", + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 180, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 178, + "name": "gasCosts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 167, + "src": "2659:8:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "id": 179, + "name": "gasPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 102, + "src": "2670:8:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2659:19:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "nodeType": "BinaryOperation", - "operator": "*", - "rightExpression": { - "argumentTypes": null, - "id": 151, - "name": "gasPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 77, - "src": "2430:8:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2419:19:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 145, - "name": "tx", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2408, - "src": "2400:2:2", - "typeDescriptions": { - "typeIdentifier": "t_magic_transaction", - "typeString": "tx" - } - }, - "id": 148, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "origin", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "2400:9:2", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } + "nodeType": "VariableDeclarationStatement", + "src": "2642:36:3" }, - "id": 149, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "transfer", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "2400:18:2", - "typeDescriptions": { - "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$", - "typeString": "function (uint256)" + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 186, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 182, + "name": "gasToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 104, + "src": "2696:8:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 184, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2716:1:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 183, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2708:7:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 185, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2708:10:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "2696:22:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 207, + "nodeType": "Block", + "src": "2852:157:3", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 201, + "name": "tx", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2610, + "src": "2975:2:3", + "typeDescriptions": { + "typeIdentifier": "t_magic_transaction", + "typeString": "tx" + } + }, + "id": 202, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "origin", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2975:9:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 203, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 177, + "src": "2986:6:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 198, + "name": "gasToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 104, + "src": "2956:8:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 197, + "name": "ERC20Token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1685, + "src": "2945:10:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC20Token_$1685_$", + "typeString": "type(contract ERC20Token)" + } + }, + "id": 199, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2945:20:3", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Token_$1685", + "typeString": "contract ERC20Token" + } + }, + "id": 200, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 1639, + "src": "2945:29:3", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + "id": 204, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2945:48:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 196, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2601, + 2602 + ], + "referencedDeclaration": 2601, + "src": "2937:7:3", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 205, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2937:57:3", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 206, + "nodeType": "ExpressionStatement", + "src": "2937:57:3" + } + ] + }, + "id": 208, + "nodeType": "IfStatement", + "src": "2692:317:3", + "trueBody": { + "id": 195, + "nodeType": "Block", + "src": "2720:126:3", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 192, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 177, + "src": "2824:6:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 187, + "name": "tx", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2610, + "src": "2805:2:3", + "typeDescriptions": { + "typeIdentifier": "t_magic_transaction", + "typeString": "tx" + } + }, + "id": 190, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "origin", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2805:9:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 191, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transfer", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2805:18:3", + "typeDescriptions": { + "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 193, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2805:26:3", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 194, + "nodeType": "ExpressionStatement", + "src": "2805:26:3" + } + ] + } } - }, - "id": 153, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2400:39:2", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 154, - "nodeType": "ExpressionStatement", - "src": "2400:39:2" + ] + } } ] }, - "documentation": "@dev Allows to execute a Safe transaction confirmed by required number of owners.\n @param to Destination address of Safe transaction.\n @param value Ether value of Safe transaction.\n @param data Data payload of Safe transaction.\n @param operation Operation type of Safe transaction.\n @param safeTxGas Gas that should be used for the Safe transaction.\n @param dataGas Gas costs for data used to trigger the safe transaction.\n @param gasPrice Gas price that should be used for the payment calculation.\n @param v Array of signature V values sorted by owner addresses.\n @param r Array of signature R values sorted by owner addresses.\n @param s Array of signature S values sorted by owner addresses.", - "id": 156, + "documentation": "@dev Allows to execute a Safe transaction confirmed by required number of owners.\n @param to Destination address of Safe transaction.\n @param value Ether value of Safe transaction.\n @param data Data payload of Safe transaction.\n @param operation Operation type of Safe transaction.\n @param safeTxGas Gas that should be used for the Safe transaction.\n @param dataGas Gas costs for data used to trigger the safe transaction.\n @param gasPrice Gas price that should be used for the payment calculation.\n @param gasToken Token address (or 0 if ETH) that is used for the payment.\n @param v Array of signature V values sorted by owner addresses.\n @param r Array of signature R values sorted by owner addresses.\n @param s Array of signature S values sorted by owner addresses.", + "id": 212, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [], - "name": "execPayTransaction", + "name": "execAndPayTransaction", "nodeType": "FunctionDefinition", "parameters": { - "id": 87, + "id": 114, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 65, + "id": 90, "name": "to", "nodeType": "VariableDeclaration", - "scope": 156, - "src": "1480:10:2", + "scope": 212, + "src": "1700:10:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5646,10 +6802,10 @@ "typeString": "address" }, "typeName": { - "id": 64, + "id": 89, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1480:7:2", + "src": "1700:7:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5660,11 +6816,11 @@ }, { "constant": false, - "id": 67, + "id": 92, "name": "value", "nodeType": "VariableDeclaration", - "scope": 156, - "src": "1501:13:2", + "scope": 212, + "src": "1721:13:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5672,10 +6828,10 @@ "typeString": "uint256" }, "typeName": { - "id": 66, + "id": 91, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1501:7:2", + "src": "1721:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5686,11 +6842,11 @@ }, { "constant": false, - "id": 69, + "id": 94, "name": "data", "nodeType": "VariableDeclaration", - "scope": 156, - "src": "1525:10:2", + "scope": 212, + "src": "1745:10:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5698,10 +6854,10 @@ "typeString": "bytes" }, "typeName": { - "id": 68, + "id": 93, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "1525:5:2", + "src": "1745:5:3", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -5712,26 +6868,26 @@ }, { "constant": false, - "id": 71, + "id": 96, "name": "operation", "nodeType": "VariableDeclaration", - "scope": 156, - "src": "1546:24:2", + "scope": 212, + "src": "1766:24:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, "typeName": { "contractScope": null, - "id": 70, + "id": 95, "name": "Enum.Operation", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 5, - "src": "1546:14:2", + "referencedDeclaration": 29, + "src": "1766:14:3", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, @@ -5740,11 +6896,11 @@ }, { "constant": false, - "id": 73, + "id": 98, "name": "safeTxGas", "nodeType": "VariableDeclaration", - "scope": 156, - "src": "1581:17:2", + "scope": 212, + "src": "1801:17:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5752,10 +6908,10 @@ "typeString": "uint256" }, "typeName": { - "id": 72, + "id": 97, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1581:7:2", + "src": "1801:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5766,11 +6922,11 @@ }, { "constant": false, - "id": 75, + "id": 100, "name": "dataGas", "nodeType": "VariableDeclaration", - "scope": 156, - "src": "1608:15:2", + "scope": 212, + "src": "1828:15:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5778,10 +6934,10 @@ "typeString": "uint256" }, "typeName": { - "id": 74, + "id": 99, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1608:7:2", + "src": "1828:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5792,11 +6948,11 @@ }, { "constant": false, - "id": 77, + "id": 102, "name": "gasPrice", "nodeType": "VariableDeclaration", - "scope": 156, - "src": "1633:16:2", + "scope": 212, + "src": "1853:16:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5804,10 +6960,10 @@ "typeString": "uint256" }, "typeName": { - "id": 76, + "id": 101, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1633:7:2", + "src": "1853:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5818,11 +6974,37 @@ }, { "constant": false, - "id": 80, + "id": 104, + "name": "gasToken", + "nodeType": "VariableDeclaration", + "scope": 212, + "src": "1879:16:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 103, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1879:7:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 107, "name": "v", "nodeType": "VariableDeclaration", - "scope": 156, - "src": "1659:9:2", + "scope": 212, + "src": "1905:9:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5831,19 +7013,19 @@ }, "typeName": { "baseType": { - "id": 78, + "id": 105, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "1659:5:2", + "src": "1905:5:3", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "id": 79, + "id": 106, "length": null, "nodeType": "ArrayTypeName", - "src": "1659:7:2", + "src": "1905:7:3", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint8_$dyn_storage_ptr", "typeString": "uint8[]" @@ -5854,11 +7036,11 @@ }, { "constant": false, - "id": 83, + "id": 110, "name": "r", "nodeType": "VariableDeclaration", - "scope": 156, - "src": "1679:11:2", + "scope": 212, + "src": "1925:11:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5867,19 +7049,19 @@ }, "typeName": { "baseType": { - "id": 81, + "id": 108, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "1679:7:2", + "src": "1925:7:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "id": 82, + "id": 109, "length": null, "nodeType": "ArrayTypeName", - "src": "1679:9:2", + "src": "1925:9:3", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", "typeString": "bytes32[]" @@ -5890,11 +7072,11 @@ }, { "constant": false, - "id": 86, + "id": 113, "name": "s", "nodeType": "VariableDeclaration", - "scope": 156, - "src": "1701:11:2", + "scope": 212, + "src": "1947:11:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5903,19 +7085,19 @@ }, "typeName": { "baseType": { - "id": 84, + "id": 111, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "1701:7:2", + "src": "1947:7:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "id": 85, + "id": 112, "length": null, "nodeType": "ArrayTypeName", - "src": "1701:9:2", + "src": "1947:9:3", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", "typeString": "bytes32[]" @@ -5925,26 +7107,26 @@ "visibility": "internal" } ], - "src": "1470:248:2" + "src": "1690:274:3" }, "payable": false, "returnParameters": { - "id": 88, + "id": 115, "nodeType": "ParameterList", "parameters": [], - "src": "1738:0:2" + "src": "1984:0:3" }, - "scope": 324, - "src": "1443:1003:2", + "scope": 397, + "src": "1660:1367:3", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 173, + "id": 229, "nodeType": "Block", - "src": "3001:86:2", + "src": "3582:86:3", "statements": [ { "expression": { @@ -5953,7 +7135,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 171, + "id": 227, "isConstant": false, "isLValue": false, "isPure": false, @@ -5964,7 +7146,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 169, + "id": 225, "isConstant": false, "isLValue": false, "isPure": false, @@ -5975,19 +7157,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 167, + "id": 223, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 165, + "id": 221, "name": "executionGas", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 158, - "src": "3018:12:2", + "referencedDeclaration": 214, + "src": "3599:12:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5997,18 +7179,18 @@ "operator": "+", "rightExpression": { "argumentTypes": null, - "id": 166, + "id": 222, "name": "dataGas", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 160, - "src": "3033:7:2", + "referencedDeclaration": 216, + "src": "3614:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3018:22:2", + "src": "3599:22:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6018,18 +7200,18 @@ "operator": "+", "rightExpression": { "argumentTypes": null, - "id": 168, + "id": 224, "name": "PAYMENT_GAS_COSTS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 59, - "src": "3043:17:2", + "referencedDeclaration": 84, + "src": "3624:17:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3018:42:2", + "src": "3599:42:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6039,32 +7221,32 @@ "operator": "+", "rightExpression": { "argumentTypes": null, - "id": 170, + "id": 226, "name": "BASE_TX_GAS_COSTS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 56, - "src": "3063:17:2", + "referencedDeclaration": 81, + "src": "3644:17:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3018:62:2", + "src": "3599:62:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 164, - "id": 172, + "functionReturnParameters": 220, + "id": 228, "nodeType": "Return", - "src": "3011:69:2" + "src": "3592:69:3" } ] }, "documentation": "@dev Calculates the total gas costs for a safe transaction with the gas costs for the execution of the transaction.\n @param executionGas Gas costs for the execution of the safe transaction.\n @param dataGas Gas costs for data used to trigger the safe transaction.\n @return Total gas costs for the execution (this includes gas costs for the payment to tx.origin, base transaction and payload data).", - "id": 174, + "id": 230, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -6072,16 +7254,16 @@ "name": "totalGasCosts", "nodeType": "FunctionDefinition", "parameters": { - "id": 161, + "id": 217, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 158, + "id": 214, "name": "executionGas", "nodeType": "VariableDeclaration", - "scope": 174, - "src": "2901:20:2", + "scope": 230, + "src": "3482:20:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6089,10 +7271,10 @@ "typeString": "uint256" }, "typeName": { - "id": 157, + "id": 213, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2901:7:2", + "src": "3482:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6103,11 +7285,11 @@ }, { "constant": false, - "id": 160, + "id": 216, "name": "dataGas", "nodeType": "VariableDeclaration", - "scope": 174, - "src": "2923:15:2", + "scope": 230, + "src": "3504:15:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6115,10 +7297,10 @@ "typeString": "uint256" }, "typeName": { - "id": 159, + "id": 215, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2923:7:2", + "src": "3504:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6128,20 +7310,20 @@ "visibility": "internal" } ], - "src": "2900:39:2" + "src": "3481:39:3" }, "payable": false, "returnParameters": { - "id": 164, + "id": 220, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 163, + "id": 219, "name": "", "nodeType": "VariableDeclaration", - "scope": 174, - "src": "2987:7:2", + "scope": 230, + "src": "3568:7:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6149,10 +7331,10 @@ "typeString": "uint256" }, "typeName": { - "id": 162, + "id": 218, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2987:7:2", + "src": "3568:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6162,32 +7344,32 @@ "visibility": "internal" } ], - "src": "2986:9:2" + "src": "3567:9:3" }, - "scope": 324, - "src": "2878:209:2", + "scope": 397, + "src": "3459:209:3", "stateMutability": "pure", "superFunction": null, "visibility": "public" }, { "body": { - "id": 210, + "id": 277, "nodeType": "Block", - "src": "3938:147:2", + "src": "4738:255:3", "statements": [ { "assignments": [ - 190 + 246 ], "declarations": [ { "constant": false, - "id": 190, + "id": 246, "name": "startGas", "nodeType": "VariableDeclaration", - "scope": 211, - "src": "3948:16:2", + "scope": 278, + "src": "4748:16:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6195,10 +7377,10 @@ "typeString": "uint256" }, "typeName": { - "id": 189, + "id": 245, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3948:7:2", + "src": "4748:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6208,24 +7390,24 @@ "visibility": "internal" } ], - "id": 193, + "id": 249, "initialValue": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], - "id": 191, + "id": 247, "name": "gasleft", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2389, - "src": "3967:7:2", + "referencedDeclaration": 2591, + "src": "4767:7:3", "typeDescriptions": { "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, - "id": 192, + "id": 248, "isConstant": false, "isLValue": false, "isPure": false, @@ -6233,14 +7415,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3967:9:2", + "src": "4767:9:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "3948:28:2" + "src": "4748:28:3" }, { "expression": { @@ -6251,12 +7433,12 @@ "arguments": [ { "argumentTypes": null, - "id": 196, + "id": 252, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 176, - "src": "4002:2:2", + "referencedDeclaration": 232, + "src": "4802:2:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6264,12 +7446,12 @@ }, { "argumentTypes": null, - "id": 197, + "id": 253, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 178, - "src": "4006:5:2", + "referencedDeclaration": 234, + "src": "4806:5:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6277,12 +7459,12 @@ }, { "argumentTypes": null, - "id": 198, + "id": 254, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 180, - "src": "4013:4:2", + "referencedDeclaration": 236, + "src": "4813:4:3", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -6290,14 +7472,14 @@ }, { "argumentTypes": null, - "id": 199, + "id": 255, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 182, - "src": "4019:9:2", + "referencedDeclaration": 238, + "src": "4819:9:3", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, @@ -6306,18 +7488,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 200, + "id": 256, "name": "gasleft", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2389, - "src": "4030:7:2", + "referencedDeclaration": 2591, + "src": "4830:7:3", "typeDescriptions": { "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, - "id": 201, + "id": 257, "isConstant": false, "isLValue": false, "isPure": false, @@ -6325,7 +7507,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4030:9:2", + "src": "4830:9:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6347,7 +7529,7 @@ "typeString": "bytes memory" }, { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, { @@ -6355,18 +7537,18 @@ "typeString": "uint256" } ], - "id": 195, + "id": 251, "name": "execute", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 860, - "src": "3994:7:2", + "referencedDeclaration": 989, + "src": "4794:7:3", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$5_$_t_uint256_$returns$_t_bool_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256) returns (bool)" } }, - "id": 202, + "id": 258, "isConstant": false, "isLValue": false, "isPure": false, @@ -6374,7 +7556,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3994:46:2", + "src": "4794:46:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6388,21 +7570,21 @@ "typeString": "bool" } ], - "id": 194, + "id": 250, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "3986:7:2", + "referencedDeclaration": 2601, + "src": "4786:7:3", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 203, + "id": 259, "isConstant": false, "isLValue": false, "isPure": false, @@ -6410,36 +7592,68 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3986:55:2", + "src": "4786:55:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 204, + "id": 260, "nodeType": "ExpressionStatement", - "src": "3986:55:2" + "src": "4786:55:3" }, { - "expression": { + "assignments": [ + 262 + ], + "declarations": [ + { + "constant": false, + "id": 262, + "name": "requiredGas", + "nodeType": "VariableDeclaration", + "scope": 278, + "src": "4851:19:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 261, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4851:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 267, + "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 208, + "id": 266, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 205, + "id": 263, "name": "startGas", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 190, - "src": "4058:8:2", + "referencedDeclaration": 246, + "src": "4873:8:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6452,18 +7666,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 206, + "id": 264, "name": "gasleft", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2389, - "src": "4069:7:2", + "referencedDeclaration": 2591, + "src": "4884:7:3", "typeDescriptions": { "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, - "id": 207, + "id": 265, "isConstant": false, "isLValue": false, "isPure": false, @@ -6471,64 +7685,209 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4069:9:2", + "src": "4884:9:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4058:20:2", + "src": "4873:20:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 188, - "id": 209, - "nodeType": "Return", - "src": "4051:27:2" + "nodeType": "VariableDeclarationStatement", + "src": "4851:42:3" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 272, + "name": "requiredGas", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 262, + "src": "4972:11:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 270, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2585, + "src": "4955:3:3", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 271, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4955:16:3", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 273, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4955:29:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 269, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4948:6:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_string_storage_ptr_$", + "typeString": "type(string storage pointer)" + }, + "typeName": "string" + }, + "id": 274, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4948:37:3", + "typeDescriptions": { + "typeIdentifier": "t_string_memory", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory", + "typeString": "string memory" + } + ], + "id": 268, + "name": "revert", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2603, + 2604 + ], + "referencedDeclaration": 2604, + "src": "4941:6:3", + "typeDescriptions": { + "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", + "typeString": "function (string memory) pure" + } + }, + "id": 275, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4941:45:3", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 276, + "nodeType": "ExpressionStatement", + "src": "4941:45:3" } ] }, - "documentation": "@dev Allows to estimate a Safe transaction. \n This method can only be used by the safe itself in a transaction. When estimating set `from` to the address of the safe.\n Since the `estimateGas` function includes refunds, call this method to get an estimated of the costs that are deducted from the safe with `execPayTransaction`\n @param to Destination address of Safe transaction.\n @param value Ether value of Safe transaction.\n @param data Data payload of Safe transaction.\n @param operation Operation type of Safe transaction.\n @return Estimate without refunds and overhead fees (base transaction and payload data gas costs).", - "id": 211, + "documentation": "@dev Allows to estimate a Safe transaction. \n This method is only meant for estimation purpose, therfore two different protection mechanism against execution in a transaction have been made:\n 1.) The method can only be called from the safe itself\n 2.) The response is returned with a revert\n When estimating set `from` to the address of the safe.\n Since the `estimateGas` function includes refunds, call this method to get an estimated of the costs that are deducted from the safe with `execAndPayTransaction`\n @param to Destination address of Safe transaction.\n @param value Ether value of Safe transaction.\n @param data Data payload of Safe transaction.\n @param operation Operation type of Safe transaction.\n @return Estimate without refunds and overhead fees (base transaction and payload data gas costs).", + "id": 278, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 185, + "id": 241, "modifierName": { "argumentTypes": null, - "id": 184, + "id": 240, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1358, - "src": "3897:10:2", + "referencedDeclaration": 1618, + "src": "4697:10:3", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "3897:10:2" + "src": "4697:10:3" } ], "name": "requiredTxGas", "nodeType": "FunctionDefinition", "parameters": { - "id": 183, + "id": 239, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 176, + "id": 232, "name": "to", "nodeType": "VariableDeclaration", - "scope": 211, - "src": "3809:10:2", + "scope": 278, + "src": "4609:10:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6536,10 +7895,10 @@ "typeString": "address" }, "typeName": { - "id": 175, + "id": 231, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3809:7:2", + "src": "4609:7:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6550,11 +7909,11 @@ }, { "constant": false, - "id": 178, + "id": 234, "name": "value", "nodeType": "VariableDeclaration", - "scope": 211, - "src": "3821:13:2", + "scope": 278, + "src": "4621:13:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6562,10 +7921,10 @@ "typeString": "uint256" }, "typeName": { - "id": 177, + "id": 233, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3821:7:2", + "src": "4621:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6576,11 +7935,11 @@ }, { "constant": false, - "id": 180, + "id": 236, "name": "data", "nodeType": "VariableDeclaration", - "scope": 211, - "src": "3836:10:2", + "scope": 278, + "src": "4636:10:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6588,10 +7947,10 @@ "typeString": "bytes" }, "typeName": { - "id": 179, + "id": 235, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "3836:5:2", + "src": "4636:5:3", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -6602,26 +7961,26 @@ }, { "constant": false, - "id": 182, + "id": 238, "name": "operation", "nodeType": "VariableDeclaration", - "scope": 211, - "src": "3848:24:2", + "scope": 278, + "src": "4648:24:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, "typeName": { "contractScope": null, - "id": 181, + "id": 237, "name": "Enum.Operation", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 5, - "src": "3848:14:2", + "referencedDeclaration": 29, + "src": "4648:14:3", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, @@ -6629,20 +7988,20 @@ "visibility": "internal" } ], - "src": "3808:65:2" + "src": "4608:65:3" }, "payable": false, "returnParameters": { - "id": 188, + "id": 244, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 187, + "id": 243, "name": "", "nodeType": "VariableDeclaration", - "scope": 211, - "src": "3925:7:2", + "scope": 278, + "src": "4725:7:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6650,10 +8009,10 @@ "typeString": "uint256" }, "typeName": { - "id": 186, + "id": 242, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3925:7:2", + "src": "4725:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6663,32 +8022,32 @@ "visibility": "internal" } ], - "src": "3924:9:2" + "src": "4724:9:3" }, - "scope": 324, - "src": "3786:299:2", + "scope": 397, + "src": "4586:407:3", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 282, + "id": 349, "nodeType": "Block", - "src": "4195:437:2", + "src": "5103:437:3", "statements": [ { "assignments": [ - 226 + 293 ], "declarations": [ { "constant": false, - "id": 226, + "id": 293, "name": "lastOwner", "nodeType": "VariableDeclaration", - "scope": 283, - "src": "4257:17:2", + "scope": 350, + "src": "5165:17:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6696,10 +8055,10 @@ "typeString": "address" }, "typeName": { - "id": 225, + "id": 292, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4257:7:2", + "src": "5165:7:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6709,21 +8068,21 @@ "visibility": "internal" } ], - "id": 230, + "id": 297, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", - "id": 228, + "id": 295, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4285:1:2", + "src": "5193:1:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -6739,20 +8098,20 @@ "typeString": "int_const 0" } ], - "id": 227, + "id": 294, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "4277:7:2", + "src": "5185:7:3", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 229, + "id": 296, "isConstant": false, "isLValue": false, "isPure": true, @@ -6760,25 +8119,25 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4277:10:2", + "src": "5185:10:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", - "src": "4257:30:2" + "src": "5165:30:3" }, { "assignments": [], "declarations": [ { "constant": false, - "id": 232, + "id": 299, "name": "currentOwner", "nodeType": "VariableDeclaration", - "scope": 283, - "src": "4297:20:2", + "scope": 350, + "src": "5205:20:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6786,10 +8145,10 @@ "typeString": "address" }, "typeName": { - "id": 231, + "id": 298, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4297:7:2", + "src": "5205:7:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6799,21 +8158,21 @@ "visibility": "internal" } ], - "id": 233, + "id": 300, "initialValue": null, "nodeType": "VariableDeclarationStatement", - "src": "4297:20:2" + "src": "5205:20:3" }, { "assignments": [], "declarations": [ { "constant": false, - "id": 235, + "id": 302, "name": "i", "nodeType": "VariableDeclaration", - "scope": 283, - "src": "4327:9:2", + "scope": 350, + "src": "5235:9:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6821,10 +8180,10 @@ "typeString": "uint256" }, "typeName": { - "id": 234, + "id": 301, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4327:7:2", + "src": "5235:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6834,33 +8193,33 @@ "visibility": "internal" } ], - "id": 236, + "id": 303, "initialValue": null, "nodeType": "VariableDeclarationStatement", - "src": "4327:9:2" + "src": "5235:9:3" }, { "body": { - "id": 280, + "id": 347, "nodeType": "Block", - "src": "4420:206:2", + "src": "5328:206:3", "statements": [ { "expression": { "argumentTypes": null, - "id": 260, + "id": 327, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 247, + "id": 314, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 232, - "src": "4434:12:2", + "referencedDeclaration": 299, + "src": "5342:12:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6873,12 +8232,12 @@ "arguments": [ { "argumentTypes": null, - "id": 249, + "id": 316, "name": "hash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 213, - "src": "4459:4:2", + "referencedDeclaration": 280, + "src": "5367:4:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -6888,26 +8247,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 250, + "id": 317, "name": "v", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 216, - "src": "4465:1:2", + "referencedDeclaration": 283, + "src": "5373:1:3", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr", "typeString": "uint8[] memory" } }, - "id": 252, + "id": 319, "indexExpression": { "argumentTypes": null, - "id": 251, + "id": 318, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 235, - "src": "4467:1:2", + "referencedDeclaration": 302, + "src": "5375:1:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6918,7 +8277,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4465:4:2", + "src": "5373:4:3", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -6928,26 +8287,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 253, + "id": 320, "name": "r", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 219, - "src": "4471:1:2", + "referencedDeclaration": 286, + "src": "5379:1:3", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", "typeString": "bytes32[] memory" } }, - "id": 255, + "id": 322, "indexExpression": { "argumentTypes": null, - "id": 254, + "id": 321, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 235, - "src": "4473:1:2", + "referencedDeclaration": 302, + "src": "5381:1:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6958,7 +8317,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4471:4:2", + "src": "5379:4:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -6968,26 +8327,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 256, + "id": 323, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 222, - "src": "4477:1:2", + "referencedDeclaration": 289, + "src": "5385:1:3", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", "typeString": "bytes32[] memory" } }, - "id": 258, + "id": 325, "indexExpression": { "argumentTypes": null, - "id": 257, + "id": 324, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 235, - "src": "4479:1:2", + "referencedDeclaration": 302, + "src": "5387:1:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6998,7 +8357,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4477:4:2", + "src": "5385:4:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -7024,18 +8383,18 @@ "typeString": "bytes32" } ], - "id": 248, + "id": 315, "name": "ecrecover", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2388, - "src": "4449:9:2", + "referencedDeclaration": 2590, + "src": "5357:9:3", "typeDescriptions": { "typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$", "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)" } }, - "id": 259, + "id": 326, "isConstant": false, "isLValue": false, "isPure": false, @@ -7043,21 +8402,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4449:33:2", + "src": "5357:33:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "4434:48:2", + "src": "5342:48:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 261, + "id": 328, "nodeType": "ExpressionStatement", - "src": "4434:48:2" + "src": "5342:48:3" }, { "expression": { @@ -7069,7 +8428,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 267, + "id": 334, "isConstant": false, "isLValue": false, "isPure": false, @@ -7078,26 +8437,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 263, + "id": 330, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 985, - "src": "4504:6:2", + "referencedDeclaration": 1114, + "src": "5412:6:3", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 265, + "id": 332, "indexExpression": { "argumentTypes": null, - "id": 264, + "id": 331, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 232, - "src": "4511:12:2", + "referencedDeclaration": 299, + "src": "5419:12:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7108,7 +8467,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4504:20:2", + "src": "5412:20:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7119,14 +8478,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 266, + "id": 333, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4528:1:2", + "src": "5436:1:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -7134,7 +8493,7 @@ }, "value": "0" }, - "src": "4504:25:2", + "src": "5412:25:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -7148,21 +8507,21 @@ "typeString": "bool" } ], - "id": 262, + "id": 329, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "4496:7:2", + "referencedDeclaration": 2601, + "src": "5404:7:3", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 268, + "id": 335, "isConstant": false, "isLValue": false, "isPure": false, @@ -7170,15 +8529,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4496:34:2", + "src": "5404:34:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 269, + "id": 336, "nodeType": "ExpressionStatement", - "src": "4496:34:2" + "src": "5404:34:3" }, { "expression": { @@ -7190,19 +8549,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 273, + "id": 340, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 271, + "id": 338, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 232, - "src": "4552:12:2", + "referencedDeclaration": 299, + "src": "5460:12:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7212,18 +8571,18 @@ "operator": ">", "rightExpression": { "argumentTypes": null, - "id": 272, + "id": 339, "name": "lastOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 226, - "src": "4567:9:2", + "referencedDeclaration": 293, + "src": "5475:9:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "4552:24:2", + "src": "5460:24:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -7237,21 +8596,21 @@ "typeString": "bool" } ], - "id": 270, + "id": 337, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "4544:7:2", + "referencedDeclaration": 2601, + "src": "5452:7:3", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 274, + "id": 341, "isConstant": false, "isLValue": false, "isPure": false, @@ -7259,32 +8618,32 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4544:33:2", + "src": "5452:33:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 275, + "id": 342, "nodeType": "ExpressionStatement", - "src": "4544:33:2" + "src": "5452:33:3" }, { "expression": { "argumentTypes": null, - "id": 278, + "id": 345, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 276, + "id": 343, "name": "lastOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 226, - "src": "4591:9:2", + "referencedDeclaration": 293, + "src": "5499:9:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7294,26 +8653,26 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 277, + "id": 344, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 232, - "src": "4603:12:2", + "referencedDeclaration": 299, + "src": "5511:12:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "4591:24:2", + "src": "5499:24:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 279, + "id": 346, "nodeType": "ExpressionStatement", - "src": "4591:24:2" + "src": "5499:24:3" } ] }, @@ -7323,19 +8682,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 243, + "id": 310, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 241, + "id": 308, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 235, - "src": "4400:1:2", + "referencedDeclaration": 302, + "src": "5308:1:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7345,40 +8704,40 @@ "operator": "<", "rightExpression": { "argumentTypes": null, - "id": 242, + "id": 309, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 989, - "src": "4404:9:2", + "referencedDeclaration": 1118, + "src": "5312:9:3", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "src": "4400:13:2", + "src": "5308:13:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 281, + "id": 348, "initializationExpression": { "expression": { "argumentTypes": null, - "id": 239, + "id": 306, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 237, + "id": 304, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 235, - "src": "4393:1:2", + "referencedDeclaration": 302, + "src": "5301:1:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7389,14 +8748,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "30", - "id": 238, + "id": 305, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4397:1:2", + "src": "5305:1:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -7404,20 +8763,20 @@ }, "value": "0" }, - "src": "4393:5:2", + "src": "5301:5:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 240, + "id": 307, "nodeType": "ExpressionStatement", - "src": "4393:5:2" + "src": "5301:5:3" }, "loopExpression": { "expression": { "argumentTypes": null, - "id": 245, + "id": 312, "isConstant": false, "isLValue": false, "isPure": false, @@ -7425,15 +8784,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "4415:3:2", + "src": "5323:3:3", "subExpression": { "argumentTypes": null, - "id": 244, + "id": 311, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 235, - "src": "4415:1:2", + "referencedDeclaration": 302, + "src": "5323:1:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7444,17 +8803,17 @@ "typeString": "uint256" } }, - "id": 246, + "id": 313, "nodeType": "ExpressionStatement", - "src": "4415:3:2" + "src": "5323:3:3" }, "nodeType": "ForStatement", - "src": "4388:238:2" + "src": "5296:238:3" } ] }, "documentation": null, - "id": 283, + "id": 350, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -7462,16 +8821,16 @@ "name": "checkHash", "nodeType": "FunctionDefinition", "parameters": { - "id": 223, + "id": 290, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 213, + "id": 280, "name": "hash", "nodeType": "VariableDeclaration", - "scope": 283, - "src": "4110:12:2", + "scope": 350, + "src": "5018:12:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7479,10 +8838,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 212, + "id": 279, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "4110:7:2", + "src": "5018:7:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -7493,11 +8852,11 @@ }, { "constant": false, - "id": 216, + "id": 283, "name": "v", "nodeType": "VariableDeclaration", - "scope": 283, - "src": "4124:9:2", + "scope": 350, + "src": "5032:9:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7506,19 +8865,19 @@ }, "typeName": { "baseType": { - "id": 214, + "id": 281, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "4124:5:2", + "src": "5032:5:3", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "id": 215, + "id": 282, "length": null, "nodeType": "ArrayTypeName", - "src": "4124:7:2", + "src": "5032:7:3", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint8_$dyn_storage_ptr", "typeString": "uint8[]" @@ -7529,11 +8888,11 @@ }, { "constant": false, - "id": 219, + "id": 286, "name": "r", "nodeType": "VariableDeclaration", - "scope": 283, - "src": "4135:11:2", + "scope": 350, + "src": "5043:11:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7542,19 +8901,19 @@ }, "typeName": { "baseType": { - "id": 217, + "id": 284, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "4135:7:2", + "src": "5043:7:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "id": 218, + "id": 285, "length": null, "nodeType": "ArrayTypeName", - "src": "4135:9:2", + "src": "5043:9:3", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", "typeString": "bytes32[]" @@ -7565,11 +8924,11 @@ }, { "constant": false, - "id": 222, + "id": 289, "name": "s", "nodeType": "VariableDeclaration", - "scope": 283, - "src": "4148:11:2", + "scope": 350, + "src": "5056:11:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7578,19 +8937,19 @@ }, "typeName": { "baseType": { - "id": 220, + "id": 287, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "4148:7:2", + "src": "5056:7:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "id": 221, + "id": 288, "length": null, "nodeType": "ArrayTypeName", - "src": "4148:9:2", + "src": "5056:9:3", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", "typeString": "bytes32[]" @@ -7600,26 +8959,26 @@ "visibility": "internal" } ], - "src": "4109:51:2" + "src": "5017:51:3" }, "payable": false, "returnParameters": { - "id": 224, + "id": 291, "nodeType": "ParameterList", "parameters": [], - "src": "4195:0:2" + "src": "5103:0:3" }, - "scope": 324, - "src": "4091:541:2", + "scope": 397, + "src": "4999:541:3", "stateMutability": "view", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 322, + "id": 395, "nodeType": "Block", - "src": "5448:126:2", + "src": "6464:176:3", "statements": [ { "expression": { @@ -7630,290 +8989,359 @@ "arguments": [ { "argumentTypes": null, - "hexValue": "30783139", - "id": 306, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30783139", + "id": 377, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6526:4:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_25_by_1", + "typeString": "int_const 25" + }, + "value": "0x19" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_25_by_1", + "typeString": "int_const 25" + } + ], + "id": 376, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6521:4:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes1_$", + "typeString": "type(bytes1)" + }, + "typeName": "byte" + }, + "id": 378, "isConstant": false, "isLValue": false, "isPure": true, - "kind": "number", + "kind": "typeConversion", "lValueRequested": false, - "nodeType": "Literal", - "src": "5480:4:2", - "subdenomination": null, + "names": [], + "nodeType": "FunctionCall", + "src": "6521:10:3", "typeDescriptions": { - "typeIdentifier": "t_rational_25_by_1", - "typeString": "int_const 25" - }, - "value": "0x19" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_25_by_1", - "typeString": "int_const 25" + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" } - ], - "id": 305, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "5475:4:2", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes1_$", - "typeString": "type(bytes1)" }, - "typeName": "byte" - }, - "id": 307, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5475:10:2", - "typeDescriptions": { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - } - }, - { - "argumentTypes": null, - "arguments": [ { "argumentTypes": null, - "hexValue": "30", - "id": 309, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 380, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6538:1:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 379, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6533:4:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes1_$", + "typeString": "type(bytes1)" + }, + "typeName": "byte" + }, + "id": 381, "isConstant": false, "isLValue": false, "isPure": true, - "kind": "number", + "kind": "typeConversion", "lValueRequested": false, - "nodeType": "Literal", - "src": "5492:1:2", - "subdenomination": null, + "names": [], + "nodeType": "FunctionCall", + "src": "6533:7:3", "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + { + "argumentTypes": null, + "id": 382, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2631, + "src": "6542:4:3", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GnosisSafePersonalEdition_$397", + "typeString": "contract GnosisSafePersonalEdition" + } + }, + { + "argumentTypes": null, + "id": 383, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 352, + "src": "6548:2:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 384, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 354, + "src": "6552:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 385, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 356, + "src": "6559:4:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 386, + "name": "operation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 358, + "src": "6565:9:3", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + } + }, + { + "argumentTypes": null, + "id": 387, + "name": "safeTxGas", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 360, + "src": "6576:9:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 388, + "name": "dataGas", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 362, + "src": "6587:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 389, + "name": "gasPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 364, + "src": "6596:8:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 390, + "name": "gasToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 366, + "src": "6606:8:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 391, + "name": "_nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 368, + "src": "6616:6:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } } ], "expression": { "argumentTypes": [ { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + }, + { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + }, + { + "typeIdentifier": "t_contract$_GnosisSafePersonalEdition_$397", + "typeString": "contract GnosisSafePersonalEdition" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } ], - "id": 308, + "expression": { + "argumentTypes": null, + "id": 374, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2585, + "src": "6504:3:3", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 375, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "5487:4:2", + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "6504:16:3", "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes1_$", - "typeString": "type(bytes1)" - }, - "typeName": "byte" + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } }, - "id": 310, + "id": 392, "isConstant": false, "isLValue": false, - "isPure": true, - "kind": "typeConversion", + "isPure": false, + "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5487:7:2", - "typeDescriptions": { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - } - }, - { - "argumentTypes": null, - "id": 311, - "name": "this", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2423, - "src": "5496:4:2", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafePersonalEdition_$324", - "typeString": "contract GnosisSafePersonalEdition" - } - }, - { - "argumentTypes": null, - "id": 312, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 285, - "src": "5502:2:2", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 313, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 287, - "src": "5506:5:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 314, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 289, - "src": "5513:4:2", + "src": "6504:119:3", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } - }, - { - "argumentTypes": null, - "id": 315, - "name": "operation", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 291, - "src": "5519:9:2", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", - "typeString": "enum Enum.Operation" - } - }, - { - "argumentTypes": null, - "id": 316, - "name": "safeTxGas", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 293, - "src": "5530:9:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 317, - "name": "dataGas", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 295, - "src": "5541:7:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 318, - "name": "gasPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 297, - "src": "5550:8:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 319, - "name": "_nonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 299, - "src": "5560:6:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } } ], "expression": { "argumentTypes": [ - { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - }, - { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - }, - { - "typeIdentifier": "t_contract$_GnosisSafePersonalEdition_$324", - "typeString": "contract GnosisSafePersonalEdition" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_enum$_Operation_$5", - "typeString": "enum Enum.Operation" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" } ], - "id": 304, + "id": 373, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2390, - "src": "5465:9:2", + "referencedDeclaration": 2592, + "src": "6481:9:3", "typeDescriptions": { "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", "typeString": "function () pure returns (bytes32)" } }, - "id": 320, + "id": 393, "isConstant": false, "isLValue": false, "isPure": false, @@ -7921,21 +9349,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5465:102:2", + "src": "6481:152:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "functionReturnParameters": 303, - "id": 321, + "functionReturnParameters": 372, + "id": 394, "nodeType": "Return", - "src": "5458:109:2" + "src": "6474:159:3" } ] }, - "documentation": "@dev Returns hash to be signed by owners.\n @param to Destination address.\n @param value Ether value.\n @param data Data payload.\n @param operation Operation type.\n @param safeTxGas Fas that should be used for the safe transaction.\n @param dataGas Gas costs for data used to trigger the safe transaction.\n @param gasPrice Maximum gas price that should be used for this transaction.\n @param _nonce Transaction nonce.\n @return Transaction hash.", - "id": 323, + "documentation": "@dev Returns hash to be signed by owners.\n @param to Destination address.\n @param value Ether value.\n @param data Data payload.\n @param operation Operation type.\n @param safeTxGas Fas that should be used for the safe transaction.\n @param dataGas Gas costs for data used to trigger the safe transaction.\n @param gasPrice Maximum gas price that should be used for this transaction.\n @param gasToken Token address (or 0 if ETH) that is used for the payment.\n @param _nonce Transaction nonce.\n @return Transaction hash.", + "id": 396, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -7943,16 +9371,16 @@ "name": "getTransactionHash", "nodeType": "FunctionDefinition", "parameters": { - "id": 300, + "id": 369, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 285, + "id": 352, "name": "to", "nodeType": "VariableDeclaration", - "scope": 323, - "src": "5187:10:2", + "scope": 396, + "src": "6177:10:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7960,10 +9388,10 @@ "typeString": "address" }, "typeName": { - "id": 284, + "id": 351, "name": "address", "nodeType": "ElementaryTypeName", - "src": "5187:7:2", + "src": "6177:7:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7974,11 +9402,11 @@ }, { "constant": false, - "id": 287, + "id": 354, "name": "value", "nodeType": "VariableDeclaration", - "scope": 323, - "src": "5208:13:2", + "scope": 396, + "src": "6198:13:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7986,10 +9414,10 @@ "typeString": "uint256" }, "typeName": { - "id": 286, + "id": 353, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "5208:7:2", + "src": "6198:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8000,11 +9428,11 @@ }, { "constant": false, - "id": 289, + "id": 356, "name": "data", "nodeType": "VariableDeclaration", - "scope": 323, - "src": "5232:10:2", + "scope": 396, + "src": "6222:10:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8012,10 +9440,10 @@ "typeString": "bytes" }, "typeName": { - "id": 288, + "id": 355, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "5232:5:2", + "src": "6222:5:3", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -8026,26 +9454,26 @@ }, { "constant": false, - "id": 291, + "id": 358, "name": "operation", "nodeType": "VariableDeclaration", - "scope": 323, - "src": "5253:24:2", + "scope": 396, + "src": "6243:24:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, "typeName": { "contractScope": null, - "id": 290, + "id": 357, "name": "Enum.Operation", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 5, - "src": "5253:14:2", + "referencedDeclaration": 29, + "src": "6243:14:3", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, @@ -8054,11 +9482,11 @@ }, { "constant": false, - "id": 293, + "id": 360, "name": "safeTxGas", "nodeType": "VariableDeclaration", - "scope": 323, - "src": "5288:17:2", + "scope": 396, + "src": "6278:17:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8066,10 +9494,10 @@ "typeString": "uint256" }, "typeName": { - "id": 292, + "id": 359, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "5288:7:2", + "src": "6278:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8080,11 +9508,11 @@ }, { "constant": false, - "id": 295, + "id": 362, "name": "dataGas", "nodeType": "VariableDeclaration", - "scope": 323, - "src": "5316:15:2", + "scope": 396, + "src": "6306:15:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8092,10 +9520,10 @@ "typeString": "uint256" }, "typeName": { - "id": 294, + "id": 361, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "5316:7:2", + "src": "6306:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8106,11 +9534,11 @@ }, { "constant": false, - "id": 297, + "id": 364, "name": "gasPrice", "nodeType": "VariableDeclaration", - "scope": 323, - "src": "5342:16:2", + "scope": 396, + "src": "6332:16:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8118,10 +9546,10 @@ "typeString": "uint256" }, "typeName": { - "id": 296, + "id": 363, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "5342:7:2", + "src": "6332:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8132,11 +9560,37 @@ }, { "constant": false, - "id": 299, + "id": 366, + "name": "gasToken", + "nodeType": "VariableDeclaration", + "scope": 396, + "src": "6359:16:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 365, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6359:7:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 368, "name": "_nonce", "nodeType": "VariableDeclaration", - "scope": 323, - "src": "5369:14:2", + "scope": 396, + "src": "6385:14:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8144,10 +9598,10 @@ "typeString": "uint256" }, "typeName": { - "id": 298, + "id": 367, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "5369:7:2", + "src": "6385:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8157,20 +9611,20 @@ "visibility": "internal" } ], - "src": "5177:212:2" + "src": "6167:238:3" }, "payable": false, "returnParameters": { - "id": 303, + "id": 372, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 302, + "id": 371, "name": "", "nodeType": "VariableDeclaration", - "scope": 323, - "src": "5435:7:2", + "scope": 396, + "src": "6451:7:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8178,10 +9632,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 301, + "id": 370, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "5435:7:2", + "src": "6451:7:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -8191,63 +9645,45 @@ "visibility": "internal" } ], - "src": "5434:9:2" + "src": "6450:9:3" }, - "scope": 324, - "src": "5150:424:2", + "scope": 397, + "src": "6140:500:3", "stateMutability": "view", "superFunction": null, "visibility": "public" } ], - "scope": 325, - "src": "314:5262:2" + "scope": 398, + "src": "449:6193:3" } ], - "src": "0:5577:2" + "src": "0:6643:3" }, "compiler": { "name": "solc", - "version": "0.4.23+commit.124ca40d.Emscripten.clang" + "version": "0.4.24+commit.e67f0147.Emscripten.clang" }, "networks": { "4": { "events": {}, "links": {}, - "address": "0xfa2be236995d09b0ee494b9e40637d661ff40494", - "transactionHash": "0x1db063ae298dedb887690b77fc973264fd51dfbee9fdb699c430821998894113" - }, - "1525950336085": { - "events": {}, - "links": {}, - "address": "0x1f8829f66b8ac7a6893109dd298007f5dd3bcadf", - "transactionHash": "0x9a582bc25c7705ede926f13bef0ba8fa76176d0ec80dc0871e1b28d87382f545" - }, - "1526283540628": { - "events": {}, - "links": {}, - "address": "0xad5d0371132b0959508b44c6221e6bc4de8df987", - "transactionHash": "0x9a582bc25c7705ede926f13bef0ba8fa76176d0ec80dc0871e1b28d87382f545" - }, - "1526478212260": { - "events": {}, - "links": {}, - "address": "0x6cd3878c8fce094d881e37ed48a6eb90bcea5ef7", - "transactionHash": "0xd404a4c4c3ff550c031b238e6df539cbbd9d5727574d8446d0c40f2abf4638b1" - }, - "1526973574996": { - "events": {}, - "links": {}, - "address": "0x38a0e040615367af9cd0626ef96441785f82f5c8", - "transactionHash": "0xd404a4c4c3ff550c031b238e6df539cbbd9d5727574d8446d0c40f2abf4638b1" + "address": "0x7516b591cfd6ba7c22caa25c011d7b815c95fc5d", + "transactionHash": "0x33ad07a6c877666e75a6297bf0c86ba5c1e4ef02e72027337a88a649bc38309b" }, "1527316019334": { "events": {}, "links": {}, - "address": "0x38c3ac4274e76c52a9b9f7f00ecf062750b1b4dc", - "transactionHash": "0xd404a4c4c3ff550c031b238e6df539cbbd9d5727574d8446d0c40f2abf4638b1" + "address": "0x39aa0fab18dc485e96591b3317ea593feb990da0", + "transactionHash": "0x66ae6f871105a2bab973870a91d508ce3c26f29662aa7a139faf53975c3ba7b7" + }, + "1527420696956": { + "events": {}, + "links": {}, + "address": "0x2f6ebb40061dab74d569509841ab8397f77f9168", + "transactionHash": "0x0cb0ab0185325fd4e5ef5dfbf473d6cbb278fa82fcd1a0c0ecc0d1a2b8c0b5af" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-26T06:28:28.339Z" + "updatedAt": "2018-05-27T11:31:46.238Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/GnosisSafeStateChannelEdition.json b/safe-contracts/build/contracts/GnosisSafeStateChannelEdition.json deleted file mode 100644 index 52a0b462..00000000 --- a/safe-contracts/build/contracts/GnosisSafeStateChannelEdition.json +++ /dev/null @@ -1,5469 +0,0 @@ -{ - "contractName": "GnosisSafeStateChannelEdition", - "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": "_threshold", - "type": "uint8" - } - ], - "name": "addOwner", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "module", - "type": "address" - } - ], - "name": "addModule", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "owner", - "type": "address" - } - ], - "name": "isOwner", - "outputs": [ - { - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "threshold", - "outputs": [ - { - "name": "", - "type": "uint8" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "", - "type": "address" - } - ], - "name": "isModule", - "outputs": [ - { - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "oldOwnerIndex", - "type": "uint256" - }, - { - "name": "oldOwner", - "type": "address" - }, - { - "name": "newOwner", - "type": "address" - } - ], - "name": "replaceOwner", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "moduleIndex", - "type": "uint256" - }, - { - "name": "module", - "type": "address" - } - ], - "name": "removeModule", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "_masterCopy", - "type": "address" - } - ], - "name": "changeMasterCopy", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "", - "type": "uint256" - } - ], - "name": "modules", - "outputs": [ - { - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "ownerIndex", - "type": "uint256" - }, - { - "name": "owner", - "type": "address" - }, - { - "name": "_threshold", - "type": "uint8" - } - ], - "name": "removeOwner", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "_owners", - "type": "address[]" - }, - { - "name": "_threshold", - "type": "uint8" - }, - { - "name": "to", - "type": "address" - }, - { - "name": "data", - "type": "bytes" - } - ], - "name": "setup", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "getOwners", - "outputs": [ - { - "name": "", - "type": "address[]" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "NAME", - "outputs": [ - { - "name": "", - "type": "string" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "to", - "type": "address" - }, - { - "name": "value", - "type": "uint256" - }, - { - "name": "data", - "type": "bytes" - }, - { - "name": "operation", - "type": "uint8" - } - ], - "name": "executeModule", - "outputs": [ - { - "name": "success", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "getModules", - "outputs": [ - { - "name": "", - "type": "address[]" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "_threshold", - "type": "uint8" - } - ], - "name": "changeThreshold", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "", - "type": "bytes32" - } - ], - "name": "isExecuted", - "outputs": [ - { - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "VERSION", - "outputs": [ - { - "name": "", - "type": "string" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "payable": true, - "stateMutability": "payable", - "type": "fallback" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "name": "newContract", - "type": "address" - } - ], - "name": "ContractCreation", - "type": "event" - }, - { - "constant": false, - "inputs": [ - { - "name": "to", - "type": "address" - }, - { - "name": "value", - "type": "uint256" - }, - { - "name": "data", - "type": "bytes" - }, - { - "name": "operation", - "type": "uint8" - }, - { - "name": "nonce", - "type": "uint256" - }, - { - "name": "v", - "type": "uint8[]" - }, - { - "name": "r", - "type": "bytes32[]" - }, - { - "name": "s", - "type": "bytes32[]" - } - ], - "name": "executeTransaction", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "to", - "type": "address" - }, - { - "name": "value", - "type": "uint256" - }, - { - "name": "data", - "type": "bytes" - }, - { - "name": "operation", - "type": "uint8" - }, - { - "name": "nonce", - "type": "uint256" - } - ], - "name": "getTransactionHash", - "outputs": [ - { - "name": "", - "type": "bytes32" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - } - ], - "bytecode": "0x608060405234801561001057600080fd5b50612177806100206000396000f30060806040526004361061011d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063025e7c271461011f5780630e5229b01461018c5780631ed86f19146101dc5780632b5000411461021f5780632f54bf6e146102e557806342cde4e81461034057806342f6e3891461037157806354e99c6e146103cc578063782e46be146104395780637c6401d3146105ac5780637de7edef146105f957806381b2248a1461063c578063842b954e146106a9578063a04222e114610703578063a0e67e2b146107dc578063a3f4df7e14610848578063b021640a146108d8578063b2494df314610990578063b7f3358d146109fc578063e52cb36a14610a2c578063ffa1ad7414610a75575b005b34801561012b57600080fd5b5061014a60048036038101908080359060200190929190505050610b05565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561019857600080fd5b506101da600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050610b43565b005b3480156101e857600080fd5b5061021d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ce6565b005b34801561022b57600080fd5b506102c7600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919080359060200190929190505050610e60565b60405180826000191660001916815260200191505060405180910390f35b3480156102f157600080fd5b50610326600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061107c565b604051808215151515815260200191505060405180910390f35b34801561034c57600080fd5b506103556110d2565b604051808260ff1660ff16815260200191505060405180910390f35b34801561037d57600080fd5b506103b2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506110e9565b604051808215151515815260200191505060405180910390f35b3480156103d857600080fd5b5061043760048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611109565b005b34801561044557600080fd5b506105aa600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919080359060200190929190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050611342565b005b3480156105b857600080fd5b506105f760048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506113eb565b005b34801561060557600080fd5b5061063a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506115a1565b005b34801561064857600080fd5b5061066760048036038101908080359060200190929190505050611644565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156106b557600080fd5b5061070160048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050611682565b005b34801561070f57600080fd5b506107da60048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803560ff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505061187d565b005b3480156107e857600080fd5b506107f1611897565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610834578082015181840152602081019050610819565b505050509050019250505060405180910390f35b34801561085457600080fd5b5061085d611925565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561089d578082015181840152602081019050610882565b50505050905090810190601f1680156108ca5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156108e457600080fd5b50610976600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190505050611985565b604051808215151515815260200191505060405180910390f35b34801561099c57600080fd5b506109a56119f6565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156109e85780820151818401526020810190506109cd565b505050509050019250505060405180910390f35b348015610a0857600080fd5b50610a2a600480360381019080803560ff169060200190929190505050611a84565b005b348015610a3857600080fd5b50610a5b6004803603810190808035600019169060200190929190505050611b06565b604051808215151515815260200191505060405180910390f35b348015610a8157600080fd5b50610a8a611b26565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610aca578082015181840152602081019050610aaf565b50505050905090810190601f168015610af75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b600381815481101515610b1457fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610b7d57600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff1614151515610ba357600080fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515610bfc57600080fd5b60038290806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506001600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508060ff16600460009054906101000a900460ff1660ff16141515610ce257610ce181611a84565b5b5050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610d2057600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515610d4657600080fd5b600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515610d9f57600080fd5b60018190806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600060197f01000000000000000000000000000000000000000000000000000000000000000260007f01000000000000000000000000000000000000000000000000000000000000000230888888888860405180897effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101887effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140185815260200184805190602001908083835b6020831015156110015780518252602082019150602081019050602083039250610fdc565b6001836020036101000a03801982511681845116808217855250505050505090500183600281111561102f57fe5b60ff167f0100000000000000000000000000000000000000000000000000000000000000028152600101828152602001985050505050505050506040518091039020905095945050505050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600460009054906101000a900460ff16905090565b60026020528060005260406000206000915054906101000a900460ff1681565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561114357600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561116957600080fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515156111c257600080fd5b8173ffffffffffffffffffffffffffffffffffffffff166003848154811015156111e857fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561123557600080fd5b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550806003848154811015156112f557fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b60006113518989898989610e60565b905060066000826000191660001916815260200190815260200160002060009054906101000a900460ff1615151561138857600080fd5b61139481858585611b5f565b600160066000836000191660001916815260200190815260200160002060006101000a81548160ff0219169083151502179055506113d5898989895a611cf9565b15156113e057600080fd5b505050505050505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561142557600080fd5b8073ffffffffffffffffffffffffffffffffffffffff1660018381548110151561144b57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561149857600080fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060018080805490500381548110151561150557fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660018381548110151561153f57fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600180548091906001900361159c9190612001565b505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156115db57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561160157600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60018181548110151561165357fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156116bc57600080fd5b8060ff16600160038054905003101515156116d657600080fd5b8173ffffffffffffffffffffffffffffffffffffffff166003848154811015156116fc57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561174957600080fd5b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060036001600380549050038154811015156117b857fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166003848154811015156117f257fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600380548091906001900361184f919061202d565b508060ff16600460009054906101000a900460ff1660ff161415156118785761187781611a84565b5b505050565b6118878484611df6565b6118918282611f84565b50505050565b6060600380548060200260200160405190810160405280929190818152602001828054801561191b57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116118d1575b5050505050905090565b606060405190810160405280602181526020017f476e6f7369732053616665205374617465204368616e6e656c2045646974696f81526020017f6e0000000000000000000000000000000000000000000000000000000000000081525081565b6000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156119df57600080fd5b6119ec858585855a611cf9565b9050949350505050565b60606001805480602002602001604051908101604052809291908181526020018280548015611a7a57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311611a30575b5050505050905090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611abe57600080fd5b6003805490508160ff1611151515611ad557600080fd5b60018160ff1610151515611ae857600080fd5b80600460006101000a81548160ff021916908360ff16021790555050565b60066020528060005260406000206000915054906101000a900460ff1681565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000806000809250600090505b600460009054906101000a900460ff1660ff16811015611cf0576001878783815181101515611b9757fe5b906020019060200201518784815181101515611baf57fe5b906020019060200201518785815181101515611bc757fe5b90602001906020020151604051600081526020016040526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000865af1158015611c42573d6000803e3d6000fd5b505050602060405103519150600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515611ca657600080fd5b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16111515611ce057600080fd5b8192508080600101915050611b6c565b50505050505050565b60008060006002811115611d0957fe5b846002811115611d1557fe5b1415611d2e57611d2787878786611fbf565b9150611dec565b60016002811115611d3b57fe5b846002811115611d4757fe5b1415611d5f57611d58878685611fd8565b9150611deb565b611d6885611fef565b905060008173ffffffffffffffffffffffffffffffffffffffff16141591507f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b5b5095945050505050565b6000806000600460009054906101000a900460ff1660ff16141515611e1a57600080fd5b83518360ff1611151515611e2d57600080fd5b60018360ff1610151515611e4057600080fd5b600091505b8351821015611f4c578382815181101515611e5c57fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff1614151515611e8e57600080fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515611ee757600080fd5b6001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508180600101925050611e45565b8360039080519060200190611f62929190612059565b5082600460006101000a81548160ff021916908360ff16021790555050505050565b60008273ffffffffffffffffffffffffffffffffffffffff16141515611fbb57611faf82825a611fd8565b1515611fba57600080fd5b5b5050565b6000806000845160208601878987f19050949350505050565b60008060008451602086018786f490509392505050565b60008151602083016000f09050919050565b8154818355818111156120285781836000526020600020918201910161202791906120e3565b5b505050565b8154818355818111156120545781836000526020600020918201910161205391906120e3565b5b505050565b8280548282559060005260206000209081019282156120d2579160200282015b828111156120d15782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190612079565b5b5090506120df9190612108565b5090565b61210591905b808211156121015760008160009055506001016120e9565b5090565b90565b61214891905b8082111561214457600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555060010161210e565b5090565b905600a165627a7a723058206b355f2ebea16bb70cf5109e223d45edf3885f89d9bac77bbdb410e1e0884c8e0029", - "deployedBytecode": "0x60806040526004361061011d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063025e7c271461011f5780630e5229b01461018c5780631ed86f19146101dc5780632b5000411461021f5780632f54bf6e146102e557806342cde4e81461034057806342f6e3891461037157806354e99c6e146103cc578063782e46be146104395780637c6401d3146105ac5780637de7edef146105f957806381b2248a1461063c578063842b954e146106a9578063a04222e114610703578063a0e67e2b146107dc578063a3f4df7e14610848578063b021640a146108d8578063b2494df314610990578063b7f3358d146109fc578063e52cb36a14610a2c578063ffa1ad7414610a75575b005b34801561012b57600080fd5b5061014a60048036038101908080359060200190929190505050610b05565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561019857600080fd5b506101da600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050610b43565b005b3480156101e857600080fd5b5061021d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ce6565b005b34801561022b57600080fd5b506102c7600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919080359060200190929190505050610e60565b60405180826000191660001916815260200191505060405180910390f35b3480156102f157600080fd5b50610326600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061107c565b604051808215151515815260200191505060405180910390f35b34801561034c57600080fd5b506103556110d2565b604051808260ff1660ff16815260200191505060405180910390f35b34801561037d57600080fd5b506103b2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506110e9565b604051808215151515815260200191505060405180910390f35b3480156103d857600080fd5b5061043760048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611109565b005b34801561044557600080fd5b506105aa600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919080359060200190929190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050611342565b005b3480156105b857600080fd5b506105f760048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506113eb565b005b34801561060557600080fd5b5061063a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506115a1565b005b34801561064857600080fd5b5061066760048036038101908080359060200190929190505050611644565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156106b557600080fd5b5061070160048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050611682565b005b34801561070f57600080fd5b506107da60048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803560ff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505061187d565b005b3480156107e857600080fd5b506107f1611897565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610834578082015181840152602081019050610819565b505050509050019250505060405180910390f35b34801561085457600080fd5b5061085d611925565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561089d578082015181840152602081019050610882565b50505050905090810190601f1680156108ca5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156108e457600080fd5b50610976600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190505050611985565b604051808215151515815260200191505060405180910390f35b34801561099c57600080fd5b506109a56119f6565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156109e85780820151818401526020810190506109cd565b505050509050019250505060405180910390f35b348015610a0857600080fd5b50610a2a600480360381019080803560ff169060200190929190505050611a84565b005b348015610a3857600080fd5b50610a5b6004803603810190808035600019169060200190929190505050611b06565b604051808215151515815260200191505060405180910390f35b348015610a8157600080fd5b50610a8a611b26565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610aca578082015181840152602081019050610aaf565b50505050905090810190601f168015610af75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b600381815481101515610b1457fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610b7d57600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff1614151515610ba357600080fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515610bfc57600080fd5b60038290806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506001600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508060ff16600460009054906101000a900460ff1660ff16141515610ce257610ce181611a84565b5b5050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610d2057600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515610d4657600080fd5b600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515610d9f57600080fd5b60018190806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600060197f01000000000000000000000000000000000000000000000000000000000000000260007f01000000000000000000000000000000000000000000000000000000000000000230888888888860405180897effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101887effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140185815260200184805190602001908083835b6020831015156110015780518252602082019150602081019050602083039250610fdc565b6001836020036101000a03801982511681845116808217855250505050505090500183600281111561102f57fe5b60ff167f0100000000000000000000000000000000000000000000000000000000000000028152600101828152602001985050505050505050506040518091039020905095945050505050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600460009054906101000a900460ff16905090565b60026020528060005260406000206000915054906101000a900460ff1681565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561114357600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561116957600080fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515156111c257600080fd5b8173ffffffffffffffffffffffffffffffffffffffff166003848154811015156111e857fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561123557600080fd5b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550806003848154811015156112f557fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b60006113518989898989610e60565b905060066000826000191660001916815260200190815260200160002060009054906101000a900460ff1615151561138857600080fd5b61139481858585611b5f565b600160066000836000191660001916815260200190815260200160002060006101000a81548160ff0219169083151502179055506113d5898989895a611cf9565b15156113e057600080fd5b505050505050505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561142557600080fd5b8073ffffffffffffffffffffffffffffffffffffffff1660018381548110151561144b57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561149857600080fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060018080805490500381548110151561150557fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660018381548110151561153f57fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600180548091906001900361159c9190612001565b505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156115db57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561160157600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60018181548110151561165357fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156116bc57600080fd5b8060ff16600160038054905003101515156116d657600080fd5b8173ffffffffffffffffffffffffffffffffffffffff166003848154811015156116fc57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561174957600080fd5b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060036001600380549050038154811015156117b857fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166003848154811015156117f257fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600380548091906001900361184f919061202d565b508060ff16600460009054906101000a900460ff1660ff161415156118785761187781611a84565b5b505050565b6118878484611df6565b6118918282611f84565b50505050565b6060600380548060200260200160405190810160405280929190818152602001828054801561191b57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116118d1575b5050505050905090565b606060405190810160405280602181526020017f476e6f7369732053616665205374617465204368616e6e656c2045646974696f81526020017f6e0000000000000000000000000000000000000000000000000000000000000081525081565b6000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156119df57600080fd5b6119ec858585855a611cf9565b9050949350505050565b60606001805480602002602001604051908101604052809291908181526020018280548015611a7a57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311611a30575b5050505050905090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611abe57600080fd5b6003805490508160ff1611151515611ad557600080fd5b60018160ff1610151515611ae857600080fd5b80600460006101000a81548160ff021916908360ff16021790555050565b60066020528060005260406000206000915054906101000a900460ff1681565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000806000809250600090505b600460009054906101000a900460ff1660ff16811015611cf0576001878783815181101515611b9757fe5b906020019060200201518784815181101515611baf57fe5b906020019060200201518785815181101515611bc757fe5b90602001906020020151604051600081526020016040526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000865af1158015611c42573d6000803e3d6000fd5b505050602060405103519150600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515611ca657600080fd5b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16111515611ce057600080fd5b8192508080600101915050611b6c565b50505050505050565b60008060006002811115611d0957fe5b846002811115611d1557fe5b1415611d2e57611d2787878786611fbf565b9150611dec565b60016002811115611d3b57fe5b846002811115611d4757fe5b1415611d5f57611d58878685611fd8565b9150611deb565b611d6885611fef565b905060008173ffffffffffffffffffffffffffffffffffffffff16141591507f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b5b5095945050505050565b6000806000600460009054906101000a900460ff1660ff16141515611e1a57600080fd5b83518360ff1611151515611e2d57600080fd5b60018360ff1610151515611e4057600080fd5b600091505b8351821015611f4c578382815181101515611e5c57fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff1614151515611e8e57600080fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515611ee757600080fd5b6001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508180600101925050611e45565b8360039080519060200190611f62929190612059565b5082600460006101000a81548160ff021916908360ff16021790555050505050565b60008273ffffffffffffffffffffffffffffffffffffffff16141515611fbb57611faf82825a611fd8565b1515611fba57600080fd5b5b5050565b6000806000845160208601878987f19050949350505050565b60008060008451602086018786f490509392505050565b60008151602083016000f09050919050565b8154818355818111156120285781836000526020600020918201910161202791906120e3565b5b505050565b8154818355818111156120545781836000526020600020918201910161205391906120e3565b5b505050565b8280548282559060005260206000209081019282156120d2579160200282015b828111156120d15782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190612079565b5b5090506120df9190612108565b5090565b61210591905b808211156121015760008160009055506001016120e9565b5090565b90565b61214891905b8082111561214457600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555060010161210e565b5090565b905600a165627a7a723058206b355f2ebea16bb70cf5109e223d45edf3885f89d9bac77bbdb410e1e0884c8e0029", - "sourceMap": "281:2670:4:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;281:2670:4;;;;;;;", - "deployedSourceMap": "281:2670:4:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;287:23:10;;8:9:-1;5:2;;;30:1;27;20:12;5:2;287:23:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1737:431;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1737:431:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1166:300:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1166:300:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;2638:311:4;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2638:311:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4552:125:10;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4552:125:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4436:110;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4436:110:10;;;;;;;;;;;;;;;;;;;;;;;;;;;599:41:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;599:41:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3419:501:10;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3419:501:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1205:590:4;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1205:590:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1722:336:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1722:336:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;626:208:6;;8:9:-1;5:2;;;30:1;27;20:12;5:2;626:208:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;500:23:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;500:23:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2499:599:10;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2499:599:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;693:301:2;;8:9:-1;5:2;;;30:1;27;20:12;5:2;693:301:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4759:111:10;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4759:111:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;4759:111:10;;;;;;;;;;;;;;;;;353:65:4;;8:9:-1;5:2;;;30:1;27;20:12;5:2;353:65:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;353:65:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2394:361:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2394:361:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4279:112;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4279:112:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;4279:112:9;;;;;;;;;;;;;;;;;4109:321:10;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4109:321:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;562:43:4;;8:9:-1;5:2;;;30:1;27;20:12;5:2;562:43:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;424:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;424:40:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;424:40:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;287:23:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1737:431::-;244:4:14;222:27;;:10;:27;;;214:36;;;;;;;;1894:1:10;1885:5;:10;;;;1877:19;;;;;;;;1955:7;:14;1963:5;1955:14;;;;;;;;;;;;;;;;;;;;;;;;;1954:15;1946:24;;;;;;;;1980:6;1992:5;1980:18;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;1980:18:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2025:4;2008:7;:14;2016:5;2008:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;2110:10;2097:23;;:9;;;;;;;;;;;:23;;;;2093:68;;;2134:27;2150:10;2134:15;:27::i;:::-;2093:68;1737:431;;:::o;1166:300:9:-;244:4:14;222:27;;:10;:27;;;214:36;;;;;;;;1317:1:9;1306:6;1298:20;;;;1290:29;;;;;;;;1379:8;:16;1388:6;1379:16;;;;;;;;;;;;;;;;;;;;;;;;;1378:17;1370:26;;;;;;;;1406:7;1419:6;1406:20;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;1406:20:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1455:4;1436:8;:16;1445:6;1436:16;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;1166:300;:::o;2638:311:4:-;2841:7;2886:4;2881:10;;2898:1;2893:7;;2902:4;2908:2;2912:5;2919:4;2925:9;2936:5;2871:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;;;2871:71:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2864:78;;2638:311;;;;;;;:::o;4552:125:10:-;4629:4;4656:7;:14;4664:5;4656:14;;;;;;;;;;;;;;;;;;;;;;;;;4649:21;;4552:125;;;:::o;4436:110::-;4502:5;4530:9;;;;;;;;;;;4523:16;;4436:110;:::o;599:41:9:-;;;;;;;;;;;;;;;;;;;;;;:::o;3419:501:10:-;244:4:14;222:27;;:10;:27;;;214:36;;;;;;;;3609:1:10;3597:8;:13;;;;3589:22;;;;;;;;3670:7;:17;3678:8;3670:17;;;;;;;;;;;;;;;;;;;;;;;;;3669:18;3661:27;;;;;;;;3793:8;3768:33;;:6;3775:13;3768:21;;;;;;;;;;;;;;;;;;;;;;;;;;;:33;;;3760:42;;;;;;;;3832:5;3812:7;:17;3820:8;3812:17;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;3867:4;3847:7;:17;3855:8;3847:17;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;3905:8;3881:6;3888:13;3881:21;;;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;3419:501;;;:::o;1205:590:4:-;1455:23;1481:53;1500:2;1504:5;1511:4;1517:9;1528:5;1481:18;:53::i;:::-;1455:79;;1553:10;:27;1564:15;1553:27;;;;;;;;;;;;;;;;;;;;;;;;;;;1552:28;1544:37;;;;;;;;1591:35;1601:15;1618:1;1621;1624;1591:9;:35::i;:::-;1719:4;1689:10;:27;1700:15;1689:27;;;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;1741:46;1749:2;1753:5;1760:4;1766:9;1777;1741:7;:46::i;:::-;1733:55;;;;;;;;1205:590;;;;;;;;;:::o;1722:336:9:-;244:4:14;222:27;;:10;:27;;;214:36;;;;;;;;1924:6:9;1900:30;;:7;1908:11;1900:20;;;;;;;;;;;;;;;;;;;;;;;;;;;:30;;;1892:39;;;;;;;;1960:5;1941:8;:16;1950:6;1941:16;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;1998:7;2023:1;2006:7;:14;;;;:18;1998:27;;;;;;;;;;;;;;;;;;;;;;;;;;;1975:7;1983:11;1975:20;;;;;;;;;;;;;;;;;;:50;;;;;;;;;;;;;;;;;;2035:7;:16;;;;;;;;;;;;:::i;:::-;;1722:336;;:::o;626:208:6:-;244:4:14;222:27;;:10;:27;;;214:36;;;;;;;;791:1:6;776:11;:16;;;;768:25;;;;;;;;816:11;803:10;;:24;;;;;;;;;;;;;;;;;;626:208;:::o;500:23:9:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2499:599:10:-;244:4:14;222:27;;:10;:27;;;214:36;;;;;;;;2727:10:10;2706:31;;2722:1;2706:6;:13;;;;:17;:31;;2698:40;;;;;;;;2840:5;2818:27;;:6;2825:10;2818:18;;;;;;;;;;;;;;;;;;;;;;;;;;;:27;;;2810:36;;;;;;;;2873:5;2856:7;:14;2864:5;2856:14;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;2909:6;2932:1;2916:6;:13;;;;:17;2909:25;;;;;;;;;;;;;;;;;;;;;;;;;;;2888:6;2895:10;2888:18;;;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;2944:6;:15;;;;;;;;;;;;:::i;:::-;;3040:10;3027:23;;:9;;;;;;;;;;;:23;;;;3023:68;;;3064:27;3080:10;3064:15;:27::i;:::-;3023:68;2499:599;;;:::o;693:301:2:-;798:32;810:7;819:10;798:11;:32::i;:::-;965:22;978:2;982:4;965:12;:22::i;:::-;693:301;;;;:::o;4759:111:10:-;4825:9;4857:6;4850:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4759:111;:::o;353:65:4:-;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2394:361:9:-;2514:12;2599:8;:20;2608:10;2599:20;;;;;;;;;;;;;;;;;;;;;;;;;2591:29;;;;;;;;2702:46;2710:2;2714:5;2721:4;2727:9;2738;2702:7;:46::i;:::-;2692:56;;2394:361;;;;;;:::o;4279:112::-;4346:8;4377:7;4370:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4279:112;:::o;4109:321:10:-;244:4:14;222:27;;:10;:27;;;214:36;;;;;;;;4291:6:10;:13;;;;4277:10;:27;;;;4269:36;;;;;;;;4389:1;4375:10;:15;;;;4367:24;;;;;;;;4413:10;4401:9;;:22;;;;;;;;;;;;;;;;;;4109:321;:::o;562:43:4:-;;;;;;;;;;;;;;;;;;;;;;:::o;424:40::-;;;;;;;;;;;;;;;;;;;;:::o;1801:559::-;1978:17;2018:20;2048:9;2006:1;1978:30;;2118:1;2114:5;;2109:245;2125:9;;;;;;;;;;;2121:13;;:1;:13;2109:245;;;2170:44;2180:15;2197:1;2199;2197:4;;;;;;;;;;;;;;;;;;2203:1;2205;2203:4;;;;;;;;;;;;;;;;;;2209:1;2211;2209:4;;;;;;;;;;;;;;;;;;2170:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2170:44:4;;;;;;;;2155:59;;2236:7;:21;2244:12;2236:21;;;;;;;;;;;;;;;;;;;;;;;;;2228:30;;;;;;;;2295:9;2280:24;;:12;:24;;;2272:33;;;;;;;;2331:12;2319:24;;2136:3;;;;;;;2109:245;;;1801:559;;;;;;;:::o;2761:548:9:-;2892:12;3163:19;2937;2924:32;;;;;;;;:9;:32;;;;;;;;;2920:383;;;2980:35;2992:2;2996:5;3003:4;3009:5;2980:11;:35::i;:::-;2970:45;;2920:383;;;3047:27;3034:40;;;;;;;;:9;:40;;;;;;;;;3030:273;;;3098:36;3118:2;3122:4;3128:5;3098:19;:36::i;:::-;3088:46;;3030:273;;;3185:19;3199:4;3185:13;:19::i;:::-;3163:41;;3243:1;3228:11;:16;;;;3218:26;;3263:29;3280:11;3263:29;;;;;;;;;;;;;;;;;;;;;;3030:273;2920:383;2761:548;;;;;;;;:::o;651:846:10:-;1147:9;1246:13;885:1;872:9;;;;;;;;;;;:14;;;864:23;;;;;;;;994:7;:14;980:10;:28;;;;972:37;;;;;;;;1093:1;1079:10;:15;;;;1071:24;;;;;;;;1159:1;1147:13;;1142:291;1166:7;:14;1162:1;:18;1142:291;;;1262:7;1270:1;1262:10;;;;;;;;;;;;;;;;;;1246:26;;1303:1;1294:5;:10;;;;1286:19;;;;;;;;1372:7;:14;1380:5;1372:14;;;;;;;;;;;;;;;;;;;;;;;;;1371:15;1363:24;;;;;;;;1418:4;1401:7;:14;1409:5;1401:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;1182:3;;;;;;;1142:291;;;1451:7;1442:6;:16;;;;;;;;;;;;:::i;:::-;;1480:10;1468:9;;:22;;;;;;;;;;;;;;;;;;651:846;;;;:::o;769:230:9:-;856:1;850:2;:7;;;;846:146;;;951:40;971:2;975:4;981:9;951:19;:40::i;:::-;943:49;;;;;;;;846:146;769:230;;:::o;3315:309::-;3424:12;3606:1;3603;3596:4;3590:11;3583:4;3577;3573:15;3566:5;3562:2;3555:5;3550:58;3539:69;;3525:93;;;;;;:::o;3630:303::-;3732:12;3915:1;3912;3905:4;3899:11;3892:4;3886;3882:15;3878:2;3871:5;3858:59;3847:70;;3833:94;;;;;:::o;3939:261::-;4008:19;4178:4;4172:11;4165:4;4159;4155:15;4152:1;4145:39;4130:54;;4116:78;;;:::o;281:2670:4:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o", - "source": "pragma solidity 0.4.23;\nimport \"./GnosisSafe.sol\";\nimport \"./MasterCopy.sol\";\n\n\n/// @title Gnosis Safe State Channel Edition - A multisignature wallet with support for confirmations.\n/// @author Stefan George - \n/// @author Richard Meissner - \ncontract GnosisSafeStateChannelEdition is MasterCopy, GnosisSafe {\n\n string public constant NAME = \"Gnosis Safe State Channel Edition\";\n string public constant VERSION = \"0.0.1\";\n\n // isExecuted mapping allows to check if a transaction (by hash) was already executed.\n mapping (bytes32 => bool) public isExecuted;\n\n /// @dev Allows to execute a Safe transaction confirmed by required number of owners.\n /// @param to Destination address of Safe transaction.\n /// @param value Ether value of Safe transaction.\n /// @param data Data payload of Safe transaction.\n /// @param operation Operation type of Safe transaction.\n /// @param nonce Nonce used for this Safe transaction.\n /// @param v Array of signature V values sorted by owner addresses.\n /// @param r Array of signature R values sorted by owner addresses.\n /// @param s Array of signature S values sorted by owner addresses.\n function executeTransaction(\n address to, \n uint256 value, \n bytes data, \n Enum.Operation operation, \n uint256 nonce,\n uint8[] v, \n bytes32[] r, \n bytes32[] s\n )\n public\n {\n bytes32 transactionHash = getTransactionHash(to, value, data, operation, nonce);\n require(!isExecuted[transactionHash]);\n checkHash(transactionHash, v, r, s);\n // Mark as executed and execute transaction.\n isExecuted[transactionHash] = true;\n require(execute(to, value, data, operation, gasleft()));\n }\n\n function checkHash(bytes32 transactionHash, uint8[] v, bytes32[] r, bytes32[] s)\n internal\n view\n {\n // There cannot be an owner with address 0.\n address lastOwner = address(0);\n address currentOwner;\n uint256 i;\n // Validate threshold is reached.\n for (i = 0; i < threshold; i++) {\n currentOwner = ecrecover(transactionHash, v[i], r[i], s[i]);\n require(isOwner[currentOwner]);\n require(currentOwner > lastOwner);\n lastOwner = currentOwner;\n }\n }\n\n /// @dev Returns hash to be signed by owners.\n /// @param to Destination address.\n /// @param value Ether value.\n /// @param data Data payload.\n /// @param operation Operation type.\n /// @param nonce Transaction nonce.\n /// @return Transaction hash.\n function getTransactionHash(\n address to, \n uint256 value, \n bytes data, \n Enum.Operation operation, \n uint256 nonce\n )\n public\n view\n returns (bytes32)\n {\n return keccak256(byte(0x19), byte(0), this, to, value, data, operation, nonce);\n }\n}\n", - "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafeStateChannelEdition.sol", - "ast": { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafeStateChannelEdition.sol", - "exportedSymbols": { - "GnosisSafeStateChannelEdition": [ - 530 - ] - }, - "id": 531, - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 348, - "literals": [ - "solidity", - "0.4", - ".23" - ], - "nodeType": "PragmaDirective", - "src": "0:23:4" - }, - { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafe.sol", - "file": "./GnosisSafe.sol", - "id": 349, - "nodeType": "ImportDirective", - "scope": 531, - "sourceUnit": 64, - "src": "24:26:4", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/MasterCopy.sol", - "file": "./MasterCopy.sol", - "id": 350, - "nodeType": "ImportDirective", - "scope": 531, - "sourceUnit": 780, - "src": "51:26:4", - "symbolAliases": [], - "unitAlias": "" - }, - { - "baseContracts": [ - { - "arguments": null, - "baseName": { - "contractScope": null, - "id": 351, - "name": "MasterCopy", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 779, - "src": "323:10:4", - "typeDescriptions": { - "typeIdentifier": "t_contract$_MasterCopy_$779", - "typeString": "contract MasterCopy" - } - }, - "id": 352, - "nodeType": "InheritanceSpecifier", - "src": "323:10:4" - }, - { - "arguments": null, - "baseName": { - "contractScope": null, - "id": 353, - "name": "GnosisSafe", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 63, - "src": "335:10:4", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$63", - "typeString": "contract GnosisSafe" - } - }, - "id": 354, - "nodeType": "InheritanceSpecifier", - "src": "335:10:4" - } - ], - "contractDependencies": [ - 63, - 779, - 1142, - 1438, - 1559 - ], - "contractKind": "contract", - "documentation": "@title Gnosis Safe State Channel Edition - A multisignature wallet with support for confirmations.\n @author Stefan George - \n @author Richard Meissner - ", - "fullyImplemented": true, - "id": 530, - "linearizedBaseContracts": [ - 530, - 63, - 1438, - 1142, - 779, - 1559 - ], - "name": "GnosisSafeStateChannelEdition", - "nodeType": "ContractDefinition", - "nodes": [ - { - "constant": true, - "id": 357, - "name": "NAME", - "nodeType": "VariableDeclaration", - "scope": 530, - "src": "353:65:4", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_string_memory", - "typeString": "string" - }, - "typeName": { - "id": 355, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "353:6:4", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string" - } - }, - "value": { - "argumentTypes": null, - "hexValue": "476e6f7369732053616665205374617465204368616e6e656c2045646974696f6e", - "id": 356, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "383:35:4", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_8ed77695330a1e702d7599137bd776e333a5b5bdc777b481e480866a9eb5edc4", - "typeString": "literal_string \"Gnosis Safe State Channel Edition\"" - }, - "value": "Gnosis Safe State Channel Edition" - }, - "visibility": "public" - }, - { - "constant": true, - "id": 360, - "name": "VERSION", - "nodeType": "VariableDeclaration", - "scope": 530, - "src": "424:40:4", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_string_memory", - "typeString": "string" - }, - "typeName": { - "id": 358, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "424:6:4", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string" - } - }, - "value": { - "argumentTypes": null, - "hexValue": "302e302e31", - "id": 359, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "457:7:4", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_ae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc199163811885", - "typeString": "literal_string \"0.0.1\"" - }, - "value": "0.0.1" - }, - "visibility": "public" - }, - { - "constant": false, - "id": 364, - "name": "isExecuted", - "nodeType": "VariableDeclaration", - "scope": 530, - "src": "562:43:4", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - }, - "typeName": { - "id": 363, - "keyType": { - "id": 361, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "571:7:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "Mapping", - "src": "562:25:4", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - }, - "valueType": { - "id": 362, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "582:4:4", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - }, - "value": null, - "visibility": "public" - }, - { - "body": { - "id": 427, - "nodeType": "Block", - "src": "1445:350:4", - "statements": [ - { - "assignments": [ - 387 - ], - "declarations": [ - { - "constant": false, - "id": 387, - "name": "transactionHash", - "nodeType": "VariableDeclaration", - "scope": 428, - "src": "1455:23:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 386, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1455:7:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 395, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 389, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 366, - "src": "1500:2:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 390, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 368, - "src": "1504:5:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 391, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 370, - "src": "1511:4:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - { - "argumentTypes": null, - "id": 392, - "name": "operation", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 372, - "src": "1517:9:4", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$29", - "typeString": "enum Enum.Operation" - } - }, - { - "argumentTypes": null, - "id": 393, - "name": "nonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 374, - "src": "1528:5:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_enum$_Operation_$29", - "typeString": "enum Enum.Operation" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 388, - "name": "getTransactionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 529, - "src": "1481:18:4", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$_t_uint256_$returns$_t_bytes32_$", - "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256) view returns (bytes32)" - } - }, - "id": 394, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1481:53:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1455:79:4" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 400, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "!", - "prefix": true, - "src": "1552:28:4", - "subExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 397, - "name": "isExecuted", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 364, - "src": "1553:10:4", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - } - }, - "id": 399, - "indexExpression": { - "argumentTypes": null, - "id": 398, - "name": "transactionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 387, - "src": "1564:15:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1553:27:4", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 396, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 2468, - 2469 - ], - "referencedDeclaration": 2468, - "src": "1544:7:4", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 401, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1544:37:4", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 402, - "nodeType": "ExpressionStatement", - "src": "1544:37:4" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 404, - "name": "transactionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 387, - "src": "1601:15:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "id": 405, - "name": "v", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 377, - "src": "1618:1:4", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr", - "typeString": "uint8[] memory" - } - }, - { - "argumentTypes": null, - "id": 406, - "name": "r", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 380, - "src": "1621:1:4", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", - "typeString": "bytes32[] memory" - } - }, - { - "argumentTypes": null, - "id": 407, - "name": "s", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 383, - "src": "1624:1:4", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", - "typeString": "bytes32[] memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr", - "typeString": "uint8[] memory" - }, - { - "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", - "typeString": "bytes32[] memory" - }, - { - "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", - "typeString": "bytes32[] memory" - } - ], - "id": 403, - "name": "checkHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 498, - "src": "1591:9:4", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_array$_t_uint8_$dyn_memory_ptr_$_t_array$_t_bytes32_$dyn_memory_ptr_$_t_array$_t_bytes32_$dyn_memory_ptr_$returns$__$", - "typeString": "function (bytes32,uint8[] memory,bytes32[] memory,bytes32[] memory) view" - } - }, - "id": 408, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1591:35:4", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 409, - "nodeType": "ExpressionStatement", - "src": "1591:35:4" - }, - { - "expression": { - "argumentTypes": null, - "id": 414, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 410, - "name": "isExecuted", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 364, - "src": "1689:10:4", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - } - }, - "id": 412, - "indexExpression": { - "argumentTypes": null, - "id": 411, - "name": "transactionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 387, - "src": "1700:15:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "1689:27:4", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "74727565", - "id": 413, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1719:4:4", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "src": "1689:34:4", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 415, - "nodeType": "ExpressionStatement", - "src": "1689:34:4" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 418, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 366, - "src": "1749:2:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 419, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 368, - "src": "1753:5:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 420, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 370, - "src": "1760:4:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - { - "argumentTypes": null, - "id": 421, - "name": "operation", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 372, - "src": "1766:9:4", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$29", - "typeString": "enum Enum.Operation" - } - }, - { - "argumentTypes": null, - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 422, - "name": "gasleft", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2458, - "src": "1777:7:4", - "typeDescriptions": { - "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", - "typeString": "function () view returns (uint256)" - } - }, - "id": 423, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1777:9:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_enum$_Operation_$29", - "typeString": "enum Enum.Operation" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 417, - "name": "execute", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1095, - "src": "1741:7:4", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$_t_uint256_$returns$_t_bool_$", - "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256) returns (bool)" - } - }, - "id": 424, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1741:46:4", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 416, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 2468, - 2469 - ], - "referencedDeclaration": 2468, - "src": "1733:7:4", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 425, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1733:55:4", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 426, - "nodeType": "ExpressionStatement", - "src": "1733:55:4" - } - ] - }, - "documentation": "@dev Allows to execute a Safe transaction confirmed by required number of owners.\n @param to Destination address of Safe transaction.\n @param value Ether value of Safe transaction.\n @param data Data payload of Safe transaction.\n @param operation Operation type of Safe transaction.\n @param nonce Nonce used for this Safe transaction.\n @param v Array of signature V values sorted by owner addresses.\n @param r Array of signature R values sorted by owner addresses.\n @param s Array of signature S values sorted by owner addresses.", - "id": 428, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "executeTransaction", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 384, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 366, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 428, - "src": "1242:10:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 365, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1242:7:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 368, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 428, - "src": "1263:13:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 367, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1263:7:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 370, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 428, - "src": "1287:10:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 369, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "1287:5:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 372, - "name": "operation", - "nodeType": "VariableDeclaration", - "scope": 428, - "src": "1308:24:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$29", - "typeString": "enum Enum.Operation" - }, - "typeName": { - "contractScope": null, - "id": 371, - "name": "Enum.Operation", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 29, - "src": "1308:14:4", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$29", - "typeString": "enum Enum.Operation" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 374, - "name": "nonce", - "nodeType": "VariableDeclaration", - "scope": 428, - "src": "1343:13:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 373, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1343:7:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 377, - "name": "v", - "nodeType": "VariableDeclaration", - "scope": 428, - "src": "1366:9:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr", - "typeString": "uint8[]" - }, - "typeName": { - "baseType": { - "id": 375, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "1366:5:4", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "id": 376, - "length": null, - "nodeType": "ArrayTypeName", - "src": "1366:7:4", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint8_$dyn_storage_ptr", - "typeString": "uint8[]" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 380, - "name": "r", - "nodeType": "VariableDeclaration", - "scope": 428, - "src": "1386:11:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", - "typeString": "bytes32[]" - }, - "typeName": { - "baseType": { - "id": 378, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1386:7:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "id": 379, - "length": null, - "nodeType": "ArrayTypeName", - "src": "1386:9:4", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", - "typeString": "bytes32[]" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 383, - "name": "s", - "nodeType": "VariableDeclaration", - "scope": 428, - "src": "1408:11:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", - "typeString": "bytes32[]" - }, - "typeName": { - "baseType": { - "id": 381, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1408:7:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "id": 382, - "length": null, - "nodeType": "ArrayTypeName", - "src": "1408:9:4", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", - "typeString": "bytes32[]" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1232:193:4" - }, - "payable": false, - "returnParameters": { - "id": 385, - "nodeType": "ParameterList", - "parameters": [], - "src": "1445:0:4" - }, - "scope": 530, - "src": "1205:590:4", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 497, - "nodeType": "Block", - "src": "1916:444:4", - "statements": [ - { - "assignments": [ - 443 - ], - "declarations": [ - { - "constant": false, - "id": 443, - "name": "lastOwner", - "nodeType": "VariableDeclaration", - "scope": 498, - "src": "1978:17:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 442, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1978:7:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 447, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "30", - "id": 445, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2006:1:4", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 444, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "1998:7:4", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": "address" - }, - "id": 446, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1998:10:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1978:30:4" - }, - { - "assignments": [], - "declarations": [ - { - "constant": false, - "id": 449, - "name": "currentOwner", - "nodeType": "VariableDeclaration", - "scope": 498, - "src": "2018:20:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 448, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2018:7:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 450, - "initialValue": null, - "nodeType": "VariableDeclarationStatement", - "src": "2018:20:4" - }, - { - "assignments": [], - "declarations": [ - { - "constant": false, - "id": 452, - "name": "i", - "nodeType": "VariableDeclaration", - "scope": 498, - "src": "2048:9:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 451, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2048:7:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 453, - "initialValue": null, - "nodeType": "VariableDeclarationStatement", - "src": "2048:9:4" - }, - { - "body": { - "id": 495, - "nodeType": "Block", - "src": "2141:213:4", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 477, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 464, - "name": "currentOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 449, - "src": "2155:12:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 466, - "name": "transactionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 430, - "src": "2180:15:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 467, - "name": "v", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 433, - "src": "2197:1:4", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr", - "typeString": "uint8[] memory" - } - }, - "id": 469, - "indexExpression": { - "argumentTypes": null, - "id": 468, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 452, - "src": "2199:1:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2197:4:4", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 470, - "name": "r", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 436, - "src": "2203:1:4", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", - "typeString": "bytes32[] memory" - } - }, - "id": 472, - "indexExpression": { - "argumentTypes": null, - "id": 471, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 452, - "src": "2205:1:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2203:4:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 473, - "name": "s", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 439, - "src": "2209:1:4", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", - "typeString": "bytes32[] memory" - } - }, - "id": 475, - "indexExpression": { - "argumentTypes": null, - "id": 474, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 452, - "src": "2211:1:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2209:4:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "id": 465, - "name": "ecrecover", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2457, - "src": "2170:9:4", - "typeDescriptions": { - "typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$", - "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)" - } - }, - "id": 476, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2170:44:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "2155:59:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 478, - "nodeType": "ExpressionStatement", - "src": "2155:59:4" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 480, - "name": "isOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 1156 - ], - "referencedDeclaration": 1156, - "src": "2236:7:4", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 482, - "indexExpression": { - "argumentTypes": null, - "id": 481, - "name": "currentOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 449, - "src": "2244:12:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2236:21:4", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 479, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 2468, - 2469 - ], - "referencedDeclaration": 2468, - "src": "2228:7:4", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 483, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2228:30:4", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 484, - "nodeType": "ExpressionStatement", - "src": "2228:30:4" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 488, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 486, - "name": "currentOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 449, - "src": "2280:12:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "id": 487, - "name": "lastOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 443, - "src": "2295:9:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "2280:24:4", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 485, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 2468, - 2469 - ], - "referencedDeclaration": 2468, - "src": "2272:7:4", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 489, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2272:33:4", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 490, - "nodeType": "ExpressionStatement", - "src": "2272:33:4" - }, - { - "expression": { - "argumentTypes": null, - "id": 493, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 491, - "name": "lastOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 443, - "src": "2319:9:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 492, - "name": "currentOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 449, - "src": "2331:12:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "2319:24:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 494, - "nodeType": "ExpressionStatement", - "src": "2319:24:4" - } - ] - }, - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 460, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 458, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 452, - "src": "2121:1:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "argumentTypes": null, - "id": 459, - "name": "threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 1152 - ], - "referencedDeclaration": 1152, - "src": "2125:9:4", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "src": "2121:13:4", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 496, - "initializationExpression": { - "expression": { - "argumentTypes": null, - "id": 456, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 454, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 452, - "src": "2114:1:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "30", - "id": 455, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2118:1:4", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "2114:5:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 457, - "nodeType": "ExpressionStatement", - "src": "2114:5:4" - }, - "loopExpression": { - "expression": { - "argumentTypes": null, - "id": 462, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "2136:3:4", - "subExpression": { - "argumentTypes": null, - "id": 461, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 452, - "src": "2136:1:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 463, - "nodeType": "ExpressionStatement", - "src": "2136:3:4" - }, - "nodeType": "ForStatement", - "src": "2109:245:4" - } - ] - }, - "documentation": null, - "id": 498, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "checkHash", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 440, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 430, - "name": "transactionHash", - "nodeType": "VariableDeclaration", - "scope": 498, - "src": "1820:23:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 429, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1820:7:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 433, - "name": "v", - "nodeType": "VariableDeclaration", - "scope": 498, - "src": "1845:9:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr", - "typeString": "uint8[]" - }, - "typeName": { - "baseType": { - "id": 431, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "1845:5:4", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "id": 432, - "length": null, - "nodeType": "ArrayTypeName", - "src": "1845:7:4", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint8_$dyn_storage_ptr", - "typeString": "uint8[]" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 436, - "name": "r", - "nodeType": "VariableDeclaration", - "scope": 498, - "src": "1856:11:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", - "typeString": "bytes32[]" - }, - "typeName": { - "baseType": { - "id": 434, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1856:7:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "id": 435, - "length": null, - "nodeType": "ArrayTypeName", - "src": "1856:9:4", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", - "typeString": "bytes32[]" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 439, - "name": "s", - "nodeType": "VariableDeclaration", - "scope": 498, - "src": "1869:11:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", - "typeString": "bytes32[]" - }, - "typeName": { - "baseType": { - "id": 437, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1869:7:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "id": 438, - "length": null, - "nodeType": "ArrayTypeName", - "src": "1869:9:4", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", - "typeString": "bytes32[]" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1819:62:4" - }, - "payable": false, - "returnParameters": { - "id": 441, - "nodeType": "ParameterList", - "parameters": [], - "src": "1916:0:4" - }, - "scope": 530, - "src": "1801:559:4", - "stateMutability": "view", - "superFunction": null, - "visibility": "internal" - }, - { - "body": { - "id": 528, - "nodeType": "Block", - "src": "2854:95:4", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "30783139", - "id": 515, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2886:4:4", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_25_by_1", - "typeString": "int_const 25" - }, - "value": "0x19" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_25_by_1", - "typeString": "int_const 25" - } - ], - "id": 514, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "2881:4:4", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes1_$", - "typeString": "type(bytes1)" - }, - "typeName": "byte" - }, - "id": 516, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2881:10:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - } - }, - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "30", - "id": 518, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2898:1:4", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 517, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "2893:4:4", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes1_$", - "typeString": "type(bytes1)" - }, - "typeName": "byte" - }, - "id": 519, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2893:7:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - } - }, - { - "argumentTypes": null, - "id": 520, - "name": "this", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2498, - "src": "2902:4:4", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafeStateChannelEdition_$530", - "typeString": "contract GnosisSafeStateChannelEdition" - } - }, - { - "argumentTypes": null, - "id": 521, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 500, - "src": "2908:2:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 522, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 502, - "src": "2912:5:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 523, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 504, - "src": "2919:4:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - { - "argumentTypes": null, - "id": 524, - "name": "operation", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 506, - "src": "2925:9:4", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$29", - "typeString": "enum Enum.Operation" - } - }, - { - "argumentTypes": null, - "id": 525, - "name": "nonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 508, - "src": "2936:5:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - }, - { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - }, - { - "typeIdentifier": "t_contract$_GnosisSafeStateChannelEdition_$530", - "typeString": "contract GnosisSafeStateChannelEdition" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_enum$_Operation_$29", - "typeString": "enum Enum.Operation" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 513, - "name": "keccak256", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2459, - "src": "2871:9:4", - "typeDescriptions": { - "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", - "typeString": "function () pure returns (bytes32)" - } - }, - "id": 526, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2871:71:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "functionReturnParameters": 512, - "id": 527, - "nodeType": "Return", - "src": "2864:78:4" - } - ] - }, - "documentation": "@dev Returns hash to be signed by owners.\n @param to Destination address.\n @param value Ether value.\n @param data Data payload.\n @param operation Operation type.\n @param nonce Transaction nonce.\n @return Transaction hash.", - "id": 529, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "getTransactionHash", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 509, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 500, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 529, - "src": "2675:10:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 499, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2675:7:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 502, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 529, - "src": "2696:13:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 501, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2696:7:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 504, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 529, - "src": "2720:10:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 503, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "2720:5:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 506, - "name": "operation", - "nodeType": "VariableDeclaration", - "scope": 529, - "src": "2741:24:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$29", - "typeString": "enum Enum.Operation" - }, - "typeName": { - "contractScope": null, - "id": 505, - "name": "Enum.Operation", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 29, - "src": "2741:14:4", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$29", - "typeString": "enum Enum.Operation" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 508, - "name": "nonce", - "nodeType": "VariableDeclaration", - "scope": 529, - "src": "2776:13:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 507, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2776:7:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "2665:130:4" - }, - "payable": false, - "returnParameters": { - "id": 512, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 511, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 529, - "src": "2841:7:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 510, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "2841:7:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "2840:9:4" - }, - "scope": 530, - "src": "2638:311:4", - "stateMutability": "view", - "superFunction": null, - "visibility": "public" - } - ], - "scope": 531, - "src": "281:2670:4" - } - ], - "src": "0:2952:4" - }, - "legacyAST": { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafeStateChannelEdition.sol", - "exportedSymbols": { - "GnosisSafeStateChannelEdition": [ - 530 - ] - }, - "id": 531, - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 348, - "literals": [ - "solidity", - "0.4", - ".23" - ], - "nodeType": "PragmaDirective", - "src": "0:23:4" - }, - { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafe.sol", - "file": "./GnosisSafe.sol", - "id": 349, - "nodeType": "ImportDirective", - "scope": 531, - "sourceUnit": 64, - "src": "24:26:4", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/MasterCopy.sol", - "file": "./MasterCopy.sol", - "id": 350, - "nodeType": "ImportDirective", - "scope": 531, - "sourceUnit": 780, - "src": "51:26:4", - "symbolAliases": [], - "unitAlias": "" - }, - { - "baseContracts": [ - { - "arguments": null, - "baseName": { - "contractScope": null, - "id": 351, - "name": "MasterCopy", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 779, - "src": "323:10:4", - "typeDescriptions": { - "typeIdentifier": "t_contract$_MasterCopy_$779", - "typeString": "contract MasterCopy" - } - }, - "id": 352, - "nodeType": "InheritanceSpecifier", - "src": "323:10:4" - }, - { - "arguments": null, - "baseName": { - "contractScope": null, - "id": 353, - "name": "GnosisSafe", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 63, - "src": "335:10:4", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$63", - "typeString": "contract GnosisSafe" - } - }, - "id": 354, - "nodeType": "InheritanceSpecifier", - "src": "335:10:4" - } - ], - "contractDependencies": [ - 63, - 779, - 1142, - 1438, - 1559 - ], - "contractKind": "contract", - "documentation": "@title Gnosis Safe State Channel Edition - A multisignature wallet with support for confirmations.\n @author Stefan George - \n @author Richard Meissner - ", - "fullyImplemented": true, - "id": 530, - "linearizedBaseContracts": [ - 530, - 63, - 1438, - 1142, - 779, - 1559 - ], - "name": "GnosisSafeStateChannelEdition", - "nodeType": "ContractDefinition", - "nodes": [ - { - "constant": true, - "id": 357, - "name": "NAME", - "nodeType": "VariableDeclaration", - "scope": 530, - "src": "353:65:4", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_string_memory", - "typeString": "string" - }, - "typeName": { - "id": 355, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "353:6:4", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string" - } - }, - "value": { - "argumentTypes": null, - "hexValue": "476e6f7369732053616665205374617465204368616e6e656c2045646974696f6e", - "id": 356, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "383:35:4", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_8ed77695330a1e702d7599137bd776e333a5b5bdc777b481e480866a9eb5edc4", - "typeString": "literal_string \"Gnosis Safe State Channel Edition\"" - }, - "value": "Gnosis Safe State Channel Edition" - }, - "visibility": "public" - }, - { - "constant": true, - "id": 360, - "name": "VERSION", - "nodeType": "VariableDeclaration", - "scope": 530, - "src": "424:40:4", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_string_memory", - "typeString": "string" - }, - "typeName": { - "id": 358, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "424:6:4", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string" - } - }, - "value": { - "argumentTypes": null, - "hexValue": "302e302e31", - "id": 359, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "457:7:4", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_ae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc199163811885", - "typeString": "literal_string \"0.0.1\"" - }, - "value": "0.0.1" - }, - "visibility": "public" - }, - { - "constant": false, - "id": 364, - "name": "isExecuted", - "nodeType": "VariableDeclaration", - "scope": 530, - "src": "562:43:4", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - }, - "typeName": { - "id": 363, - "keyType": { - "id": 361, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "571:7:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "Mapping", - "src": "562:25:4", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - }, - "valueType": { - "id": 362, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "582:4:4", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - }, - "value": null, - "visibility": "public" - }, - { - "body": { - "id": 427, - "nodeType": "Block", - "src": "1445:350:4", - "statements": [ - { - "assignments": [ - 387 - ], - "declarations": [ - { - "constant": false, - "id": 387, - "name": "transactionHash", - "nodeType": "VariableDeclaration", - "scope": 428, - "src": "1455:23:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 386, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1455:7:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 395, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 389, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 366, - "src": "1500:2:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 390, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 368, - "src": "1504:5:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 391, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 370, - "src": "1511:4:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - { - "argumentTypes": null, - "id": 392, - "name": "operation", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 372, - "src": "1517:9:4", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$29", - "typeString": "enum Enum.Operation" - } - }, - { - "argumentTypes": null, - "id": 393, - "name": "nonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 374, - "src": "1528:5:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_enum$_Operation_$29", - "typeString": "enum Enum.Operation" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 388, - "name": "getTransactionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 529, - "src": "1481:18:4", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$_t_uint256_$returns$_t_bytes32_$", - "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256) view returns (bytes32)" - } - }, - "id": 394, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1481:53:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1455:79:4" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 400, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "!", - "prefix": true, - "src": "1552:28:4", - "subExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 397, - "name": "isExecuted", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 364, - "src": "1553:10:4", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - } - }, - "id": 399, - "indexExpression": { - "argumentTypes": null, - "id": 398, - "name": "transactionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 387, - "src": "1564:15:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1553:27:4", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 396, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 2468, - 2469 - ], - "referencedDeclaration": 2468, - "src": "1544:7:4", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 401, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1544:37:4", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 402, - "nodeType": "ExpressionStatement", - "src": "1544:37:4" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 404, - "name": "transactionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 387, - "src": "1601:15:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "id": 405, - "name": "v", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 377, - "src": "1618:1:4", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr", - "typeString": "uint8[] memory" - } - }, - { - "argumentTypes": null, - "id": 406, - "name": "r", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 380, - "src": "1621:1:4", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", - "typeString": "bytes32[] memory" - } - }, - { - "argumentTypes": null, - "id": 407, - "name": "s", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 383, - "src": "1624:1:4", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", - "typeString": "bytes32[] memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr", - "typeString": "uint8[] memory" - }, - { - "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", - "typeString": "bytes32[] memory" - }, - { - "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", - "typeString": "bytes32[] memory" - } - ], - "id": 403, - "name": "checkHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 498, - "src": "1591:9:4", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_array$_t_uint8_$dyn_memory_ptr_$_t_array$_t_bytes32_$dyn_memory_ptr_$_t_array$_t_bytes32_$dyn_memory_ptr_$returns$__$", - "typeString": "function (bytes32,uint8[] memory,bytes32[] memory,bytes32[] memory) view" - } - }, - "id": 408, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1591:35:4", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 409, - "nodeType": "ExpressionStatement", - "src": "1591:35:4" - }, - { - "expression": { - "argumentTypes": null, - "id": 414, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 410, - "name": "isExecuted", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 364, - "src": "1689:10:4", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - } - }, - "id": 412, - "indexExpression": { - "argumentTypes": null, - "id": 411, - "name": "transactionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 387, - "src": "1700:15:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "1689:27:4", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "74727565", - "id": 413, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1719:4:4", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "src": "1689:34:4", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 415, - "nodeType": "ExpressionStatement", - "src": "1689:34:4" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 418, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 366, - "src": "1749:2:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 419, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 368, - "src": "1753:5:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 420, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 370, - "src": "1760:4:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - { - "argumentTypes": null, - "id": 421, - "name": "operation", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 372, - "src": "1766:9:4", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$29", - "typeString": "enum Enum.Operation" - } - }, - { - "argumentTypes": null, - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 422, - "name": "gasleft", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2458, - "src": "1777:7:4", - "typeDescriptions": { - "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", - "typeString": "function () view returns (uint256)" - } - }, - "id": 423, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1777:9:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_enum$_Operation_$29", - "typeString": "enum Enum.Operation" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 417, - "name": "execute", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1095, - "src": "1741:7:4", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$_t_uint256_$returns$_t_bool_$", - "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256) returns (bool)" - } - }, - "id": 424, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1741:46:4", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 416, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 2468, - 2469 - ], - "referencedDeclaration": 2468, - "src": "1733:7:4", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 425, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1733:55:4", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 426, - "nodeType": "ExpressionStatement", - "src": "1733:55:4" - } - ] - }, - "documentation": "@dev Allows to execute a Safe transaction confirmed by required number of owners.\n @param to Destination address of Safe transaction.\n @param value Ether value of Safe transaction.\n @param data Data payload of Safe transaction.\n @param operation Operation type of Safe transaction.\n @param nonce Nonce used for this Safe transaction.\n @param v Array of signature V values sorted by owner addresses.\n @param r Array of signature R values sorted by owner addresses.\n @param s Array of signature S values sorted by owner addresses.", - "id": 428, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "executeTransaction", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 384, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 366, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 428, - "src": "1242:10:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 365, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1242:7:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 368, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 428, - "src": "1263:13:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 367, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1263:7:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 370, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 428, - "src": "1287:10:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 369, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "1287:5:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 372, - "name": "operation", - "nodeType": "VariableDeclaration", - "scope": 428, - "src": "1308:24:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$29", - "typeString": "enum Enum.Operation" - }, - "typeName": { - "contractScope": null, - "id": 371, - "name": "Enum.Operation", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 29, - "src": "1308:14:4", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$29", - "typeString": "enum Enum.Operation" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 374, - "name": "nonce", - "nodeType": "VariableDeclaration", - "scope": 428, - "src": "1343:13:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 373, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1343:7:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 377, - "name": "v", - "nodeType": "VariableDeclaration", - "scope": 428, - "src": "1366:9:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr", - "typeString": "uint8[]" - }, - "typeName": { - "baseType": { - "id": 375, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "1366:5:4", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "id": 376, - "length": null, - "nodeType": "ArrayTypeName", - "src": "1366:7:4", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint8_$dyn_storage_ptr", - "typeString": "uint8[]" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 380, - "name": "r", - "nodeType": "VariableDeclaration", - "scope": 428, - "src": "1386:11:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", - "typeString": "bytes32[]" - }, - "typeName": { - "baseType": { - "id": 378, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1386:7:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "id": 379, - "length": null, - "nodeType": "ArrayTypeName", - "src": "1386:9:4", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", - "typeString": "bytes32[]" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 383, - "name": "s", - "nodeType": "VariableDeclaration", - "scope": 428, - "src": "1408:11:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", - "typeString": "bytes32[]" - }, - "typeName": { - "baseType": { - "id": 381, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1408:7:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "id": 382, - "length": null, - "nodeType": "ArrayTypeName", - "src": "1408:9:4", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", - "typeString": "bytes32[]" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1232:193:4" - }, - "payable": false, - "returnParameters": { - "id": 385, - "nodeType": "ParameterList", - "parameters": [], - "src": "1445:0:4" - }, - "scope": 530, - "src": "1205:590:4", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 497, - "nodeType": "Block", - "src": "1916:444:4", - "statements": [ - { - "assignments": [ - 443 - ], - "declarations": [ - { - "constant": false, - "id": 443, - "name": "lastOwner", - "nodeType": "VariableDeclaration", - "scope": 498, - "src": "1978:17:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 442, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1978:7:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 447, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "30", - "id": 445, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2006:1:4", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 444, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "1998:7:4", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": "address" - }, - "id": 446, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1998:10:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1978:30:4" - }, - { - "assignments": [], - "declarations": [ - { - "constant": false, - "id": 449, - "name": "currentOwner", - "nodeType": "VariableDeclaration", - "scope": 498, - "src": "2018:20:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 448, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2018:7:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 450, - "initialValue": null, - "nodeType": "VariableDeclarationStatement", - "src": "2018:20:4" - }, - { - "assignments": [], - "declarations": [ - { - "constant": false, - "id": 452, - "name": "i", - "nodeType": "VariableDeclaration", - "scope": 498, - "src": "2048:9:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 451, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2048:7:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 453, - "initialValue": null, - "nodeType": "VariableDeclarationStatement", - "src": "2048:9:4" - }, - { - "body": { - "id": 495, - "nodeType": "Block", - "src": "2141:213:4", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 477, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 464, - "name": "currentOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 449, - "src": "2155:12:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 466, - "name": "transactionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 430, - "src": "2180:15:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 467, - "name": "v", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 433, - "src": "2197:1:4", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr", - "typeString": "uint8[] memory" - } - }, - "id": 469, - "indexExpression": { - "argumentTypes": null, - "id": 468, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 452, - "src": "2199:1:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2197:4:4", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 470, - "name": "r", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 436, - "src": "2203:1:4", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", - "typeString": "bytes32[] memory" - } - }, - "id": 472, - "indexExpression": { - "argumentTypes": null, - "id": 471, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 452, - "src": "2205:1:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2203:4:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 473, - "name": "s", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 439, - "src": "2209:1:4", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", - "typeString": "bytes32[] memory" - } - }, - "id": 475, - "indexExpression": { - "argumentTypes": null, - "id": 474, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 452, - "src": "2211:1:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2209:4:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "id": 465, - "name": "ecrecover", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2457, - "src": "2170:9:4", - "typeDescriptions": { - "typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$", - "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)" - } - }, - "id": 476, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2170:44:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "2155:59:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 478, - "nodeType": "ExpressionStatement", - "src": "2155:59:4" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 480, - "name": "isOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 1156 - ], - "referencedDeclaration": 1156, - "src": "2236:7:4", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 482, - "indexExpression": { - "argumentTypes": null, - "id": 481, - "name": "currentOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 449, - "src": "2244:12:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2236:21:4", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 479, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 2468, - 2469 - ], - "referencedDeclaration": 2468, - "src": "2228:7:4", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 483, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2228:30:4", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 484, - "nodeType": "ExpressionStatement", - "src": "2228:30:4" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 488, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 486, - "name": "currentOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 449, - "src": "2280:12:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "id": 487, - "name": "lastOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 443, - "src": "2295:9:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "2280:24:4", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 485, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 2468, - 2469 - ], - "referencedDeclaration": 2468, - "src": "2272:7:4", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 489, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2272:33:4", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 490, - "nodeType": "ExpressionStatement", - "src": "2272:33:4" - }, - { - "expression": { - "argumentTypes": null, - "id": 493, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 491, - "name": "lastOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 443, - "src": "2319:9:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 492, - "name": "currentOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 449, - "src": "2331:12:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "2319:24:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 494, - "nodeType": "ExpressionStatement", - "src": "2319:24:4" - } - ] - }, - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 460, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 458, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 452, - "src": "2121:1:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "argumentTypes": null, - "id": 459, - "name": "threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 1152 - ], - "referencedDeclaration": 1152, - "src": "2125:9:4", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "src": "2121:13:4", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 496, - "initializationExpression": { - "expression": { - "argumentTypes": null, - "id": 456, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 454, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 452, - "src": "2114:1:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "30", - "id": 455, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2118:1:4", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "2114:5:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 457, - "nodeType": "ExpressionStatement", - "src": "2114:5:4" - }, - "loopExpression": { - "expression": { - "argumentTypes": null, - "id": 462, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "2136:3:4", - "subExpression": { - "argumentTypes": null, - "id": 461, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 452, - "src": "2136:1:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 463, - "nodeType": "ExpressionStatement", - "src": "2136:3:4" - }, - "nodeType": "ForStatement", - "src": "2109:245:4" - } - ] - }, - "documentation": null, - "id": 498, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "checkHash", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 440, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 430, - "name": "transactionHash", - "nodeType": "VariableDeclaration", - "scope": 498, - "src": "1820:23:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 429, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1820:7:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 433, - "name": "v", - "nodeType": "VariableDeclaration", - "scope": 498, - "src": "1845:9:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr", - "typeString": "uint8[]" - }, - "typeName": { - "baseType": { - "id": 431, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "1845:5:4", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "id": 432, - "length": null, - "nodeType": "ArrayTypeName", - "src": "1845:7:4", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint8_$dyn_storage_ptr", - "typeString": "uint8[]" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 436, - "name": "r", - "nodeType": "VariableDeclaration", - "scope": 498, - "src": "1856:11:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", - "typeString": "bytes32[]" - }, - "typeName": { - "baseType": { - "id": 434, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1856:7:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "id": 435, - "length": null, - "nodeType": "ArrayTypeName", - "src": "1856:9:4", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", - "typeString": "bytes32[]" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 439, - "name": "s", - "nodeType": "VariableDeclaration", - "scope": 498, - "src": "1869:11:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", - "typeString": "bytes32[]" - }, - "typeName": { - "baseType": { - "id": 437, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1869:7:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "id": 438, - "length": null, - "nodeType": "ArrayTypeName", - "src": "1869:9:4", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", - "typeString": "bytes32[]" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1819:62:4" - }, - "payable": false, - "returnParameters": { - "id": 441, - "nodeType": "ParameterList", - "parameters": [], - "src": "1916:0:4" - }, - "scope": 530, - "src": "1801:559:4", - "stateMutability": "view", - "superFunction": null, - "visibility": "internal" - }, - { - "body": { - "id": 528, - "nodeType": "Block", - "src": "2854:95:4", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "30783139", - "id": 515, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2886:4:4", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_25_by_1", - "typeString": "int_const 25" - }, - "value": "0x19" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_25_by_1", - "typeString": "int_const 25" - } - ], - "id": 514, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "2881:4:4", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes1_$", - "typeString": "type(bytes1)" - }, - "typeName": "byte" - }, - "id": 516, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2881:10:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - } - }, - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "30", - "id": 518, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2898:1:4", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 517, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "2893:4:4", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes1_$", - "typeString": "type(bytes1)" - }, - "typeName": "byte" - }, - "id": 519, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2893:7:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - } - }, - { - "argumentTypes": null, - "id": 520, - "name": "this", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2498, - "src": "2902:4:4", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafeStateChannelEdition_$530", - "typeString": "contract GnosisSafeStateChannelEdition" - } - }, - { - "argumentTypes": null, - "id": 521, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 500, - "src": "2908:2:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 522, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 502, - "src": "2912:5:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 523, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 504, - "src": "2919:4:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - { - "argumentTypes": null, - "id": 524, - "name": "operation", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 506, - "src": "2925:9:4", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$29", - "typeString": "enum Enum.Operation" - } - }, - { - "argumentTypes": null, - "id": 525, - "name": "nonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 508, - "src": "2936:5:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - }, - { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - }, - { - "typeIdentifier": "t_contract$_GnosisSafeStateChannelEdition_$530", - "typeString": "contract GnosisSafeStateChannelEdition" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_enum$_Operation_$29", - "typeString": "enum Enum.Operation" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 513, - "name": "keccak256", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2459, - "src": "2871:9:4", - "typeDescriptions": { - "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", - "typeString": "function () pure returns (bytes32)" - } - }, - "id": 526, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2871:71:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "functionReturnParameters": 512, - "id": 527, - "nodeType": "Return", - "src": "2864:78:4" - } - ] - }, - "documentation": "@dev Returns hash to be signed by owners.\n @param to Destination address.\n @param value Ether value.\n @param data Data payload.\n @param operation Operation type.\n @param nonce Transaction nonce.\n @return Transaction hash.", - "id": 529, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "getTransactionHash", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 509, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 500, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 529, - "src": "2675:10:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 499, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2675:7:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 502, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 529, - "src": "2696:13:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 501, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2696:7:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 504, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 529, - "src": "2720:10:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 503, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "2720:5:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 506, - "name": "operation", - "nodeType": "VariableDeclaration", - "scope": 529, - "src": "2741:24:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$29", - "typeString": "enum Enum.Operation" - }, - "typeName": { - "contractScope": null, - "id": 505, - "name": "Enum.Operation", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 29, - "src": "2741:14:4", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$29", - "typeString": "enum Enum.Operation" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 508, - "name": "nonce", - "nodeType": "VariableDeclaration", - "scope": 529, - "src": "2776:13:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 507, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2776:7:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "2665:130:4" - }, - "payable": false, - "returnParameters": { - "id": 512, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 511, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 529, - "src": "2841:7:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 510, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "2841:7:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "2840:9:4" - }, - "scope": 530, - "src": "2638:311:4", - "stateMutability": "view", - "superFunction": null, - "visibility": "public" - } - ], - "scope": 531, - "src": "281:2670:4" - } - ], - "src": "0:2952:4" - }, - "compiler": { - "name": "solc", - "version": "0.4.23+commit.124ca40d.Emscripten.clang" - }, - "networks": { - "4": { - "events": {}, - "links": {}, - "address": "0xa6f1efbaf462946058ef6086fd562f7ddaf84dda", - "transactionHash": "0xc96d3c71f8b88c6649e4b95ad2f30eadf63f8c4bd58da57a856a3b7931bbbf4f" - }, - "1525950336085": { - "events": {}, - "links": {}, - "address": "0x9327970e8e29e8dba16b28acb177906a92447a0c", - "transactionHash": "0x8b91e38b0bbafe43309aca9832bcd234b82d7ac9f81abe94891cd406a735549c" - }, - "1526283540628": { - "events": {}, - "links": {}, - "address": "0xf2eb76d41d54cc58f9a8e86e2b42d41ccd22a8fa", - "transactionHash": "0x8b91e38b0bbafe43309aca9832bcd234b82d7ac9f81abe94891cd406a735549c" - } - }, - "schemaVersion": "2.0.0", - "updatedAt": "2018-05-14T07:39:37.959Z" -} \ No newline at end of file diff --git a/safe-contracts/build/contracts/GnosisSafeTeamEdition.json b/safe-contracts/build/contracts/GnosisSafeTeamEdition.json index 738fc446..b58c25e2 100644 --- a/safe-contracts/build/contracts/GnosisSafeTeamEdition.json +++ b/safe-contracts/build/contracts/GnosisSafeTeamEdition.json @@ -171,7 +171,7 @@ "outputs": [ { "name": "", - "type": "bool" + "type": "uint256" } ], "payable": false, @@ -452,51 +452,51 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50612c1b806100206000396000f300608060405260043610610128576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063153414fa1461012a57806324cd131f146101d45780632b5000411461027e5780632f54bf6e14610344578063468721a71461039f578063610b5925146104575780637de7edef1461049a57806385e332cd146104dd57806386040aa9146105345780638cff6355146105a4578063a04222e1146105fb578063a09e89f5146106d4578063a0e67e2b1461073d578063a3f4df7e146107a9578063b2494df314610839578063b7f3358d146108a5578063b91a667f146108d5578063e009cfde14610925578063e318b52b14610988578063e52cb36a14610a0b578063e75235b814610a54578063ffa1ad7414610a85575b005b34801561013657600080fd5b506101d2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919080359060200190929190505050610b15565b005b3480156101e057600080fd5b5061027c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919080359060200190929190505050610cca565b005b34801561028a57600080fd5b50610326600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919080359060200190929190505050610d6d565b60405180826000191660001916815260200191505060405180910390f35b34801561035057600080fd5b50610385600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f89565b604051808215151515815260200191505060405180910390f35b3480156103ab57600080fd5b5061043d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919050505061100b565b604051808215151515815260200191505060405180910390f35b34801561046357600080fd5b50610498600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506110a8565b005b3480156104a657600080fd5b506104db600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611325565b005b3480156104e957600080fd5b506104f26113c8565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561054057600080fd5b506105a2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff1690602001909291905050506113cd565b005b3480156105b057600080fd5b506105b9611653565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561060757600080fd5b506106d260048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803560ff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050611658565b005b3480156106e057600080fd5b506107236004803603810190808035600019169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611672565b604051808215151515815260200191505060405180910390f35b34801561074957600080fd5b506107526116a1565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561079557808201518184015260208101905061077a565b505050509050019250505060405180910390f35b3480156107b557600080fd5b506107be61183c565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156107fe5780820151818401526020810190506107e3565b50505050905090810190601f16801561082b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561084557600080fd5b5061084e611875565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610891578082015181840152602081019050610876565b505050509050019250505060405180910390f35b3480156108b157600080fd5b506108d3600480360381019080803560ff169060200190929190505050611b1c565b005b3480156108e157600080fd5b50610923600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050611b9b565b005b34801561093157600080fd5b50610986600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e53565b005b34801561099457600080fd5b50610a09600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612086565b005b348015610a1757600080fd5b50610a3a600480360381019080803560001916906020019092919050505061241b565b604051808215151515815260200191505060405180910390f35b348015610a6057600080fd5b50610a6961243b565b604051808260ff1660ff16815260200191505060405180910390f35b348015610a9157600080fd5b50610a9a612452565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610ada578082015181840152602081019050610abf565b50505050905090810190601f168015610b075780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b600080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151515610b9b57600080fd5b610ba88686868686610d6d565b905060056000826000191660001916815260200190815260200160002060009054906101000a900460ff16151515610bdf57600080fd5b60066000826000191660001916815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515610c5157600080fd5b600160066000836000191660001916815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050505050565b6000610cd98686868686610d6d565b905060056000826000191660001916815260200190815260200160002060009054906101000a900460ff16151515610d1057600080fd5b610d198161248b565b600160056000836000191660001916815260200190815260200160002060006101000a81548160ff021916908315150217905550610d5a868686865a6126e0565b1515610d6557600080fd5b505050505050565b600060197f01000000000000000000000000000000000000000000000000000000000000000260007f01000000000000000000000000000000000000000000000000000000000000000230888888888860405180897effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101887effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140185815260200184805190602001908083835b602083101515610f0e5780518252602082019150602081019050602083039250610ee9565b6001836020036101000a038019825116818451168082178552505050505050905001836002811115610f3c57fe5b60ff167f0100000000000000000000000000000000000000000000000000000000000000028152600101828152602001985050505050505050506040518091039020905095945050505050565b600080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600080600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415151561109157600080fd5b61109e858585855a6126e0565b9050949350505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156110e257600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141580156111365750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b151561114157600080fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156111c557600080fd5b60016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561135f57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561138557600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600181565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561140757600080fd5b8060ff166001600354031015151561141e57600080fd5b8173ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156114b757600080fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360008154809291906001900391905055508060ff16600460009054906101000a900460ff1660ff1614151561164e5761164d81611b1c565b5b505050565b600181565b61166284846127dd565b61166c8282612a6e565b50505050565b60066020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b6060806000806003546040519080825280602002602001820160405280156116d85781602001602082028038833980820191505090505b5092506000915060026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415156118335780838381518110151561178857fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508180600101925050611743565b82935050505090565b6040805190810160405280601881526020017f476e6f7369732053616665205465616d2045646974696f6e000000000000000081525081565b606060008060606000925060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151561198957600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915082806001019350506118e4565b826040519080825280602002602001820160405280156119b85781602001602082028038833980820191505090505b5090506000925060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515611b1357818184815181101515611a6857fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508280600101935050611a23565b80935050505090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611b5657600080fd5b6003548160ff1611151515611b6a57600080fd5b60018160ff1610151515611b7d57600080fd5b80600460006101000a81548160ff021916908360ff16021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611bd557600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff1614158015611c295750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1515611c3457600080fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611cb857600080fd5b60026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506003600081548092919060010191905055508060ff16600460009054906101000a900460ff1660ff16141515611e4f57611e4e81611b1c565b5b5050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611e8d57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611f2657600080fd5b600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156120c057600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141580156121145750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b151561211f57600080fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156121a357600080fd5b8173ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561223c57600080fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b60056020528060005260406000206000915054906101000a900460ff1681565b6000600460009054906101000a900460ff16905090565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b600080600080925060026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415156126b95760066000856000191660001916815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1690503373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806125cc5750805b1561265257801561264957600060066000866000191660001916815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b82806001019350505b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691506124f7565b600460009054906101000a900460ff1660ff1683101515156126da57600080fd5b50505050565b600080600060028111156126f057fe5b8460028111156126fc57fe5b14156127155761270e87878786612bad565b91506127d3565b6001600281111561272257fe5b84600281111561272e57fe5b14156127465761273f878685612bc6565b91506127d2565b61274f85612bdd565b905060008173ffffffffffffffffffffffffffffffffffffffff16141591507f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b5b5095945050505050565b600080600080600460009054906101000a900460ff1660ff1614151561280257600080fd5b84518460ff161115151561281557600080fd5b60018460ff161015151561282857600080fd5b60019250600091505b84518210156129c557848281518110151561284857fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff16141580156128a85750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b15156128b357600080fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561293757600080fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508092508180600101925050612831565b6001600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550845160038190555083600460006101000a81548160ff021916908360ff1602179055505050505050565b600060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612af357600080fd5b6001806000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008273ffffffffffffffffffffffffffffffffffffffff16141515612ba957612b9d82825a612bc6565b1515612ba857600080fd5b5b5050565b6000806000845160208601878987f19050949350505050565b60008060008451602086018786f490509392505050565b60008151602083016000f090509190505600a165627a7a72305820aa4f2f1bee5ca42e38a155540ac82e19af0bc412962c5bff72447a23481d2d090029", - "deployedBytecode": "0x608060405260043610610128576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063153414fa1461012a57806324cd131f146101d45780632b5000411461027e5780632f54bf6e14610344578063468721a71461039f578063610b5925146104575780637de7edef1461049a57806385e332cd146104dd57806386040aa9146105345780638cff6355146105a4578063a04222e1146105fb578063a09e89f5146106d4578063a0e67e2b1461073d578063a3f4df7e146107a9578063b2494df314610839578063b7f3358d146108a5578063b91a667f146108d5578063e009cfde14610925578063e318b52b14610988578063e52cb36a14610a0b578063e75235b814610a54578063ffa1ad7414610a85575b005b34801561013657600080fd5b506101d2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919080359060200190929190505050610b15565b005b3480156101e057600080fd5b5061027c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919080359060200190929190505050610cca565b005b34801561028a57600080fd5b50610326600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919080359060200190929190505050610d6d565b60405180826000191660001916815260200191505060405180910390f35b34801561035057600080fd5b50610385600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f89565b604051808215151515815260200191505060405180910390f35b3480156103ab57600080fd5b5061043d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919050505061100b565b604051808215151515815260200191505060405180910390f35b34801561046357600080fd5b50610498600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506110a8565b005b3480156104a657600080fd5b506104db600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611325565b005b3480156104e957600080fd5b506104f26113c8565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561054057600080fd5b506105a2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff1690602001909291905050506113cd565b005b3480156105b057600080fd5b506105b9611653565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561060757600080fd5b506106d260048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803560ff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050611658565b005b3480156106e057600080fd5b506107236004803603810190808035600019169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611672565b604051808215151515815260200191505060405180910390f35b34801561074957600080fd5b506107526116a1565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561079557808201518184015260208101905061077a565b505050509050019250505060405180910390f35b3480156107b557600080fd5b506107be61183c565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156107fe5780820151818401526020810190506107e3565b50505050905090810190601f16801561082b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561084557600080fd5b5061084e611875565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610891578082015181840152602081019050610876565b505050509050019250505060405180910390f35b3480156108b157600080fd5b506108d3600480360381019080803560ff169060200190929190505050611b1c565b005b3480156108e157600080fd5b50610923600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050611b9b565b005b34801561093157600080fd5b50610986600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e53565b005b34801561099457600080fd5b50610a09600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612086565b005b348015610a1757600080fd5b50610a3a600480360381019080803560001916906020019092919050505061241b565b604051808215151515815260200191505060405180910390f35b348015610a6057600080fd5b50610a6961243b565b604051808260ff1660ff16815260200191505060405180910390f35b348015610a9157600080fd5b50610a9a612452565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610ada578082015181840152602081019050610abf565b50505050905090810190601f168015610b075780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b600080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151515610b9b57600080fd5b610ba88686868686610d6d565b905060056000826000191660001916815260200190815260200160002060009054906101000a900460ff16151515610bdf57600080fd5b60066000826000191660001916815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515610c5157600080fd5b600160066000836000191660001916815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050505050565b6000610cd98686868686610d6d565b905060056000826000191660001916815260200190815260200160002060009054906101000a900460ff16151515610d1057600080fd5b610d198161248b565b600160056000836000191660001916815260200190815260200160002060006101000a81548160ff021916908315150217905550610d5a868686865a6126e0565b1515610d6557600080fd5b505050505050565b600060197f01000000000000000000000000000000000000000000000000000000000000000260007f01000000000000000000000000000000000000000000000000000000000000000230888888888860405180897effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101887effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140185815260200184805190602001908083835b602083101515610f0e5780518252602082019150602081019050602083039250610ee9565b6001836020036101000a038019825116818451168082178552505050505050905001836002811115610f3c57fe5b60ff167f0100000000000000000000000000000000000000000000000000000000000000028152600101828152602001985050505050505050506040518091039020905095945050505050565b600080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600080600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415151561109157600080fd5b61109e858585855a6126e0565b9050949350505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156110e257600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141580156111365750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b151561114157600080fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156111c557600080fd5b60016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561135f57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561138557600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600181565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561140757600080fd5b8060ff166001600354031015151561141e57600080fd5b8173ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156114b757600080fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360008154809291906001900391905055508060ff16600460009054906101000a900460ff1660ff1614151561164e5761164d81611b1c565b5b505050565b600181565b61166284846127dd565b61166c8282612a6e565b50505050565b60066020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b6060806000806003546040519080825280602002602001820160405280156116d85781602001602082028038833980820191505090505b5092506000915060026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415156118335780838381518110151561178857fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508180600101925050611743565b82935050505090565b6040805190810160405280601881526020017f476e6f7369732053616665205465616d2045646974696f6e000000000000000081525081565b606060008060606000925060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151561198957600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915082806001019350506118e4565b826040519080825280602002602001820160405280156119b85781602001602082028038833980820191505090505b5090506000925060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515611b1357818184815181101515611a6857fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508280600101935050611a23565b80935050505090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611b5657600080fd5b6003548160ff1611151515611b6a57600080fd5b60018160ff1610151515611b7d57600080fd5b80600460006101000a81548160ff021916908360ff16021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611bd557600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff1614158015611c295750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1515611c3457600080fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611cb857600080fd5b60026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506003600081548092919060010191905055508060ff16600460009054906101000a900460ff1660ff16141515611e4f57611e4e81611b1c565b5b5050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611e8d57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611f2657600080fd5b600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156120c057600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141580156121145750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b151561211f57600080fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156121a357600080fd5b8173ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561223c57600080fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b60056020528060005260406000206000915054906101000a900460ff1681565b6000600460009054906101000a900460ff16905090565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b600080600080925060026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415156126b95760066000856000191660001916815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1690503373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806125cc5750805b1561265257801561264957600060066000866000191660001916815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b82806001019350505b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691506124f7565b600460009054906101000a900460ff1660ff1683101515156126da57600080fd5b50505050565b600080600060028111156126f057fe5b8460028111156126fc57fe5b14156127155761270e87878786612bad565b91506127d3565b6001600281111561272257fe5b84600281111561272e57fe5b14156127465761273f878685612bc6565b91506127d2565b61274f85612bdd565b905060008173ffffffffffffffffffffffffffffffffffffffff16141591507f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b5b5095945050505050565b600080600080600460009054906101000a900460ff1660ff1614151561280257600080fd5b84518460ff161115151561281557600080fd5b60018460ff161015151561282857600080fd5b60019250600091505b84518210156129c557848281518110151561284857fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff16141580156128a85750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b15156128b357600080fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561293757600080fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508092508180600101925050612831565b6001600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550845160038190555083600460006101000a81548160ff021916908360ff1602179055505050505050565b600060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612af357600080fd5b6001806000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008273ffffffffffffffffffffffffffffffffffffffff16141515612ba957612b9d82825a612bc6565b1515612ba857600080fd5b5b5050565b6000806000845160208601878987f19050949350505050565b60008060008451602086018786f490509392505050565b60008151602083016000f090509190505600a165627a7a72305820aa4f2f1bee5ca42e38a155540ac82e19af0bc412962c5bff72447a23481d2d090029", - "sourceMap": "272:3870:3:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;272:3870:3;;;;;;;", - "deployedSourceMap": "272:3870:3:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1175:695;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1175:695:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2312:542;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2312:542:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3829:311;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3829:311:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4841:129:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4841:129:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2522:377:6;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2522:377:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1235:391;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1235:391:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;626:208:4;;8:9:-1;5:2;;;30:1;27;20:12;5:2;626:208:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;499:55:6;;8:9:-1;5:2;;;30:1;27;20:12;5:2;499:55:6;;;;;;;;;;;;;;;;;;;;;;;;;;;2776:573:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2776:573:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;287:54;;8:9:-1;5:2;;;30:1;27;20:12;5:2;287:54:7;;;;;;;;;;;;;;;;;;;;;;;;;;;693:301:1;;8:9:-1;5:2;;;30:1;27;20:12;5:2;693:301:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;682:63:3;;8:9:-1;5:2;;;30:1;27;20:12;5:2;682:63:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5052:458:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5052:458:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;5052:458:7;;;;;;;;;;;;;;;;;336:56:3;;8:9:-1;5:2;;;30:1;27;20:12;5:2;336:56:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;336:56:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4423:738:6;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4423:738:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;4423:738:6;;;;;;;;;;;;;;;;;4398:318:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4398:318:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;1906:528;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1906:528:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1887:299:6;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1887:299:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3683:526:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3683:526:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;536:43:3;;8:9:-1;5:2;;;30:1;27;20:12;5:2;536:43:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4722:113:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4722:113:7;;;;;;;;;;;;;;;;;;;;;;;;;;;398:40:3;;8:9:-1;5:2;;;30:1;27;20:12;5:2;398:40:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;398:40:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1175:695;1560:23;1476:1;1454:6;:18;1461:10;1454:18;;;;;;;;;;;;;;;;;;;;;;;;;:23;;;;1446:32;;;;;;;;1586:53;1605:2;1609:5;1616:4;1622:9;1633:5;1586:18;:53::i;:::-;1560:79;;1658:10;:27;1669:15;1658:27;;;;;;;;;;;;;;;;;;;;;;;;;;;1657:28;1649:37;;;;;;;;1767:10;:27;1778:15;1767:27;;;;;;;;;;;;;;;;;:39;1795:10;1767:39;;;;;;;;;;;;;;;;;;;;;;;;;1766:40;1758:49;;;;;;;;1859:4;1817:10;:27;1828:15;1817:27;;;;;;;;;;;;;;;;;:39;1845:10;1817:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;1175:695;;;;;;:::o;2312:542::-;2506:23;2532:53;2551:2;2555:5;2562:4;2568:9;2579:5;2532:18;:53::i;:::-;2506:79;;2604:10;:27;2615:15;2604:27;;;;;;;;;;;;;;;;;;;;;;;;;;;2603:28;2595:37;;;;;;;;2642:43;2669:15;2642:26;:43::i;:::-;2778:4;2748:10;:27;2759:15;2748:27;;;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;2800:46;2808:2;2812:5;2819:4;2825:9;2836;2800:7;:46::i;:::-;2792:55;;;;;;;;2312:542;;;;;;:::o;3829:311::-;4032:7;4077:4;4072:10;;4089:1;4084:7;;4093:4;4099:2;4103:5;4110:4;4116:9;4127:5;4062:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;;;4062:71:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4055:78;;3829:311;;;;;;;:::o;4841:129:7:-;4918:4;4962:1;4945:6;:13;4952:5;4945:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;;4938:25;;4841:129;;;:::o;2522:377:6:-;2654:12;2762:1;2739:7;:19;2747:10;2739:19;;;;;;;;;;;;;;;;;;;;;;;;;:24;;;;2731:33;;;;;;;;2846:46;2854:2;2858:5;2865:4;2871:9;2882;2846:7;:46::i;:::-;2836:56;;2522:377;;;;;;:::o;1235:391::-;244:4:8;222:27;;:10;:27;;;214:36;;;;;;;;1401:1:6;1390:6;1382:20;;;;:59;;;;;550:3;1406:35;;1414:6;1406:35;;;;1382:59;1374:68;;;;;;;;1520:1;1501:7;:15;1509:6;1501:15;;;;;;;;;;;;;;;;;;;;;;;;;:20;;;1493:29;;;;;;;;1550:7;:25;550:3;1550:25;;;;;;;;;;;;;;;;;;;;;;;;;1532:7;:15;1540:6;1532:15;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;1613:6;1585:7;:25;550:3;1585:25;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;1235:391;:::o;626:208:4:-;244:4:8;222:27;;:10;:27;;;214:36;;;;;;;;791:1:4;776:11;:16;;;;768:25;;;;;;;;816:11;803:10;;:24;;;;;;;;;;;;;;;;;;626:208;:::o;499:55:6:-;550:3;499:55;:::o;2776:573:7:-;244:4:8;222:27;;:10;:27;;;214:36;;;;;;;;3000:10:7;2982:28;;2995:1;2982:10;;:14;:28;;2974:37;;;;;;;;3112:5;3091:26;;:6;:17;3098:9;3091:17;;;;;;;;;;;;;;;;;;;;;;;;;:26;;;3083:35;;;;;;;;3148:6;:13;3155:5;3148:13;;;;;;;;;;;;;;;;;;;;;;;;;3128:6;:17;3135:9;3128:17;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;3187:1;3171:6;:13;3178:5;3171:13;;;;;;;;;;;;;;;;:17;;;;;;;;;;;;;;;;;;3198:10;;:12;;;;;;;;;;;;;;3291:10;3278:23;;:9;;;;;;;;;;;:23;;;;3274:68;;;3315:27;3331:10;3315:15;:27::i;:::-;3274:68;2776:573;;;:::o;287:54::-;337:3;287:54;:::o;693:301:1:-;798:32;810:7;819:10;798:11;:32::i;:::-;965:22;978:2;982:4;965:12;:22::i;:::-;693:301;;;;:::o;682:63:3:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5052:458:7:-;5118:9;5143:22;5237:13;5264:20;5182:10;;5168:25;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;5168:25:7;;;;5143:50;;5253:1;5237:17;;5287:6;:23;337:3;5287:23;;;;;;;;;;;;;;;;;;;;;;;;;5264:46;;5320:162;337:3;5326:31;;:12;:31;;;;5320:162;;;5388:12;5373:5;5379;5373:12;;;;;;;;;;;;;;;;;:27;;;;;;;;;;;5429:6;:20;5436:12;5429:20;;;;;;;;;;;;;;;;;;;;;;;;;5414:35;;5463:8;;;;;;;5320:162;;;5498:5;5491:12;;5052:458;;;;:::o;336:56:3:-;;;;;;;;;;;;;;;;;;;;:::o;4423:738:6:-;4490:9;4549:19;4582:21;4782:22;4571:1;4549:23;;4606:7;:25;550:3;4606:25;;;;;;;;;;;;;;;;;;;;;;;;;4582:49;;4641:132;550:3;4647:33;;:13;:33;;;;4641:132;;;4712:7;:22;4720:13;4712:22;;;;;;;;;;;;;;;;;;;;;;;;;4696:38;;4748:14;;;;;;;4641:132;;;4821:11;4807:26;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;4807:26:6;;;;4782:51;;4891:1;4877:15;;4918:7;:25;550:3;4918:25;;;;;;;;;;;;;;;;;;;;;;;;;4902:41;;4953:180;550:3;4959:33;;:13;:33;;;;4953:180;;;5029:13;5008:5;5014:11;5008:18;;;;;;;;;;;;;;;;;:34;;;;;;;;;;;5072:7;:22;5080:13;5072:22;;;;;;;;;;;;;;;;;;;;;;;;;5056:38;;5108:14;;;;;;;4953:180;;;5149:5;5142:12;;4423:738;;;;:::o;4398:318:7:-;244:4:8;222:27;;:10;:27;;;214:36;;;;;;;;4580:10:7;;4566;:24;;;;4558:33;;;;;;;;4675:1;4661:10;:15;;;;4653:24;;;;;;;;4699:10;4687:9;;:22;;;;;;;;;;;;;;;;;;4398:318;:::o;1906:528::-;244:4:8;222:27;;:10;:27;;;214:36;;;;;;;;2076:1:7;2067:5;:10;;;;:38;;;;;337:3;2081:24;;:5;:24;;;;2067:38;2059:47;;;;;;;;2181:1;2164:6;:13;2171:5;2164:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;2156:27;;;;;;;;2209:6;:23;337:3;2209:23;;;;;;;;;;;;;;;;;;;;;;;;;2193:6;:13;2200:5;2193:13;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;2268:5;2242:6;:23;337:3;2242:23;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;2283:10;;:12;;;;;;;;;;;;;2376:10;2363:23;;:9;;;;;;;;;;;:23;;;;2359:68;;;2400:27;2416:10;2400:15;:27::i;:::-;2359:68;1906:528;;:::o;1887:299:6:-;244:4:8;222:27;;:10;:27;;;214:36;;;;;;;;2095:6:6;2064:38;;:7;:19;2072:10;2064:19;;;;;;;;;;;;;;;;;;;;;;;;;:38;;;2056:47;;;;;;;;2135:7;:15;2143:6;2135:15;;;;;;;;;;;;;;;;;;;;;;;;;2113:7;:19;2121:10;2113:19;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;2178:1;2160:7;:15;2168:6;2160:15;;;;;;;;;;;;;;;;:19;;;;;;;;;;;;;;;;;;1887:299;;:::o;3683:526:7:-;244:4:8;222:27;;:10;:27;;;214:36;;;;;;;;3866:1:7;3854:8;:13;;;;:44;;;;;337:3;3871:27;;:8;:27;;;;3854:44;3846:53;;;;;;;;3977:1;3957:6;:16;3964:8;3957:16;;;;;;;;;;;;;;;;;;;;;;;;;:21;;;3949:30;;;;;;;;4080:8;4059:29;;:6;:17;4066:9;4059:17;;;;;;;;;;;;;;;;;;;;;;;;;:29;;;4051:38;;;;;;;;4118:6;:16;4125:8;4118:16;;;;;;;;;;;;;;;;;;;;;;;;;4099:6;:16;4106:8;4099:16;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;4164:8;4144:6;:17;4151:9;4144:17;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;4201:1;4182:6;:16;4189:8;4182:16;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;3683:526;;;:::o;536:43:3:-;;;;;;;;;;;;;;;;;;;;;;:::o;4722:113:7:-;4791:5;4819:9;;;;;;;;;;;4812:16;;4722:113;:::o;398:40:3:-;;;;;;;;;;;;;;;;;;;;:::o;2860:691::-;2952:21;3029:20;3139:19;2976:1;2952:25;;3052:6;:23;337:3:7;3052:23:3;;;;;;;;;;;;;;;;;;;;;;;;;3029:46;;3085:415;337:3:7;3092:31:3;;:12;:31;;;;3085:415;;;3161:10;:27;3172:15;3161:27;;;;;;;;;;;;;;;;;:41;3189:12;3161:41;;;;;;;;;;;;;;;;;;;;;;;;;3139:63;;3235:10;3219:26;;:12;:26;;;:44;;;;3249:14;3219:44;3216:225;;;3287:14;3283:110;;;3369:5;3325:10;:27;3336:15;3325:27;;;;;;;;;;;;;;;;;:41;3353:12;3325:41;;;;;;;;;;;;;;;;:49;;;;;;;;;;;;;;;;;;3283:110;3410:16;;;;;;;3216:225;3469:6;:20;3476:12;3469:20;;;;;;;;;;;;;;;;;;;;;;;;;3454:35;;3085:415;;;3534:9;;;;;;;;;;;3517:26;;:13;:26;;3509:35;;;;;;;;2860:691;;;;:::o;2905:548:6:-;3036:12;3307:19;3081;3068:32;;;;;;;;:9;:32;;;;;;;;;3064:383;;;3124:35;3136:2;3140:5;3147:4;3153:5;3124:11;:35::i;:::-;3114:45;;3064:383;;;3191:27;3178:40;;;;;;;;:9;:40;;;;;;;;;3174:273;;;3242:36;3262:2;3266:4;3272:5;3242:19;:36::i;:::-;3232:46;;3174:273;;;3329:19;3343:4;3329:13;:19::i;:::-;3307:41;;3387:1;3372:11;:16;;;;3362:26;;3407:29;3424:11;3407:29;;;;;;;;;;;;;;;;;;;;;;3174:273;3064:383;2905:548;;;;;;;;:::o;641:1025:7:-;1132:20;1185:9;1284:13;875:1;862:9;;;;;;;;;;;:14;;;854:23;;;;;;;;984:7;:14;970:10;:28;;;;962:37;;;;;;;;1083:1;1069:10;:15;;;;1061:24;;;;;;;;337:3;1132:38;;1197:1;1185:13;;1180:363;1204:7;:14;1200:1;:18;1180:363;;;1300:7;1308:1;1300:10;;;;;;;;;;;;;;;;;;1284:26;;1341:1;1332:5;:10;;;;:38;;;;;337:3;1346:24;;:5;:24;;;;1332:38;1324:47;;;;;;;;1454:1;1437:6;:13;1444:5;1437:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;1429:27;;;;;;;;1493:5;1470:6;:20;1477:12;1470:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;1527:5;1512:20;;1220:3;;;;;;;1180:363;;;337:3;1552:6;:20;1559:12;1552:20;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;1613:7;:14;1600:10;:27;;;;1649:10;1637:9;;:22;;;;;;;;;;;;;;;;;;641:1025;;;;;:::o;735:333:6:-;849:1;820:7;:25;550:3;820:25;;;;;;;;;;;;;;;;;;;;;;;;;:30;;;812:39;;;;;;;;550:3;861:7;:25;550:3;861:25;;;;;;;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;925:1;919:2;:7;;;;915:146;;;1020:40;1040:2;1044:4;1050:9;1020:19;:40::i;:::-;1012:49;;;;;;;;915:146;735:333;;:::o;3459:309::-;3568:12;3750:1;3747;3740:4;3734:11;3727:4;3721;3717:15;3710:5;3706:2;3699:5;3694:58;3683:69;;3669:93;;;;;;:::o;3774:303::-;3876:12;4059:1;4056;4049:4;4043:11;4036:4;4030;4026:15;4022:2;4015:5;4002:59;3991:70;;3977:94;;;;;:::o;4083:261::-;4152:19;4322:4;4316:11;4309:4;4303;4299:15;4296:1;4289:39;4274:54;;4260:78;;;:::o", - "source": "pragma solidity 0.4.23;\nimport \"./GnosisSafe.sol\";\nimport \"./MasterCopy.sol\";\n\n\n/// @title Gnosis Safe Team Edition - A multisignature wallet with support for confirmations.\n/// @author Stefan George - \n/// @author Richard Meissner - \ncontract GnosisSafeTeamEdition is MasterCopy, GnosisSafe {\n\n string public constant NAME = \"Gnosis Safe Team Edition\";\n string public constant VERSION = \"0.0.1\";\n\n // isExecuted mapping allows to check if a transaction (by hash) was already executed.\n mapping (bytes32 => bool) public isExecuted;\n\n // isApproved mapping allows to check if a transaction (by hash) was confirmed by an owner.\n mapping (bytes32 => mapping(address => bool)) public isApproved;\n\n /// @dev Allows to confirm a Safe transaction with a regular transaction.\n /// This can only be done from an owner address.\n /// @param to Destination address of Safe transaction.\n /// @param value Ether value of Safe transaction.\n /// @param data Data payload of Safe transaction.\n /// @param operation Operation type of Safe transaction.\n /// @param nonce Nonce used for this Safe transaction.\n function approveTransactionWithParameters(\n address to, \n uint256 value, \n bytes data, \n Enum.Operation operation, \n uint256 nonce\n )\n public\n {\n // Only Safe owners are allowed to confirm Safe transactions.\n require(owners[msg.sender] != 0);\n // It should not be possible to confirm an executed transaction\n bytes32 transactionHash = getTransactionHash(to, value, data, operation, nonce);\n require(!isExecuted[transactionHash]);\n // It is only possible to confirm a transaction once.\n require(!isApproved[transactionHash][msg.sender]);\n isApproved[transactionHash][msg.sender] = true;\n }\n\n /// @dev Allows to execute a Safe transaction confirmed by required number of owners. If the sender is an owner this is automatically confirmed.\n /// @param to Destination address of Safe transaction.\n /// @param value Ether value of Safe transaction.\n /// @param data Data payload of Safe transaction.\n /// @param operation Operation type of Safe transaction.\n /// @param nonce Nonce used for this Safe transaction.\n function execTransactionIfApproved(\n address to, \n uint256 value, \n bytes data, \n Enum.Operation operation, \n uint256 nonce\n )\n public\n {\n bytes32 transactionHash = getTransactionHash(to, value, data, operation, nonce);\n require(!isExecuted[transactionHash]);\n checkAndClearConfirmations(transactionHash);\n // Mark as executed and execute transaction.\n isExecuted[transactionHash] = true;\n require(execute(to, value, data, operation, gasleft()));\n }\n\n function checkAndClearConfirmations(bytes32 transactionHash)\n internal\n {\n uint256 confirmations = 0;\n // Validate threshold is reached.\n address currentOwner = owners[SENTINEL_OWNERS];\n while (currentOwner != SENTINEL_OWNERS) {\n bool ownerConfirmed = isApproved[transactionHash][currentOwner];\n if(currentOwner == msg.sender || ownerConfirmed) {\n if (ownerConfirmed) {\n isApproved[transactionHash][currentOwner] = false;\n }\n confirmations ++;\n }\n currentOwner = owners[currentOwner];\n }\n require(confirmations >= threshold);\n }\n\n /// @dev Returns hash to be signed by owners.\n /// @param to Destination address.\n /// @param value Ether value.\n /// @param data Data payload.\n /// @param operation Operation type.\n /// @param nonce Transaction nonce.\n /// @return Transaction hash.\n function getTransactionHash(\n address to, \n uint256 value, \n bytes data, \n Enum.Operation operation, \n uint256 nonce\n )\n public\n view\n returns (bytes32)\n {\n return keccak256(byte(0x19), byte(0), this, to, value, data, operation, nonce);\n }\n}\n", + "bytecode": "0x608060405234801561001057600080fd5b50612bc4806100206000396000f300608060405260043610610128576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063153414fa1461012a57806324cd131f146101d45780632b5000411461027e5780632f54bf6e14610344578063468721a71461039f578063610b5925146104575780637de7edef1461049a57806385e332cd146104dd57806386040aa9146105345780638cff6355146105a4578063a04222e1146105fb578063a09e89f5146106d4578063a0e67e2b14610739578063a3f4df7e146107a5578063b2494df314610835578063b7f3358d146108a1578063b91a667f146108d1578063e009cfde14610921578063e318b52b14610984578063e52cb36a14610a07578063e75235b814610a50578063ffa1ad7414610a81575b005b34801561013657600080fd5b506101d2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919080359060200190929190505050610b11565b005b3480156101e057600080fd5b5061027c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919080359060200190929190505050610c41565b005b34801561028a57600080fd5b50610326600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919080359060200190929190505050610ce4565b60405180826000191660001916815260200191505060405180910390f35b34801561035057600080fd5b50610385600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f6c565b604051808215151515815260200191505060405180910390f35b3480156103ab57600080fd5b5061043d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190505050610fee565b604051808215151515815260200191505060405180910390f35b34801561046357600080fd5b50610498600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061108b565b005b3480156104a657600080fd5b506104db600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611308565b005b3480156104e957600080fd5b506104f26113ab565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561054057600080fd5b506105a2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff1690602001909291905050506113b0565b005b3480156105b057600080fd5b506105b9611636565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561060757600080fd5b506106d260048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803560ff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505061163b565b005b3480156106e057600080fd5b506107236004803603810190808035600019169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611655565b6040518082815260200191505060405180910390f35b34801561074557600080fd5b5061074e61167a565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610791578082015181840152602081019050610776565b505050509050019250505060405180910390f35b3480156107b157600080fd5b506107ba611815565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156107fa5780820151818401526020810190506107df565b50505050905090810190601f1680156108275780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561084157600080fd5b5061084a61184e565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561088d578082015181840152602081019050610872565b505050509050019250505060405180910390f35b3480156108ad57600080fd5b506108cf600480360381019080803560ff169060200190929190505050611af5565b005b3480156108dd57600080fd5b5061091f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050611b74565b005b34801561092d57600080fd5b50610982600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e2c565b005b34801561099057600080fd5b50610a05600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061205f565b005b348015610a1357600080fd5b50610a3660048036038101908080356000191690602001909291905050506123f4565b604051808215151515815260200191505060405180910390f35b348015610a5c57600080fd5b50610a65612414565b604051808260ff1660ff16815260200191505060405180910390f35b348015610a8d57600080fd5b50610a9661242b565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610ad6578082015181840152602081019050610abb565b50505050905090810190601f168015610b035780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b600080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151515610b9757600080fd5b610ba48686868686610ce4565b905060056000826000191660001916815260200190815260200160002060009054906101000a900460ff16151515610bdb57600080fd5b600160066000836000191660001916815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050505050565b6000610c508686868686610ce4565b905060056000826000191660001916815260200190815260200160002060009054906101000a900460ff16151515610c8757600080fd5b610c9081612464565b600160056000836000191660001916815260200190815260200160002060006101000a81548160ff021916908315150217905550610cd1868686865a612689565b1515610cdc57600080fd5b505050505050565b600060197f01000000000000000000000000000000000000000000000000000000000000000260007f01000000000000000000000000000000000000000000000000000000000000000230888888888860405160200180897effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101887effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140185815260200184805190602001908083835b602083101515610e885780518252602082019150602081019050602083039250610e63565b6001836020036101000a038019825116818451168082178552505050505050905001836002811115610eb657fe5b60ff167f0100000000000000000000000000000000000000000000000000000000000000028152600101828152602001985050505050505050506040516020818303038152906040526040518082805190602001908083835b602083101515610f345780518252602082019150602081019050602083039250610f0f565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020905095945050505050565b600080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600080600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415151561107457600080fd5b611081858585855a612689565b9050949350505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156110c557600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141580156111195750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b151561112457600080fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156111a857600080fd5b60016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561134257600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561136857600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600181565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156113ea57600080fd5b8060ff166001600354031015151561140157600080fd5b8173ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561149a57600080fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360008154809291906001900391905055508060ff16600460009054906101000a900460ff1660ff161415156116315761163081611af5565b5b505050565b600181565b6116458484612786565b61164f8282612a17565b50505050565b6006602052816000526040600020602052806000526040600020600091509150505481565b6060806000806003546040519080825280602002602001820160405280156116b15781602001602082028038833980820191505090505b5092506000915060026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151561180c5780838381518110151561176157fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050818060010192505061171c565b82935050505090565b6040805190810160405280601881526020017f476e6f7369732053616665205465616d2045646974696f6e000000000000000081525081565b606060008060606000925060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151561196257600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915082806001019350506118bd565b826040519080825280602002602001820160405280156119915781602001602082028038833980820191505090505b5090506000925060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515611aec57818184815181101515611a4157fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915082806001019350506119fc565b80935050505090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611b2f57600080fd5b6003548160ff1611151515611b4357600080fd5b60018160ff1610151515611b5657600080fd5b80600460006101000a81548160ff021916908360ff16021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611bae57600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff1614158015611c025750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1515611c0d57600080fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611c9157600080fd5b60026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506003600081548092919060010191905055508060ff16600460009054906101000a900460ff1660ff16141515611e2857611e2781611af5565b5b5050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611e6657600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611eff57600080fd5b600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561209957600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141580156120ed5750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b15156120f857600080fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561217c57600080fd5b8173ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561221557600080fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b60056020528060005260406000206000915054906101000a900460ff1681565b6000600460009054906101000a900460ff16905090565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b60008060008060066000866000191660001916815260200190815260200160002093506000925060026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415156126615760008460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054141590503373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806125a15750805b156125fa5780156125f15760008460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b82806001019350505b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691506124ef565b600460009054906101000a900460ff1660ff16831015151561268257600080fd5b5050505050565b6000806000600281111561269957fe5b8460028111156126a557fe5b14156126be576126b787878786612b56565b915061277c565b600160028111156126cb57fe5b8460028111156126d757fe5b14156126ef576126e8878685612b6f565b915061277b565b6126f885612b86565b905060008173ffffffffffffffffffffffffffffffffffffffff16141591507f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b5b5095945050505050565b600080600080600460009054906101000a900460ff1660ff161415156127ab57600080fd5b84518460ff16111515156127be57600080fd5b60018460ff16101515156127d157600080fd5b60019250600091505b845182101561296e5784828151811015156127f157fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff16141580156128515750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b151561285c57600080fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156128e057600080fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080925081806001019250506127da565b6001600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550845160038190555083600460006101000a81548160ff021916908360ff1602179055505050505050565b600060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612a9c57600080fd5b6001806000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008273ffffffffffffffffffffffffffffffffffffffff16141515612b5257612b4682825a612b6f565b1515612b5157600080fd5b5b5050565b6000806000845160208601878987f19050949350505050565b60008060008451602086018786f490509392505050565b60008151602083016000f090509190505600a165627a7a72305820126f5071abe6229c4f90c0e3e3e154b02acfdfd4934694c5270a471081c34f5f0029", + "deployedBytecode": "0x608060405260043610610128576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063153414fa1461012a57806324cd131f146101d45780632b5000411461027e5780632f54bf6e14610344578063468721a71461039f578063610b5925146104575780637de7edef1461049a57806385e332cd146104dd57806386040aa9146105345780638cff6355146105a4578063a04222e1146105fb578063a09e89f5146106d4578063a0e67e2b14610739578063a3f4df7e146107a5578063b2494df314610835578063b7f3358d146108a1578063b91a667f146108d1578063e009cfde14610921578063e318b52b14610984578063e52cb36a14610a07578063e75235b814610a50578063ffa1ad7414610a81575b005b34801561013657600080fd5b506101d2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919080359060200190929190505050610b11565b005b3480156101e057600080fd5b5061027c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919080359060200190929190505050610c41565b005b34801561028a57600080fd5b50610326600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919080359060200190929190505050610ce4565b60405180826000191660001916815260200191505060405180910390f35b34801561035057600080fd5b50610385600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f6c565b604051808215151515815260200191505060405180910390f35b3480156103ab57600080fd5b5061043d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190505050610fee565b604051808215151515815260200191505060405180910390f35b34801561046357600080fd5b50610498600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061108b565b005b3480156104a657600080fd5b506104db600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611308565b005b3480156104e957600080fd5b506104f26113ab565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561054057600080fd5b506105a2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff1690602001909291905050506113b0565b005b3480156105b057600080fd5b506105b9611636565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561060757600080fd5b506106d260048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803560ff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505061163b565b005b3480156106e057600080fd5b506107236004803603810190808035600019169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611655565b6040518082815260200191505060405180910390f35b34801561074557600080fd5b5061074e61167a565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610791578082015181840152602081019050610776565b505050509050019250505060405180910390f35b3480156107b157600080fd5b506107ba611815565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156107fa5780820151818401526020810190506107df565b50505050905090810190601f1680156108275780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561084157600080fd5b5061084a61184e565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561088d578082015181840152602081019050610872565b505050509050019250505060405180910390f35b3480156108ad57600080fd5b506108cf600480360381019080803560ff169060200190929190505050611af5565b005b3480156108dd57600080fd5b5061091f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050611b74565b005b34801561092d57600080fd5b50610982600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e2c565b005b34801561099057600080fd5b50610a05600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061205f565b005b348015610a1357600080fd5b50610a3660048036038101908080356000191690602001909291905050506123f4565b604051808215151515815260200191505060405180910390f35b348015610a5c57600080fd5b50610a65612414565b604051808260ff1660ff16815260200191505060405180910390f35b348015610a8d57600080fd5b50610a9661242b565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610ad6578082015181840152602081019050610abb565b50505050905090810190601f168015610b035780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b600080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151515610b9757600080fd5b610ba48686868686610ce4565b905060056000826000191660001916815260200190815260200160002060009054906101000a900460ff16151515610bdb57600080fd5b600160066000836000191660001916815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050505050565b6000610c508686868686610ce4565b905060056000826000191660001916815260200190815260200160002060009054906101000a900460ff16151515610c8757600080fd5b610c9081612464565b600160056000836000191660001916815260200190815260200160002060006101000a81548160ff021916908315150217905550610cd1868686865a612689565b1515610cdc57600080fd5b505050505050565b600060197f01000000000000000000000000000000000000000000000000000000000000000260007f01000000000000000000000000000000000000000000000000000000000000000230888888888860405160200180897effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101887effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140185815260200184805190602001908083835b602083101515610e885780518252602082019150602081019050602083039250610e63565b6001836020036101000a038019825116818451168082178552505050505050905001836002811115610eb657fe5b60ff167f0100000000000000000000000000000000000000000000000000000000000000028152600101828152602001985050505050505050506040516020818303038152906040526040518082805190602001908083835b602083101515610f345780518252602082019150602081019050602083039250610f0f565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020905095945050505050565b600080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600080600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415151561107457600080fd5b611081858585855a612689565b9050949350505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156110c557600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141580156111195750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b151561112457600080fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156111a857600080fd5b60016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561134257600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561136857600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600181565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156113ea57600080fd5b8060ff166001600354031015151561140157600080fd5b8173ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561149a57600080fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360008154809291906001900391905055508060ff16600460009054906101000a900460ff1660ff161415156116315761163081611af5565b5b505050565b600181565b6116458484612786565b61164f8282612a17565b50505050565b6006602052816000526040600020602052806000526040600020600091509150505481565b6060806000806003546040519080825280602002602001820160405280156116b15781602001602082028038833980820191505090505b5092506000915060026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151561180c5780838381518110151561176157fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050818060010192505061171c565b82935050505090565b6040805190810160405280601881526020017f476e6f7369732053616665205465616d2045646974696f6e000000000000000081525081565b606060008060606000925060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151561196257600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915082806001019350506118bd565b826040519080825280602002602001820160405280156119915781602001602082028038833980820191505090505b5090506000925060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515611aec57818184815181101515611a4157fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915082806001019350506119fc565b80935050505090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611b2f57600080fd5b6003548160ff1611151515611b4357600080fd5b60018160ff1610151515611b5657600080fd5b80600460006101000a81548160ff021916908360ff16021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611bae57600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff1614158015611c025750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1515611c0d57600080fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611c9157600080fd5b60026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506003600081548092919060010191905055508060ff16600460009054906101000a900460ff1660ff16141515611e2857611e2781611af5565b5b5050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611e6657600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611eff57600080fd5b600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561209957600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141580156120ed5750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b15156120f857600080fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561217c57600080fd5b8173ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561221557600080fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b60056020528060005260406000206000915054906101000a900460ff1681565b6000600460009054906101000a900460ff16905090565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b60008060008060066000866000191660001916815260200190815260200160002093506000925060026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415156126615760008460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054141590503373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806125a15750805b156125fa5780156125f15760008460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b82806001019350505b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691506124ef565b600460009054906101000a900460ff1660ff16831015151561268257600080fd5b5050505050565b6000806000600281111561269957fe5b8460028111156126a557fe5b14156126be576126b787878786612b56565b915061277c565b600160028111156126cb57fe5b8460028111156126d757fe5b14156126ef576126e8878685612b6f565b915061277b565b6126f885612b86565b905060008173ffffffffffffffffffffffffffffffffffffffff16141591507f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b5b5095945050505050565b600080600080600460009054906101000a900460ff1660ff161415156127ab57600080fd5b84518460ff16111515156127be57600080fd5b60018460ff16101515156127d157600080fd5b60019250600091505b845182101561296e5784828151811015156127f157fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff16141580156128515750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b151561285c57600080fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156128e057600080fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080925081806001019250506127da565b6001600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550845160038190555083600460006101000a81548160ff021916908360ff1602179055505050505050565b600060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612a9c57600080fd5b6001806000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008273ffffffffffffffffffffffffffffffffffffffff16141515612b5257612b4682825a612b6f565b1515612b5157600080fd5b5b5050565b6000806000845160208601878987f19050949350505050565b60008060008451602086018786f490509392505050565b60008151602083016000f090509190505600a165627a7a72305820126f5071abe6229c4f90c0e3e3e154b02acfdfd4934694c5270a471081c34f5f0029", + "sourceMap": "272:3894:4:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;272:3894:4;;;;;;;", + "deployedSourceMap": "272:3894:4:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1263:571;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1263:571:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2276:542;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2276:542:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3835:329;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3835:329:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4841:129:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4841:129:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2522:377:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2522:377:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1235:391;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1235:391:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;626:208:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;626:208:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;499:55:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;499:55:8;;;;;;;;;;;;;;;;;;;;;;;;;;;2776:573:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2776:573:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;287:54;;8:9:-1;5:2;;;30:1;27;20:12;5:2;287:54:9;;;;;;;;;;;;;;;;;;;;;;;;;;;693:301:2;;8:9:-1;5:2;;;30:1;27;20:12;5:2;693:301:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;767:66:4;;8:9:-1;5:2;;;30:1;27;20:12;5:2;767:66:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5052:458:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5052:458:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;5052:458:9;;;;;;;;;;;;;;;;;336:56:4;;8:9:-1;5:2;;;30:1;27;20:12;5:2;336:56:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;336:56:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4423:738:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4423:738:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;4423:738:8;;;;;;;;;;;;;;;;;4398:318:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4398:318:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;1906:528;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1906:528:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1887:299:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1887:299:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3683:526:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3683:526:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;536:43:4;;8:9:-1;5:2;;;30:1;27;20:12;5:2;536:43:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4722:113:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4722:113:9;;;;;;;;;;;;;;;;;;;;;;;;;;;398:40:4;;8:9:-1;5:2;;;30:1;27;20:12;5:2;398:40:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;398:40:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1263:571;1576:23;1564:1;1542:6;:18;1549:10;1542:18;;;;;;;;;;;;;;;;;;;;;;;;;:23;;;;1534:32;;;;;;;;1602:53;1621:2;1625:5;1632:4;1638:9;1649:5;1602:18;:53::i;:::-;1576:79;;1746:10;:27;1757:15;1746:27;;;;;;;;;;;;;;;;;;;;;;;;;;;1745:28;1737:37;;;;;;;;1826:1;1784:10;:27;1795:15;1784:27;;;;;;;;;;;;;;;;;:39;1812:10;1784:39;;;;;;;;;;;;;;;:43;;;;1263:571;;;;;;:::o;2276:542::-;2470:23;2496:53;2515:2;2519:5;2526:4;2532:9;2543:5;2496:18;:53::i;:::-;2470:79;;2568:10;:27;2579:15;2568:27;;;;;;;;;;;;;;;;;;;;;;;;;;;2567:28;2559:37;;;;;;;;2606:43;2633:15;2606:26;:43::i;:::-;2742:4;2712:10;:27;2723:15;2712:27;;;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;2764:46;2772:2;2776:5;2783:4;2789:9;2800;2764:7;:46::i;:::-;2756:55;;;;;;;;2276:542;;;;;;:::o;3835:329::-;4038:7;4100:4;4095:10;;4112:1;4107:7;;4116:4;4122:2;4126:5;4133:4;4139:9;4150:5;4078:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;;;4078:78:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;4078:78:4;;;4068:89;;;;;;;;;;;;;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;;;4068:89:4;;;;;;;;;;;;;;;;4061:96;;3835:329;;;;;;;:::o;4841:129:9:-;4918:4;4962:1;4945:6;:13;4952:5;4945:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;;4938:25;;4841:129;;;:::o;2522:377:8:-;2654:12;2762:1;2739:7;:19;2747:10;2739:19;;;;;;;;;;;;;;;;;;;;;;;;;:24;;;;2731:33;;;;;;;;2846:46;2854:2;2858:5;2865:4;2871:9;2882;2846:7;:46::i;:::-;2836:56;;2522:377;;;;;;:::o;1235:391::-;244:4:13;222:27;;:10;:27;;;214:36;;;;;;;;1401:1:8;1390:6;1382:20;;;;:59;;;;;550:3;1406:35;;1414:6;1406:35;;;;1382:59;1374:68;;;;;;;;1520:1;1501:7;:15;1509:6;1501:15;;;;;;;;;;;;;;;;;;;;;;;;;:20;;;1493:29;;;;;;;;1550:7;:25;550:3;1550:25;;;;;;;;;;;;;;;;;;;;;;;;;1532:7;:15;1540:6;1532:15;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;1613:6;1585:7;:25;550:3;1585:25;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;1235:391;:::o;626:208:5:-;244:4:13;222:27;;:10;:27;;;214:36;;;;;;;;791:1:5;776:11;:16;;;;768:25;;;;;;;;816:11;803:10;;:24;;;;;;;;;;;;;;;;;;626:208;:::o;499:55:8:-;550:3;499:55;:::o;2776:573:9:-;244:4:13;222:27;;:10;:27;;;214:36;;;;;;;;3000:10:9;2982:28;;2995:1;2982:10;;:14;:28;;2974:37;;;;;;;;3112:5;3091:26;;:6;:17;3098:9;3091:17;;;;;;;;;;;;;;;;;;;;;;;;;:26;;;3083:35;;;;;;;;3148:6;:13;3155:5;3148:13;;;;;;;;;;;;;;;;;;;;;;;;;3128:6;:17;3135:9;3128:17;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;3187:1;3171:6;:13;3178:5;3171:13;;;;;;;;;;;;;;;;:17;;;;;;;;;;;;;;;;;;3198:10;;:12;;;;;;;;;;;;;;3291:10;3278:23;;:9;;;;;;;;;;;:23;;;;3274:68;;;3315:27;3331:10;3315:15;:27::i;:::-;3274:68;2776:573;;;:::o;287:54::-;337:3;287:54;:::o;693:301:2:-;798:32;810:7;819:10;798:11;:32::i;:::-;965:22;978:2;982:4;965:12;:22::i;:::-;693:301;;;;:::o;767:66:4:-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5052:458:9:-;5118:9;5143:22;5237:13;5264:20;5182:10;;5168:25;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;5168:25:9;;;;5143:50;;5253:1;5237:17;;5287:6;:23;337:3;5287:23;;;;;;;;;;;;;;;;;;;;;;;;;5264:46;;5320:162;337:3;5326:31;;:12;:31;;;;5320:162;;;5388:12;5373:5;5379;5373:12;;;;;;;;;;;;;;;;;:27;;;;;;;;;;;5429:6;:20;5436:12;5429:20;;;;;;;;;;;;;;;;;;;;;;;;;5414:35;;5463:8;;;;;;;5320:162;;;5498:5;5491:12;;5052:458;;;;:::o;336:56:4:-;;;;;;;;;;;;;;;;;;;;:::o;4423:738:8:-;4490:9;4549:19;4582:21;4782:22;4571:1;4549:23;;4606:7;:25;550:3;4606:25;;;;;;;;;;;;;;;;;;;;;;;;;4582:49;;4641:132;550:3;4647:33;;:13;:33;;;;4641:132;;;4712:7;:22;4720:13;4712:22;;;;;;;;;;;;;;;;;;;;;;;;;4696:38;;4748:14;;;;;;;4641:132;;;4821:11;4807:26;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;4807:26:8;;;;4782:51;;4891:1;4877:15;;4918:7;:25;550:3;4918:25;;;;;;;;;;;;;;;;;;;;;;;;;4902:41;;4953:180;550:3;4959:33;;:13;:33;;;;4953:180;;;5029:13;5008:5;5014:11;5008:18;;;;;;;;;;;;;;;;;:34;;;;;;;;;;;5072:7;:22;5080:13;5072:22;;;;;;;;;;;;;;;;;;;;;;;;;5056:38;;5108:14;;;;;;;4953:180;;;5149:5;5142:12;;4423:738;;;;:::o;4398:318:9:-;244:4:13;222:27;;:10;:27;;;214:36;;;;;;;;4580:10:9;;4566;:24;;;;4558:33;;;;;;;;4675:1;4661:10;:15;;;;4653:24;;;;;;;;4699:10;4687:9;;:22;;;;;;;;;;;;;;;;;;4398:318;:::o;1906:528::-;244:4:13;222:27;;:10;:27;;;214:36;;;;;;;;2076:1:9;2067:5;:10;;;;:38;;;;;337:3;2081:24;;:5;:24;;;;2067:38;2059:47;;;;;;;;2181:1;2164:6;:13;2171:5;2164:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;2156:27;;;;;;;;2209:6;:23;337:3;2209:23;;;;;;;;;;;;;;;;;;;;;;;;;2193:6;:13;2200:5;2193:13;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;2268:5;2242:6;:23;337:3;2242:23;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;2283:10;;:12;;;;;;;;;;;;;2376:10;2363:23;;:9;;;;;;;;;;;:23;;;;2359:68;;;2400:27;2416:10;2400:15;:27::i;:::-;2359:68;1906:528;;:::o;1887:299:8:-;244:4:13;222:27;;:10;:27;;;214:36;;;;;;;;2095:6:8;2064:38;;:7;:19;2072:10;2064:19;;;;;;;;;;;;;;;;;;;;;;;;;:38;;;2056:47;;;;;;;;2135:7;:15;2143:6;2135:15;;;;;;;;;;;;;;;;;;;;;;;;;2113:7;:19;2121:10;2113:19;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;2178:1;2160:7;:15;2168:6;2160:15;;;;;;;;;;;;;;;;:19;;;;;;;;;;;;;;;;;;1887:299;;:::o;3683:526:9:-;244:4:13;222:27;;:10;:27;;;214:36;;;;;;;;3866:1:9;3854:8;:13;;;;:44;;;;;337:3;3871:27;;:8;:27;;;;3854:44;3846:53;;;;;;;;3977:1;3957:6;:16;3964:8;3957:16;;;;;;;;;;;;;;;;;;;;;;;;;:21;;;3949:30;;;;;;;;4080:8;4059:29;;:6;:17;4066:9;4059:17;;;;;;;;;;;;;;;;;;;;;;;;;:29;;;4051:38;;;;;;;;4118:6;:16;4125:8;4118:16;;;;;;;;;;;;;;;;;;;;;;;;;4099:6;:16;4106:8;4099:16;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;4164:8;4144:6;:17;4151:9;4144:17;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;4201:1;4182:6;:16;4189:8;4182:16;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;3683:526;;;:::o;536:43:4:-;;;;;;;;;;;;;;;;;;;;;;:::o;4722:113:9:-;4791:5;4819:9;;;;;;;;;;;4812:16;;4722:113;:::o;398:40:4:-;;;;;;;;;;;;;;;;;;;;:::o;2824:733::-;2916:37;2993:21;3070:20;3180:19;2956:10;:27;2967:15;2956:27;;;;;;;;;;;;;;;;;2916:67;;3017:1;2993:25;;3093:6;:23;337:3:9;3093:23:4;;;;;;;;;;;;;;;;;;;;;;;;;3070:46;;3126:380;337:3:9;3133:31:4;;:12;:31;;;;3126:380;;;3229:1;3202:9;:23;3212:12;3202:23;;;;;;;;;;;;;;;;:28;;3180:50;;3263:10;3247:26;;:12;:26;;;:44;;;;3277:14;3247:44;3244:203;;;3315:14;3311:88;;;3379:1;3353:9;:23;3363:12;3353:23;;;;;;;;;;;;;;;:27;;;;3311:88;3416:16;;;;;;;3244:203;3475:6;:20;3482:12;3475:20;;;;;;;;;;;;;;;;;;;;;;;;;3460:35;;3126:380;;;3540:9;;;;;;;;;;;3523:26;;:13;:26;;3515:35;;;;;;;;2824:733;;;;;:::o;2905:548:8:-;3036:12;3307:19;3081;3068:32;;;;;;;;:9;:32;;;;;;;;;3064:383;;;3124:35;3136:2;3140:5;3147:4;3153:5;3124:11;:35::i;:::-;3114:45;;3064:383;;;3191:27;3178:40;;;;;;;;:9;:40;;;;;;;;;3174:273;;;3242:36;3262:2;3266:4;3272:5;3242:19;:36::i;:::-;3232:46;;3174:273;;;3329:19;3343:4;3329:13;:19::i;:::-;3307:41;;3387:1;3372:11;:16;;;;3362:26;;3407:29;3424:11;3407:29;;;;;;;;;;;;;;;;;;;;;;3174:273;3064:383;2905:548;;;;;;;;:::o;641:1025:9:-;1132:20;1185:9;1284:13;875:1;862:9;;;;;;;;;;;:14;;;854:23;;;;;;;;984:7;:14;970:10;:28;;;;962:37;;;;;;;;1083:1;1069:10;:15;;;;1061:24;;;;;;;;337:3;1132:38;;1197:1;1185:13;;1180:363;1204:7;:14;1200:1;:18;1180:363;;;1300:7;1308:1;1300:10;;;;;;;;;;;;;;;;;;1284:26;;1341:1;1332:5;:10;;;;:38;;;;;337:3;1346:24;;:5;:24;;;;1332:38;1324:47;;;;;;;;1454:1;1437:6;:13;1444:5;1437:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;1429:27;;;;;;;;1493:5;1470:6;:20;1477:12;1470:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;1527:5;1512:20;;1220:3;;;;;;;1180:363;;;337:3;1552:6;:20;1559:12;1552:20;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;1613:7;:14;1600:10;:27;;;;1649:10;1637:9;;:22;;;;;;;;;;;;;;;;;;641:1025;;;;;:::o;735:333:8:-;849:1;820:7;:25;550:3;820:25;;;;;;;;;;;;;;;;;;;;;;;;;:30;;;812:39;;;;;;;;550:3;861:7;:25;550:3;861:25;;;;;;;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;925:1;919:2;:7;;;;915:146;;;1020:40;1040:2;1044:4;1050:9;1020:19;:40::i;:::-;1012:49;;;;;;;;915:146;735:333;;:::o;3459:309::-;3568:12;3750:1;3747;3740:4;3734:11;3727:4;3721;3717:15;3710:5;3706:2;3699:5;3694:58;3683:69;;3669:93;;;;;;:::o;3774:303::-;3876:12;4059:1;4056;4049:4;4043:11;4036:4;4030;4026:15;4022:2;4015:5;4002:59;3991:70;;3977:94;;;;;:::o;4083:261::-;4152:19;4322:4;4316:11;4309:4;4303;4299:15;4296:1;4289:39;4274:54;;4260:78;;;:::o", + "source": "pragma solidity 0.4.24;\nimport \"./GnosisSafe.sol\";\nimport \"./MasterCopy.sol\";\n\n\n/// @title Gnosis Safe Team Edition - A multisignature wallet with support for confirmations.\n/// @author Stefan George - \n/// @author Richard Meissner - \ncontract GnosisSafeTeamEdition is MasterCopy, GnosisSafe {\n\n string public constant NAME = \"Gnosis Safe Team Edition\";\n string public constant VERSION = \"0.0.1\";\n\n // isExecuted mapping allows to check if a transaction (by hash) was already executed.\n mapping (bytes32 => bool) public isExecuted;\n\n // isApproved mapping allows to check if a transaction (by hash) was confirmed by an owner.\n // uint256 is used to optimize the generated assembly. if 0 then false else true\n mapping (bytes32 => mapping(address => uint256)) public isApproved;\n\n /// @dev Allows to confirm a Safe transaction with a regular transaction.\n /// This can only be done from an owner address.\n /// @param to Destination address of Safe transaction.\n /// @param value Ether value of Safe transaction.\n /// @param data Data payload of Safe transaction.\n /// @param operation Operation type of Safe transaction.\n /// @param nonce Nonce used for this Safe transaction.\n function approveTransactionWithParameters(\n address to, \n uint256 value, \n bytes data, \n Enum.Operation operation, \n uint256 nonce\n )\n public\n {\n // Only Safe owners are allowed to confirm Safe transactions.\n require(owners[msg.sender] != 0);\n bytes32 transactionHash = getTransactionHash(to, value, data, operation, nonce);\n // It should not be possible to confirm an executed transaction\n require(!isExecuted[transactionHash]);\n isApproved[transactionHash][msg.sender] = 1;\n }\n\n /// @dev Allows to execute a Safe transaction confirmed by required number of owners. If the sender is an owner this is automatically confirmed.\n /// @param to Destination address of Safe transaction.\n /// @param value Ether value of Safe transaction.\n /// @param data Data payload of Safe transaction.\n /// @param operation Operation type of Safe transaction.\n /// @param nonce Nonce used for this Safe transaction.\n function execTransactionIfApproved(\n address to, \n uint256 value, \n bytes data, \n Enum.Operation operation, \n uint256 nonce\n )\n public\n {\n bytes32 transactionHash = getTransactionHash(to, value, data, operation, nonce);\n require(!isExecuted[transactionHash]);\n checkAndClearConfirmations(transactionHash);\n // Mark as executed and execute transaction.\n isExecuted[transactionHash] = true;\n require(execute(to, value, data, operation, gasleft()));\n }\n\n function checkAndClearConfirmations(bytes32 transactionHash)\n internal\n {\n mapping(address => uint256) approvals = isApproved[transactionHash];\n uint256 confirmations = 0;\n // Validate threshold is reached.\n address currentOwner = owners[SENTINEL_OWNERS];\n while (currentOwner != SENTINEL_OWNERS) {\n bool ownerConfirmed = approvals[currentOwner] != 0;\n if(currentOwner == msg.sender || ownerConfirmed) {\n if (ownerConfirmed) {\n approvals[currentOwner] = 0;\n }\n confirmations ++;\n }\n currentOwner = owners[currentOwner];\n }\n require(confirmations >= threshold);\n }\n\n /// @dev Returns hash to be signed by owners.\n /// @param to Destination address.\n /// @param value Ether value.\n /// @param data Data payload.\n /// @param operation Operation type.\n /// @param nonce Transaction nonce.\n /// @return Transaction hash.\n function getTransactionHash(\n address to, \n uint256 value, \n bytes data, \n Enum.Operation operation, \n uint256 nonce\n )\n public\n view\n returns (bytes32)\n {\n return keccak256(abi.encodePacked(byte(0x19), byte(0), this, to, value, data, operation, nonce));\n }\n}\n", "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafeTeamEdition.sol", "ast": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafeTeamEdition.sol", "exportedSymbols": { "GnosisSafeTeamEdition": [ - 554 + 626 ] }, - "id": 555, + "id": 627, "nodeType": "SourceUnit", "nodes": [ { - "id": 326, + "id": 399, "literals": [ "solidity", "0.4", - ".23" + ".24" ], "nodeType": "PragmaDirective", - "src": "0:23:3" + "src": "0:23:4" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafe.sol", "file": "./GnosisSafe.sol", - "id": 327, + "id": 400, "nodeType": "ImportDirective", - "scope": 555, - "sourceUnit": 40, - "src": "24:26:3", + "scope": 627, + "sourceUnit": 64, + "src": "24:26:4", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/MasterCopy.sol", "file": "./MasterCopy.sol", - "id": 328, + "id": 401, "nodeType": "ImportDirective", - "scope": 555, - "sourceUnit": 581, - "src": "51:26:3", + "scope": 627, + "sourceUnit": 653, + "src": "51:26:4", "symbolAliases": [], "unitAlias": "" }, @@ -506,68 +506,68 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 329, + "id": 402, "name": "MasterCopy", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 580, - "src": "306:10:3", + "referencedDeclaration": 652, + "src": "306:10:4", "typeDescriptions": { - "typeIdentifier": "t_contract$_MasterCopy_$580", + "typeIdentifier": "t_contract$_MasterCopy_$652", "typeString": "contract MasterCopy" } }, - "id": 330, + "id": 403, "nodeType": "InheritanceSpecifier", - "src": "306:10:3" + "src": "306:10:4" }, { "arguments": null, "baseName": { "contractScope": null, - "id": 331, + "id": 404, "name": "GnosisSafe", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 39, - "src": "318:10:3", + "referencedDeclaration": 63, + "src": "318:10:4", "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$39", + "typeIdentifier": "t_contract$_GnosisSafe_$63", "typeString": "contract GnosisSafe" } }, - "id": 332, + "id": 405, "nodeType": "InheritanceSpecifier", - "src": "318:10:3" + "src": "318:10:4" } ], "contractDependencies": [ - 39, - 580, - 971, - 1343, - 1359 + 63, + 652, + 1100, + 1472, + 1619 ], "contractKind": "contract", "documentation": "@title Gnosis Safe Team Edition - A multisignature wallet with support for confirmations.\n @author Stefan George - \n @author Richard Meissner - ", "fullyImplemented": true, - "id": 554, + "id": 626, "linearizedBaseContracts": [ - 554, - 39, - 1343, - 971, - 580, - 1359 + 626, + 63, + 1472, + 1100, + 652, + 1619 ], "name": "GnosisSafeTeamEdition", "nodeType": "ContractDefinition", "nodes": [ { "constant": true, - "id": 335, + "id": 408, "name": "NAME", "nodeType": "VariableDeclaration", - "scope": 554, - "src": "336:56:3", + "scope": 626, + "src": "336:56:4", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -575,10 +575,10 @@ "typeString": "string" }, "typeName": { - "id": 333, + "id": 406, "name": "string", "nodeType": "ElementaryTypeName", - "src": "336:6:3", + "src": "336:6:4", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -587,14 +587,14 @@ "value": { "argumentTypes": null, "hexValue": "476e6f7369732053616665205465616d2045646974696f6e", - "id": 334, + "id": 407, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "366:26:3", + "src": "366:26:4", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_69b1cb372bb47730ba653a0e87363aa6de8337d13ed5852e6fe3ba4e2004a81e", @@ -606,11 +606,11 @@ }, { "constant": true, - "id": 338, + "id": 411, "name": "VERSION", "nodeType": "VariableDeclaration", - "scope": 554, - "src": "398:40:3", + "scope": 626, + "src": "398:40:4", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -618,10 +618,10 @@ "typeString": "string" }, "typeName": { - "id": 336, + "id": 409, "name": "string", "nodeType": "ElementaryTypeName", - "src": "398:6:3", + "src": "398:6:4", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -630,14 +630,14 @@ "value": { "argumentTypes": null, "hexValue": "302e302e31", - "id": 337, + "id": 410, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "431:7:3", + "src": "431:7:4", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_ae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc199163811885", @@ -649,11 +649,11 @@ }, { "constant": false, - "id": 342, + "id": 415, "name": "isExecuted", "nodeType": "VariableDeclaration", - "scope": 554, - "src": "536:43:3", + "scope": 626, + "src": "536:43:4", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -661,28 +661,28 @@ "typeString": "mapping(bytes32 => bool)" }, "typeName": { - "id": 341, + "id": 414, "keyType": { - "id": 339, + "id": 412, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "545:7:3", + "src": "545:7:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "Mapping", - "src": "536:25:3", + "src": "536:25:4", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" }, "valueType": { - "id": 340, + "id": 413, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "556:4:3", + "src": "556:4:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -694,61 +694,61 @@ }, { "constant": false, - "id": 348, + "id": 421, "name": "isApproved", "nodeType": "VariableDeclaration", - "scope": 554, - "src": "682:63:3", + "scope": 626, + "src": "767:66:4", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", - "typeString": "mapping(bytes32 => mapping(address => bool))" + "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(bytes32 => mapping(address => uint256))" }, "typeName": { - "id": 347, + "id": 420, "keyType": { - "id": 343, + "id": 416, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "691:7:3", + "src": "776:7:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "Mapping", - "src": "682:45:3", + "src": "767:48:4", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", - "typeString": "mapping(bytes32 => mapping(address => bool))" + "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(bytes32 => mapping(address => uint256))" }, "valueType": { - "id": 346, + "id": 419, "keyType": { - "id": 344, + "id": 417, "name": "address", "nodeType": "ElementaryTypeName", - "src": "710:7:3", + "src": "795:7:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", - "src": "702:24:3", + "src": "787:27:4", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" }, "valueType": { - "id": 345, - "name": "bool", + "id": 418, + "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "721:4:3", + "src": "806:7:4", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } } } @@ -758,9 +758,9 @@ }, { "body": { - "id": 406, + "id": 469, "nodeType": "Block", - "src": "1366:504:3", + "src": "1454:380:4", "statements": [ { "expression": { @@ -772,7 +772,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 367, + "id": 440, "isConstant": false, "isLValue": false, "isPure": false, @@ -781,34 +781,34 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 362, + "id": 435, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 985, - "src": "1454:6:3", + "referencedDeclaration": 1114, + "src": "1542:6:4", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 365, + "id": 438, "indexExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 363, + "id": 436, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2396, - "src": "1461:3:3", + "referencedDeclaration": 2598, + "src": "1549:3:4", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 364, + "id": 437, "isConstant": false, "isLValue": false, "isPure": false, @@ -816,7 +816,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1461:10:3", + "src": "1549:10:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -827,7 +827,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1454:18:3", + "src": "1542:18:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -838,14 +838,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 366, + "id": 439, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1476:1:3", + "src": "1564:1:4", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -853,7 +853,7 @@ }, "value": "0" }, - "src": "1454:23:3", + "src": "1542:23:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -867,21 +867,21 @@ "typeString": "bool" } ], - "id": 361, + "id": 434, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "1446:7:3", + "referencedDeclaration": 2601, + "src": "1534:7:4", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 368, + "id": 441, "isConstant": false, "isLValue": false, "isPure": false, @@ -889,28 +889,28 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1446:32:3", + "src": "1534:32:4", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 369, + "id": 442, "nodeType": "ExpressionStatement", - "src": "1446:32:3" + "src": "1534:32:4" }, { "assignments": [ - 371 + 444 ], "declarations": [ { "constant": false, - "id": 371, + "id": 444, "name": "transactionHash", "nodeType": "VariableDeclaration", - "scope": 407, - "src": "1560:23:3", + "scope": 470, + "src": "1576:23:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -918,10 +918,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 370, + "id": 443, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "1560:7:3", + "src": "1576:7:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -931,18 +931,18 @@ "visibility": "internal" } ], - "id": 379, + "id": 452, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 373, + "id": 446, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 350, - "src": "1605:2:3", + "referencedDeclaration": 423, + "src": "1621:2:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -950,12 +950,12 @@ }, { "argumentTypes": null, - "id": 374, + "id": 447, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 352, - "src": "1609:5:3", + "referencedDeclaration": 425, + "src": "1625:5:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -963,12 +963,12 @@ }, { "argumentTypes": null, - "id": 375, + "id": 448, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 354, - "src": "1616:4:3", + "referencedDeclaration": 427, + "src": "1632:4:4", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -976,25 +976,25 @@ }, { "argumentTypes": null, - "id": 376, + "id": 449, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 356, - "src": "1622:9:3", + "referencedDeclaration": 429, + "src": "1638:9:4", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, { "argumentTypes": null, - "id": 377, + "id": 450, "name": "nonce", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 358, - "src": "1633:5:3", + "referencedDeclaration": 431, + "src": "1649:5:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1016,7 +1016,7 @@ "typeString": "bytes memory" }, { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, { @@ -1024,18 +1024,18 @@ "typeString": "uint256" } ], - "id": 372, + "id": 445, "name": "getTransactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 553, - "src": "1586:18:3", + "referencedDeclaration": 625, + "src": "1602:18:4", "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$5_$_t_uint256_$returns$_t_bytes32_$", + "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$_t_uint256_$returns$_t_bytes32_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256) view returns (bytes32)" } }, - "id": 378, + "id": 451, "isConstant": false, "isLValue": false, "isPure": false, @@ -1043,14 +1043,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1586:53:3", + "src": "1602:53:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "VariableDeclarationStatement", - "src": "1560:79:3" + "src": "1576:79:4" }, { "expression": { @@ -1058,7 +1058,7 @@ "arguments": [ { "argumentTypes": null, - "id": 384, + "id": 457, "isConstant": false, "isLValue": false, "isPure": false, @@ -1066,31 +1066,31 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "1657:28:3", + "src": "1745:28:4", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 381, + "id": 454, "name": "isExecuted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 342, - "src": "1658:10:3", + "referencedDeclaration": 415, + "src": "1746:10:4", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" } }, - "id": 383, + "id": 456, "indexExpression": { "argumentTypes": null, - "id": 382, + "id": 455, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 371, - "src": "1669:15:3", + "referencedDeclaration": 444, + "src": "1757:15:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1101,7 +1101,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1658:27:3", + "src": "1746:27:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1120,21 +1120,21 @@ "typeString": "bool" } ], - "id": 380, + "id": 453, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "1649:7:3", + "referencedDeclaration": 2601, + "src": "1737:7:4", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 385, + "id": 458, "isConstant": false, "isLValue": false, "isPure": false, @@ -1142,163 +1142,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1649:37:3", + "src": "1737:37:4", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 386, + "id": 459, "nodeType": "ExpressionStatement", - "src": "1649:37:3" + "src": "1737:37:4" }, { "expression": { "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 394, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "!", - "prefix": true, - "src": "1766:40:3", - "subExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 388, - "name": "isApproved", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 348, - "src": "1767:10:3", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", - "typeString": "mapping(bytes32 => mapping(address => bool))" - } - }, - "id": 390, - "indexExpression": { - "argumentTypes": null, - "id": 389, - "name": "transactionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 371, - "src": "1778:15:3", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1767:27:3", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 393, - "indexExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 391, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2396, - "src": "1795:3:3", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 392, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "1795:10:3", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1767:39:3", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 387, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 2399, - 2400 - ], - "referencedDeclaration": 2399, - "src": "1758:7:3", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 395, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1758:49:3", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 396, - "nodeType": "ExpressionStatement", - "src": "1758:49:3" - }, - { - "expression": { - "argumentTypes": null, - "id": 404, + "id": 467, "isConstant": false, "isLValue": false, "isPure": false, @@ -1309,26 +1166,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 397, + "id": 460, "name": "isApproved", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 348, - "src": "1817:10:3", + "referencedDeclaration": 421, + "src": "1784:10:4", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", - "typeString": "mapping(bytes32 => mapping(address => bool))" + "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(bytes32 => mapping(address => uint256))" } }, - "id": 401, + "id": 464, "indexExpression": { "argumentTypes": null, - "id": 398, + "id": 461, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 371, - "src": "1828:15:3", + "referencedDeclaration": 444, + "src": "1795:15:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1339,29 +1196,29 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1817:27:3", + "src": "1784:27:4", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" } }, - "id": 402, + "id": 465, "indexExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 399, + "id": 462, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2396, - "src": "1845:3:3", + "referencedDeclaration": 2598, + "src": "1812:3:4", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 400, + "id": 463, "isConstant": false, "isLValue": false, "isPure": false, @@ -1369,7 +1226,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1845:10:3", + "src": "1812:10:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1380,46 +1237,46 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1817:39:3", + "src": "1784:39:4", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, - "hexValue": "74727565", - "id": 403, + "hexValue": "31", + "id": 466, "isConstant": false, "isLValue": false, "isPure": true, - "kind": "bool", + "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1859:4:3", + "src": "1826:1:4", "subdenomination": null, "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" }, - "value": "true" + "value": "1" }, - "src": "1817:46:3", + "src": "1784:43:4", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - "id": 405, + "id": 468, "nodeType": "ExpressionStatement", - "src": "1817:46:3" + "src": "1784:43:4" } ] }, "documentation": "@dev Allows to confirm a Safe transaction with a regular transaction.\n This can only be done from an owner address.\n @param to Destination address of Safe transaction.\n @param value Ether value of Safe transaction.\n @param data Data payload of Safe transaction.\n @param operation Operation type of Safe transaction.\n @param nonce Nonce used for this Safe transaction.", - "id": 407, + "id": 470, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -1427,16 +1284,16 @@ "name": "approveTransactionWithParameters", "nodeType": "FunctionDefinition", "parameters": { - "id": 359, + "id": 432, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 350, + "id": 423, "name": "to", "nodeType": "VariableDeclaration", - "scope": 407, - "src": "1226:10:3", + "scope": 470, + "src": "1314:10:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1444,10 +1301,10 @@ "typeString": "address" }, "typeName": { - "id": 349, + "id": 422, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1226:7:3", + "src": "1314:7:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1458,11 +1315,11 @@ }, { "constant": false, - "id": 352, + "id": 425, "name": "value", "nodeType": "VariableDeclaration", - "scope": 407, - "src": "1247:13:3", + "scope": 470, + "src": "1335:13:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1470,10 +1327,10 @@ "typeString": "uint256" }, "typeName": { - "id": 351, + "id": 424, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1247:7:3", + "src": "1335:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1484,11 +1341,11 @@ }, { "constant": false, - "id": 354, + "id": 427, "name": "data", "nodeType": "VariableDeclaration", - "scope": 407, - "src": "1271:10:3", + "scope": 470, + "src": "1359:10:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1496,10 +1353,10 @@ "typeString": "bytes" }, "typeName": { - "id": 353, + "id": 426, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "1271:5:3", + "src": "1359:5:4", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -1510,26 +1367,26 @@ }, { "constant": false, - "id": 356, + "id": 429, "name": "operation", "nodeType": "VariableDeclaration", - "scope": 407, - "src": "1292:24:3", + "scope": 470, + "src": "1380:24:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, "typeName": { "contractScope": null, - "id": 355, + "id": 428, "name": "Enum.Operation", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 5, - "src": "1292:14:3", + "referencedDeclaration": 29, + "src": "1380:14:4", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, @@ -1538,11 +1395,11 @@ }, { "constant": false, - "id": 358, + "id": 431, "name": "nonce", "nodeType": "VariableDeclaration", - "scope": 407, - "src": "1327:13:3", + "scope": 470, + "src": "1415:13:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1550,10 +1407,10 @@ "typeString": "uint256" }, "typeName": { - "id": 357, + "id": 430, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1327:7:3", + "src": "1415:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1563,39 +1420,39 @@ "visibility": "internal" } ], - "src": "1216:130:3" + "src": "1304:130:4" }, "payable": false, "returnParameters": { - "id": 360, + "id": 433, "nodeType": "ParameterList", "parameters": [], - "src": "1366:0:3" + "src": "1454:0:4" }, - "scope": 554, - "src": "1175:695:3", + "scope": 626, + "src": "1263:571:4", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 458, + "id": 521, "nodeType": "Block", - "src": "2496:358:3", + "src": "2460:358:4", "statements": [ { "assignments": [ - 421 + 484 ], "declarations": [ { "constant": false, - "id": 421, + "id": 484, "name": "transactionHash", "nodeType": "VariableDeclaration", - "scope": 459, - "src": "2506:23:3", + "scope": 522, + "src": "2470:23:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1603,10 +1460,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 420, + "id": 483, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "2506:7:3", + "src": "2470:7:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1616,18 +1473,18 @@ "visibility": "internal" } ], - "id": 429, + "id": 492, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 423, + "id": 486, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 409, - "src": "2551:2:3", + "referencedDeclaration": 472, + "src": "2515:2:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1635,12 +1492,12 @@ }, { "argumentTypes": null, - "id": 424, + "id": 487, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 411, - "src": "2555:5:3", + "referencedDeclaration": 474, + "src": "2519:5:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1648,12 +1505,12 @@ }, { "argumentTypes": null, - "id": 425, + "id": 488, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 413, - "src": "2562:4:3", + "referencedDeclaration": 476, + "src": "2526:4:4", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -1661,25 +1518,25 @@ }, { "argumentTypes": null, - "id": 426, + "id": 489, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 415, - "src": "2568:9:3", + "referencedDeclaration": 478, + "src": "2532:9:4", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, { "argumentTypes": null, - "id": 427, + "id": 490, "name": "nonce", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 417, - "src": "2579:5:3", + "referencedDeclaration": 480, + "src": "2543:5:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1701,7 +1558,7 @@ "typeString": "bytes memory" }, { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, { @@ -1709,18 +1566,18 @@ "typeString": "uint256" } ], - "id": 422, + "id": 485, "name": "getTransactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 553, - "src": "2532:18:3", + "referencedDeclaration": 625, + "src": "2496:18:4", "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$5_$_t_uint256_$returns$_t_bytes32_$", + "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$_t_uint256_$returns$_t_bytes32_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256) view returns (bytes32)" } }, - "id": 428, + "id": 491, "isConstant": false, "isLValue": false, "isPure": false, @@ -1728,14 +1585,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2532:53:3", + "src": "2496:53:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "VariableDeclarationStatement", - "src": "2506:79:3" + "src": "2470:79:4" }, { "expression": { @@ -1743,7 +1600,7 @@ "arguments": [ { "argumentTypes": null, - "id": 434, + "id": 497, "isConstant": false, "isLValue": false, "isPure": false, @@ -1751,31 +1608,31 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "2603:28:3", + "src": "2567:28:4", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 431, + "id": 494, "name": "isExecuted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 342, - "src": "2604:10:3", + "referencedDeclaration": 415, + "src": "2568:10:4", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" } }, - "id": 433, + "id": 496, "indexExpression": { "argumentTypes": null, - "id": 432, + "id": 495, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 421, - "src": "2615:15:3", + "referencedDeclaration": 484, + "src": "2579:15:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1786,7 +1643,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2604:27:3", + "src": "2568:27:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1805,21 +1662,21 @@ "typeString": "bool" } ], - "id": 430, + "id": 493, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "2595:7:3", + "referencedDeclaration": 2601, + "src": "2559:7:4", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 435, + "id": 498, "isConstant": false, "isLValue": false, "isPure": false, @@ -1827,15 +1684,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2595:37:3", + "src": "2559:37:4", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 436, + "id": 499, "nodeType": "ExpressionStatement", - "src": "2595:37:3" + "src": "2559:37:4" }, { "expression": { @@ -1843,12 +1700,12 @@ "arguments": [ { "argumentTypes": null, - "id": 438, + "id": 501, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 421, - "src": "2669:15:3", + "referencedDeclaration": 484, + "src": "2633:15:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1862,18 +1719,18 @@ "typeString": "bytes32" } ], - "id": 437, + "id": 500, "name": "checkAndClearConfirmations", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 522, - "src": "2642:26:3", + "referencedDeclaration": 591, + "src": "2606:26:4", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$returns$__$", "typeString": "function (bytes32)" } }, - "id": 439, + "id": 502, "isConstant": false, "isLValue": false, "isPure": false, @@ -1881,20 +1738,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2642:43:3", + "src": "2606:43:4", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 440, + "id": 503, "nodeType": "ExpressionStatement", - "src": "2642:43:3" + "src": "2606:43:4" }, { "expression": { "argumentTypes": null, - "id": 445, + "id": 508, "isConstant": false, "isLValue": false, "isPure": false, @@ -1903,26 +1760,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 441, + "id": 504, "name": "isExecuted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 342, - "src": "2748:10:3", + "referencedDeclaration": 415, + "src": "2712:10:4", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" } }, - "id": 443, + "id": 506, "indexExpression": { "argumentTypes": null, - "id": 442, + "id": 505, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 421, - "src": "2759:15:3", + "referencedDeclaration": 484, + "src": "2723:15:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1933,7 +1790,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "2748:27:3", + "src": "2712:27:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1944,14 +1801,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 444, + "id": 507, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "2778:4:3", + "src": "2742:4:4", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -1959,15 +1816,15 @@ }, "value": "true" }, - "src": "2748:34:3", + "src": "2712:34:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 446, + "id": 509, "nodeType": "ExpressionStatement", - "src": "2748:34:3" + "src": "2712:34:4" }, { "expression": { @@ -1978,12 +1835,12 @@ "arguments": [ { "argumentTypes": null, - "id": 449, + "id": 512, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 409, - "src": "2808:2:3", + "referencedDeclaration": 472, + "src": "2772:2:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1991,12 +1848,12 @@ }, { "argumentTypes": null, - "id": 450, + "id": 513, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 411, - "src": "2812:5:3", + "referencedDeclaration": 474, + "src": "2776:5:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2004,12 +1861,12 @@ }, { "argumentTypes": null, - "id": 451, + "id": 514, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 413, - "src": "2819:4:3", + "referencedDeclaration": 476, + "src": "2783:4:4", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -2017,14 +1874,14 @@ }, { "argumentTypes": null, - "id": 452, + "id": 515, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 415, - "src": "2825:9:3", + "referencedDeclaration": 478, + "src": "2789:9:4", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, @@ -2033,18 +1890,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 453, + "id": 516, "name": "gasleft", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2389, - "src": "2836:7:3", + "referencedDeclaration": 2591, + "src": "2800:7:4", "typeDescriptions": { "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, - "id": 454, + "id": 517, "isConstant": false, "isLValue": false, "isPure": false, @@ -2052,7 +1909,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2836:9:3", + "src": "2800:9:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2074,7 +1931,7 @@ "typeString": "bytes memory" }, { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, { @@ -2082,18 +1939,18 @@ "typeString": "uint256" } ], - "id": 448, + "id": 511, "name": "execute", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 860, - "src": "2800:7:3", + "referencedDeclaration": 989, + "src": "2764:7:4", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$5_$_t_uint256_$returns$_t_bool_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256) returns (bool)" } }, - "id": 455, + "id": 518, "isConstant": false, "isLValue": false, "isPure": false, @@ -2101,7 +1958,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2800:46:3", + "src": "2764:46:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2115,906 +1972,15 @@ "typeString": "bool" } ], - "id": 447, + "id": 510, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "2792:7:3", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 456, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2792:55:3", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 457, - "nodeType": "ExpressionStatement", - "src": "2792:55:3" - } - ] - }, - "documentation": "@dev Allows to execute a Safe transaction confirmed by required number of owners. If the sender is an owner this is automatically confirmed.\n @param to Destination address of Safe transaction.\n @param value Ether value of Safe transaction.\n @param data Data payload of Safe transaction.\n @param operation Operation type of Safe transaction.\n @param nonce Nonce used for this Safe transaction.", - "id": 459, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "execTransactionIfApproved", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 418, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 409, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 459, - "src": "2356:10:3", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 408, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2356:7:3", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 411, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 459, - "src": "2377:13:3", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 410, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2377:7:3", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 413, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 459, - "src": "2401:10:3", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 412, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "2401:5:3", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 415, - "name": "operation", - "nodeType": "VariableDeclaration", - "scope": 459, - "src": "2422:24:3", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", - "typeString": "enum Enum.Operation" - }, - "typeName": { - "contractScope": null, - "id": 414, - "name": "Enum.Operation", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 5, - "src": "2422:14:3", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", - "typeString": "enum Enum.Operation" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 417, - "name": "nonce", - "nodeType": "VariableDeclaration", - "scope": 459, - "src": "2457:13:3", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 416, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2457:7:3", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "2346:130:3" - }, - "payable": false, - "returnParameters": { - "id": 419, - "nodeType": "ParameterList", - "parameters": [], - "src": "2496:0:3" - }, - "scope": 554, - "src": "2312:542:3", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 521, - "nodeType": "Block", - "src": "2942:609:3", - "statements": [ - { - "assignments": [ - 465 - ], - "declarations": [ - { - "constant": false, - "id": 465, - "name": "confirmations", - "nodeType": "VariableDeclaration", - "scope": 522, - "src": "2952:21:3", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 464, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2952:7:3", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 467, - "initialValue": { - "argumentTypes": null, - "hexValue": "30", - "id": 466, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2976:1:3", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "nodeType": "VariableDeclarationStatement", - "src": "2952:25:3" - }, - { - "assignments": [ - 469 - ], - "declarations": [ - { - "constant": false, - "id": 469, - "name": "currentOwner", - "nodeType": "VariableDeclaration", - "scope": 522, - "src": "3029:20:3", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 468, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3029:7:3", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 473, - "initialValue": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 470, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 985, - "src": "3052:6:3", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_address_$", - "typeString": "mapping(address => address)" - } - }, - "id": 472, - "indexExpression": { - "argumentTypes": null, - "id": 471, - "name": "SENTINEL_OWNERS", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 981, - "src": "3059:15:3", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "3052:23:3", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "3029:46:3" - }, - { - "body": { - "id": 513, - "nodeType": "Block", - "src": "3125:375:3", - "statements": [ - { - "assignments": [ - 478 - ], - "declarations": [ - { - "constant": false, - "id": 478, - "name": "ownerConfirmed", - "nodeType": "VariableDeclaration", - "scope": 522, - "src": "3139:19:3", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 477, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "3139:4:3", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 484, - "initialValue": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 479, - "name": "isApproved", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 348, - "src": "3161:10:3", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", - "typeString": "mapping(bytes32 => mapping(address => bool))" - } - }, - "id": 481, - "indexExpression": { - "argumentTypes": null, - "id": 480, - "name": "transactionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 461, - "src": "3172:15:3", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "3161:27:3", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 483, - "indexExpression": { - "argumentTypes": null, - "id": 482, - "name": "currentOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 469, - "src": "3189:12:3", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "3161:41:3", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "3139:63:3" - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 490, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 488, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 485, - "name": "currentOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 469, - "src": "3219:12:3", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 486, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2396, - "src": "3235:3:3", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 487, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "3235:10:3", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "3219:26:3", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "||", - "rightExpression": { - "argumentTypes": null, - "id": 489, - "name": "ownerConfirmed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 478, - "src": "3249:14:3", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "3219:44:3", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 506, - "nodeType": "IfStatement", - "src": "3216:225:3", - "trueBody": { - "id": 505, - "nodeType": "Block", - "src": "3265:176:3", - "statements": [ - { - "condition": { - "argumentTypes": null, - "id": 491, - "name": "ownerConfirmed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 478, - "src": "3287:14:3", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 501, - "nodeType": "IfStatement", - "src": "3283:110:3", - "trueBody": { - "id": 500, - "nodeType": "Block", - "src": "3303:90:3", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 498, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 492, - "name": "isApproved", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 348, - "src": "3325:10:3", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", - "typeString": "mapping(bytes32 => mapping(address => bool))" - } - }, - "id": 495, - "indexExpression": { - "argumentTypes": null, - "id": 493, - "name": "transactionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 461, - "src": "3336:15:3", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "3325:27:3", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 496, - "indexExpression": { - "argumentTypes": null, - "id": 494, - "name": "currentOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 469, - "src": "3353:12:3", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "3325:41:3", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "66616c7365", - "id": 497, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3369:5:3", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - }, - "src": "3325:49:3", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 499, - "nodeType": "ExpressionStatement", - "src": "3325:49:3" - } - ] - } - }, - { - "expression": { - "argumentTypes": null, - "id": 503, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "3410:16:3", - "subExpression": { - "argumentTypes": null, - "id": 502, - "name": "confirmations", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 465, - "src": "3410:13:3", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 504, - "nodeType": "ExpressionStatement", - "src": "3410:16:3" - } - ] - } - }, - { - "expression": { - "argumentTypes": null, - "id": 511, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 507, - "name": "currentOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 469, - "src": "3454:12:3", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 508, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 985, - "src": "3469:6:3", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_address_$", - "typeString": "mapping(address => address)" - } - }, - "id": 510, - "indexExpression": { - "argumentTypes": null, - "id": 509, - "name": "currentOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 469, - "src": "3476:12:3", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "3469:20:3", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "3454:35:3", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 512, - "nodeType": "ExpressionStatement", - "src": "3454:35:3" - } - ] - }, - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 476, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 474, - "name": "currentOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 469, - "src": "3092:12:3", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "id": 475, - "name": "SENTINEL_OWNERS", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 981, - "src": "3108:15:3", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "3092:31:3", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 514, - "nodeType": "WhileStatement", - "src": "3085:415:3" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 518, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 516, - "name": "confirmations", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 465, - "src": "3517:13:3", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">=", - "rightExpression": { - "argumentTypes": null, - "id": 517, - "name": "threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 989, - "src": "3534:9:3", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "src": "3517:26:3", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 515, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 2399, - 2400 - ], - "referencedDeclaration": 2399, - "src": "3509:7:3", + "referencedDeclaration": 2601, + "src": "2756:7:4", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" @@ -3028,7 +1994,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3509:35:3", + "src": "2756:55:4", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" @@ -3036,351 +2002,29 @@ }, "id": 520, "nodeType": "ExpressionStatement", - "src": "3509:35:3" + "src": "2756:55:4" } ] }, - "documentation": null, + "documentation": "@dev Allows to execute a Safe transaction confirmed by required number of owners. If the sender is an owner this is automatically confirmed.\n @param to Destination address of Safe transaction.\n @param value Ether value of Safe transaction.\n @param data Data payload of Safe transaction.\n @param operation Operation type of Safe transaction.\n @param nonce Nonce used for this Safe transaction.", "id": 522, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [], - "name": "checkAndClearConfirmations", + "name": "execTransactionIfApproved", "nodeType": "FunctionDefinition", "parameters": { - "id": 462, + "id": 481, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 461, - "name": "transactionHash", - "nodeType": "VariableDeclaration", - "scope": 522, - "src": "2896:23:3", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 460, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "2896:7:3", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "2895:25:3" - }, - "payable": false, - "returnParameters": { - "id": 463, - "nodeType": "ParameterList", - "parameters": [], - "src": "2942:0:3" - }, - "scope": 554, - "src": "2860:691:3", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "internal" - }, - { - "body": { - "id": 552, - "nodeType": "Block", - "src": "4045:95:3", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "30783139", - "id": 539, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4077:4:3", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_25_by_1", - "typeString": "int_const 25" - }, - "value": "0x19" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_25_by_1", - "typeString": "int_const 25" - } - ], - "id": 538, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "4072:4:3", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes1_$", - "typeString": "type(bytes1)" - }, - "typeName": "byte" - }, - "id": 540, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4072:10:3", - "typeDescriptions": { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - } - }, - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "30", - "id": 542, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4089:1:3", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 541, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "4084:4:3", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes1_$", - "typeString": "type(bytes1)" - }, - "typeName": "byte" - }, - "id": 543, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4084:7:3", - "typeDescriptions": { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - } - }, - { - "argumentTypes": null, - "id": 544, - "name": "this", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2425, - "src": "4093:4:3", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafeTeamEdition_$554", - "typeString": "contract GnosisSafeTeamEdition" - } - }, - { - "argumentTypes": null, - "id": 545, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 524, - "src": "4099:2:3", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 546, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 526, - "src": "4103:5:3", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 547, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 528, - "src": "4110:4:3", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - { - "argumentTypes": null, - "id": 548, - "name": "operation", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 530, - "src": "4116:9:3", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", - "typeString": "enum Enum.Operation" - } - }, - { - "argumentTypes": null, - "id": 549, - "name": "nonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 532, - "src": "4127:5:3", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - }, - { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - }, - { - "typeIdentifier": "t_contract$_GnosisSafeTeamEdition_$554", - "typeString": "contract GnosisSafeTeamEdition" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_enum$_Operation_$5", - "typeString": "enum Enum.Operation" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 537, - "name": "keccak256", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2390, - "src": "4062:9:3", - "typeDescriptions": { - "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", - "typeString": "function () pure returns (bytes32)" - } - }, - "id": 550, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4062:71:3", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "functionReturnParameters": 536, - "id": 551, - "nodeType": "Return", - "src": "4055:78:3" - } - ] - }, - "documentation": "@dev Returns hash to be signed by owners.\n @param to Destination address.\n @param value Ether value.\n @param data Data payload.\n @param operation Operation type.\n @param nonce Transaction nonce.\n @return Transaction hash.", - "id": 553, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "getTransactionHash", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 533, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 524, + "id": 472, "name": "to", "nodeType": "VariableDeclaration", - "scope": 553, - "src": "3866:10:3", + "scope": 522, + "src": "2320:10:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3388,10 +2032,10 @@ "typeString": "address" }, "typeName": { - "id": 523, + "id": 471, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3866:7:3", + "src": "2320:7:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3402,11 +2046,11 @@ }, { "constant": false, - "id": 526, + "id": 474, "name": "value", "nodeType": "VariableDeclaration", - "scope": 553, - "src": "3887:13:3", + "scope": 522, + "src": "2341:13:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3414,10 +2058,10 @@ "typeString": "uint256" }, "typeName": { - "id": 525, + "id": 473, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3887:7:3", + "src": "2341:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3428,11 +2072,11 @@ }, { "constant": false, - "id": 528, + "id": 476, "name": "data", "nodeType": "VariableDeclaration", - "scope": 553, - "src": "3911:10:3", + "scope": 522, + "src": "2365:10:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3440,10 +2084,10 @@ "typeString": "bytes" }, "typeName": { - "id": 527, + "id": 475, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "3911:5:3", + "src": "2365:5:4", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -3454,26 +2098,26 @@ }, { "constant": false, - "id": 530, + "id": 478, "name": "operation", "nodeType": "VariableDeclaration", - "scope": 553, - "src": "3932:24:3", + "scope": 522, + "src": "2386:24:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, "typeName": { "contractScope": null, - "id": 529, + "id": 477, "name": "Enum.Operation", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 5, - "src": "3932:14:3", + "referencedDeclaration": 29, + "src": "2386:14:4", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, @@ -3482,11 +2126,11 @@ }, { "constant": false, - "id": 532, + "id": 480, "name": "nonce", "nodeType": "VariableDeclaration", - "scope": 553, - "src": "3967:13:3", + "scope": 522, + "src": "2421:13:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3494,10 +2138,10 @@ "typeString": "uint256" }, "typeName": { - "id": 531, + "id": 479, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3967:7:3", + "src": "2421:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3507,20 +2151,849 @@ "visibility": "internal" } ], - "src": "3856:130:3" + "src": "2310:130:4" }, "payable": false, "returnParameters": { - "id": 536, + "id": 482, + "nodeType": "ParameterList", + "parameters": [], + "src": "2460:0:4" + }, + "scope": 626, + "src": "2276:542:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 590, + "nodeType": "Block", + "src": "2906:651:4", + "statements": [ + { + "assignments": [ + 530 + ], + "declarations": [ + { + "constant": false, + "id": 530, + "name": "approvals", + "nodeType": "VariableDeclaration", + "scope": 591, + "src": "2916:37:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "typeName": { + "id": 529, + "keyType": { + "id": 527, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2924:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "2916:27:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueType": { + "id": 528, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2935:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 534, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 531, + "name": "isApproved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 421, + "src": "2956:10:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(bytes32 => mapping(address => uint256))" + } + }, + "id": 533, + "indexExpression": { + "argumentTypes": null, + "id": 532, + "name": "transactionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 524, + "src": "2967:15:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2956:27:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2916:67:4" + }, + { + "assignments": [ + 536 + ], + "declarations": [ + { + "constant": false, + "id": 536, + "name": "confirmations", + "nodeType": "VariableDeclaration", + "scope": 591, + "src": "2993:21:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 535, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2993:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 538, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 537, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3017:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "2993:25:4" + }, + { + "assignments": [ + 540 + ], + "declarations": [ + { + "constant": false, + "id": 540, + "name": "currentOwner", + "nodeType": "VariableDeclaration", + "scope": 591, + "src": "3070:20:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 539, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3070:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 544, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 541, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1114, + "src": "3093:6:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + } + }, + "id": 543, + "indexExpression": { + "argumentTypes": null, + "id": 542, + "name": "SENTINEL_OWNERS", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1110, + "src": "3100:15:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3093:23:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3070:46:4" + }, + { + "body": { + "id": 582, + "nodeType": "Block", + "src": "3166:340:4", + "statements": [ + { + "assignments": [ + 549 + ], + "declarations": [ + { + "constant": false, + "id": 549, + "name": "ownerConfirmed", + "nodeType": "VariableDeclaration", + "scope": 591, + "src": "3180:19:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 548, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3180:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 555, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 554, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 550, + "name": "approvals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 530, + "src": "3202:9:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 552, + "indexExpression": { + "argumentTypes": null, + "id": 551, + "name": "currentOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 540, + "src": "3212:12:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3202:23:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 553, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3229:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3202:28:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3180:50:4" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 561, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 559, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 556, + "name": "currentOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 540, + "src": "3247:12:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 557, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2598, + "src": "3263:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 558, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3263:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "3247:26:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "id": 560, + "name": "ownerConfirmed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 549, + "src": "3277:14:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "3247:44:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 575, + "nodeType": "IfStatement", + "src": "3244:203:4", + "trueBody": { + "id": 574, + "nodeType": "Block", + "src": "3293:154:4", + "statements": [ + { + "condition": { + "argumentTypes": null, + "id": 562, + "name": "ownerConfirmed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 549, + "src": "3315:14:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 570, + "nodeType": "IfStatement", + "src": "3311:88:4", + "trueBody": { + "id": 569, + "nodeType": "Block", + "src": "3331:68:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 567, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 563, + "name": "approvals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 530, + "src": "3353:9:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 565, + "indexExpression": { + "argumentTypes": null, + "id": 564, + "name": "currentOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 540, + "src": "3363:12:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3353:23:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 566, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3379:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3353:27:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 568, + "nodeType": "ExpressionStatement", + "src": "3353:27:4" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "id": 572, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "3416:16:4", + "subExpression": { + "argumentTypes": null, + "id": 571, + "name": "confirmations", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 536, + "src": "3416:13:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 573, + "nodeType": "ExpressionStatement", + "src": "3416:16:4" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "id": 580, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 576, + "name": "currentOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 540, + "src": "3460:12:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 577, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1114, + "src": "3475:6:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + } + }, + "id": 579, + "indexExpression": { + "argumentTypes": null, + "id": 578, + "name": "currentOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 540, + "src": "3482:12:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3475:20:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "3460:35:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 581, + "nodeType": "ExpressionStatement", + "src": "3460:35:4" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 547, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 545, + "name": "currentOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 540, + "src": "3133:12:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "id": 546, + "name": "SENTINEL_OWNERS", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1110, + "src": "3149:15:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "3133:31:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 583, + "nodeType": "WhileStatement", + "src": "3126:380:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 587, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 585, + "name": "confirmations", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 536, + "src": "3523:13:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "id": 586, + "name": "threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1118, + "src": "3540:9:4", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "3523:26:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 584, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2601, + 2602 + ], + "referencedDeclaration": 2601, + "src": "3515:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 588, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3515:35:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 589, + "nodeType": "ExpressionStatement", + "src": "3515:35:4" + } + ] + }, + "documentation": null, + "id": 591, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "checkAndClearConfirmations", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 525, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 535, - "name": "", + "id": 524, + "name": "transactionHash", "nodeType": "VariableDeclaration", - "scope": 553, - "src": "4032:7:3", + "scope": 591, + "src": "2860:23:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3528,10 +3001,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 534, + "id": 523, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "4032:7:3", + "src": "2860:7:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -3541,60 +3014,574 @@ "visibility": "internal" } ], - "src": "4031:9:3" + "src": "2859:25:4" }, - "scope": 554, - "src": "3829:311:3", + "payable": false, + "returnParameters": { + "id": 526, + "nodeType": "ParameterList", + "parameters": [], + "src": "2906:0:4" + }, + "scope": 626, + "src": "2824:733:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 624, + "nodeType": "Block", + "src": "4051:113:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30783139", + "id": 610, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4100:4:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_25_by_1", + "typeString": "int_const 25" + }, + "value": "0x19" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_25_by_1", + "typeString": "int_const 25" + } + ], + "id": 609, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4095:4:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes1_$", + "typeString": "type(bytes1)" + }, + "typeName": "byte" + }, + "id": 611, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4095:10:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 613, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4112:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 612, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4107:4:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes1_$", + "typeString": "type(bytes1)" + }, + "typeName": "byte" + }, + "id": 614, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4107:7:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + { + "argumentTypes": null, + "id": 615, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2633, + "src": "4116:4:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GnosisSafeTeamEdition_$626", + "typeString": "contract GnosisSafeTeamEdition" + } + }, + { + "argumentTypes": null, + "id": 616, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 593, + "src": "4122:2:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 617, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 595, + "src": "4126:5:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 618, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 597, + "src": "4133:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 619, + "name": "operation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 599, + "src": "4139:9:4", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + } + }, + { + "argumentTypes": null, + "id": 620, + "name": "nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 601, + "src": "4150:5:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + }, + { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + }, + { + "typeIdentifier": "t_contract$_GnosisSafeTeamEdition_$626", + "typeString": "contract GnosisSafeTeamEdition" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 607, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2585, + "src": "4078:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 608, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4078:16:4", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 621, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4078:78:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 606, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2592, + "src": "4068:9:4", + "typeDescriptions": { + "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", + "typeString": "function () pure returns (bytes32)" + } + }, + "id": 622, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4068:89:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 605, + "id": 623, + "nodeType": "Return", + "src": "4061:96:4" + } + ] + }, + "documentation": "@dev Returns hash to be signed by owners.\n @param to Destination address.\n @param value Ether value.\n @param data Data payload.\n @param operation Operation type.\n @param nonce Transaction nonce.\n @return Transaction hash.", + "id": 625, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "getTransactionHash", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 602, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 593, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 625, + "src": "3872:10:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 592, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3872:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 595, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 625, + "src": "3893:13:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 594, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3893:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 597, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 625, + "src": "3917:10:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 596, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3917:5:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 599, + "name": "operation", + "nodeType": "VariableDeclaration", + "scope": 625, + "src": "3938:24:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + }, + "typeName": { + "contractScope": null, + "id": 598, + "name": "Enum.Operation", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 29, + "src": "3938:14:4", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 601, + "name": "nonce", + "nodeType": "VariableDeclaration", + "scope": 625, + "src": "3973:13:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 600, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3973:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3862:130:4" + }, + "payable": false, + "returnParameters": { + "id": 605, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 604, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 625, + "src": "4038:7:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 603, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4038:7:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4037:9:4" + }, + "scope": 626, + "src": "3835:329:4", "stateMutability": "view", "superFunction": null, "visibility": "public" } ], - "scope": 555, - "src": "272:3870:3" + "scope": 627, + "src": "272:3894:4" } ], - "src": "0:4143:3" + "src": "0:4167:4" }, "legacyAST": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafeTeamEdition.sol", "exportedSymbols": { "GnosisSafeTeamEdition": [ - 554 + 626 ] }, - "id": 555, + "id": 627, "nodeType": "SourceUnit", "nodes": [ { - "id": 326, + "id": 399, "literals": [ "solidity", "0.4", - ".23" + ".24" ], "nodeType": "PragmaDirective", - "src": "0:23:3" + "src": "0:23:4" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafe.sol", "file": "./GnosisSafe.sol", - "id": 327, + "id": 400, "nodeType": "ImportDirective", - "scope": 555, - "sourceUnit": 40, - "src": "24:26:3", + "scope": 627, + "sourceUnit": 64, + "src": "24:26:4", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/MasterCopy.sol", "file": "./MasterCopy.sol", - "id": 328, + "id": 401, "nodeType": "ImportDirective", - "scope": 555, - "sourceUnit": 581, - "src": "51:26:3", + "scope": 627, + "sourceUnit": 653, + "src": "51:26:4", "symbolAliases": [], "unitAlias": "" }, @@ -3604,68 +3591,68 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 329, + "id": 402, "name": "MasterCopy", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 580, - "src": "306:10:3", + "referencedDeclaration": 652, + "src": "306:10:4", "typeDescriptions": { - "typeIdentifier": "t_contract$_MasterCopy_$580", + "typeIdentifier": "t_contract$_MasterCopy_$652", "typeString": "contract MasterCopy" } }, - "id": 330, + "id": 403, "nodeType": "InheritanceSpecifier", - "src": "306:10:3" + "src": "306:10:4" }, { "arguments": null, "baseName": { "contractScope": null, - "id": 331, + "id": 404, "name": "GnosisSafe", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 39, - "src": "318:10:3", + "referencedDeclaration": 63, + "src": "318:10:4", "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$39", + "typeIdentifier": "t_contract$_GnosisSafe_$63", "typeString": "contract GnosisSafe" } }, - "id": 332, + "id": 405, "nodeType": "InheritanceSpecifier", - "src": "318:10:3" + "src": "318:10:4" } ], "contractDependencies": [ - 39, - 580, - 971, - 1343, - 1359 + 63, + 652, + 1100, + 1472, + 1619 ], "contractKind": "contract", "documentation": "@title Gnosis Safe Team Edition - A multisignature wallet with support for confirmations.\n @author Stefan George - \n @author Richard Meissner - ", "fullyImplemented": true, - "id": 554, + "id": 626, "linearizedBaseContracts": [ - 554, - 39, - 1343, - 971, - 580, - 1359 + 626, + 63, + 1472, + 1100, + 652, + 1619 ], "name": "GnosisSafeTeamEdition", "nodeType": "ContractDefinition", "nodes": [ { "constant": true, - "id": 335, + "id": 408, "name": "NAME", "nodeType": "VariableDeclaration", - "scope": 554, - "src": "336:56:3", + "scope": 626, + "src": "336:56:4", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -3673,10 +3660,10 @@ "typeString": "string" }, "typeName": { - "id": 333, + "id": 406, "name": "string", "nodeType": "ElementaryTypeName", - "src": "336:6:3", + "src": "336:6:4", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -3685,14 +3672,14 @@ "value": { "argumentTypes": null, "hexValue": "476e6f7369732053616665205465616d2045646974696f6e", - "id": 334, + "id": 407, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "366:26:3", + "src": "366:26:4", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_69b1cb372bb47730ba653a0e87363aa6de8337d13ed5852e6fe3ba4e2004a81e", @@ -3704,11 +3691,11 @@ }, { "constant": true, - "id": 338, + "id": 411, "name": "VERSION", "nodeType": "VariableDeclaration", - "scope": 554, - "src": "398:40:3", + "scope": 626, + "src": "398:40:4", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -3716,10 +3703,10 @@ "typeString": "string" }, "typeName": { - "id": 336, + "id": 409, "name": "string", "nodeType": "ElementaryTypeName", - "src": "398:6:3", + "src": "398:6:4", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -3728,14 +3715,14 @@ "value": { "argumentTypes": null, "hexValue": "302e302e31", - "id": 337, + "id": 410, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "431:7:3", + "src": "431:7:4", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_ae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc199163811885", @@ -3747,11 +3734,11 @@ }, { "constant": false, - "id": 342, + "id": 415, "name": "isExecuted", "nodeType": "VariableDeclaration", - "scope": 554, - "src": "536:43:3", + "scope": 626, + "src": "536:43:4", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -3759,28 +3746,28 @@ "typeString": "mapping(bytes32 => bool)" }, "typeName": { - "id": 341, + "id": 414, "keyType": { - "id": 339, + "id": 412, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "545:7:3", + "src": "545:7:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "Mapping", - "src": "536:25:3", + "src": "536:25:4", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" }, "valueType": { - "id": 340, + "id": 413, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "556:4:3", + "src": "556:4:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3792,61 +3779,61 @@ }, { "constant": false, - "id": 348, + "id": 421, "name": "isApproved", "nodeType": "VariableDeclaration", - "scope": 554, - "src": "682:63:3", + "scope": 626, + "src": "767:66:4", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", - "typeString": "mapping(bytes32 => mapping(address => bool))" + "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(bytes32 => mapping(address => uint256))" }, "typeName": { - "id": 347, + "id": 420, "keyType": { - "id": 343, + "id": 416, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "691:7:3", + "src": "776:7:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "Mapping", - "src": "682:45:3", + "src": "767:48:4", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", - "typeString": "mapping(bytes32 => mapping(address => bool))" + "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(bytes32 => mapping(address => uint256))" }, "valueType": { - "id": 346, + "id": 419, "keyType": { - "id": 344, + "id": 417, "name": "address", "nodeType": "ElementaryTypeName", - "src": "710:7:3", + "src": "795:7:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", - "src": "702:24:3", + "src": "787:27:4", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" }, "valueType": { - "id": 345, - "name": "bool", + "id": 418, + "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "721:4:3", + "src": "806:7:4", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } } } @@ -3856,9 +3843,9 @@ }, { "body": { - "id": 406, + "id": 469, "nodeType": "Block", - "src": "1366:504:3", + "src": "1454:380:4", "statements": [ { "expression": { @@ -3870,7 +3857,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 367, + "id": 440, "isConstant": false, "isLValue": false, "isPure": false, @@ -3879,34 +3866,34 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 362, + "id": 435, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 985, - "src": "1454:6:3", + "referencedDeclaration": 1114, + "src": "1542:6:4", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 365, + "id": 438, "indexExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 363, + "id": 436, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2396, - "src": "1461:3:3", + "referencedDeclaration": 2598, + "src": "1549:3:4", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 364, + "id": 437, "isConstant": false, "isLValue": false, "isPure": false, @@ -3914,7 +3901,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1461:10:3", + "src": "1549:10:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3925,7 +3912,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1454:18:3", + "src": "1542:18:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3936,14 +3923,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 366, + "id": 439, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1476:1:3", + "src": "1564:1:4", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -3951,7 +3938,7 @@ }, "value": "0" }, - "src": "1454:23:3", + "src": "1542:23:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3965,21 +3952,21 @@ "typeString": "bool" } ], - "id": 361, + "id": 434, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "1446:7:3", + "referencedDeclaration": 2601, + "src": "1534:7:4", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 368, + "id": 441, "isConstant": false, "isLValue": false, "isPure": false, @@ -3987,28 +3974,28 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1446:32:3", + "src": "1534:32:4", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 369, + "id": 442, "nodeType": "ExpressionStatement", - "src": "1446:32:3" + "src": "1534:32:4" }, { "assignments": [ - 371 + 444 ], "declarations": [ { "constant": false, - "id": 371, + "id": 444, "name": "transactionHash", "nodeType": "VariableDeclaration", - "scope": 407, - "src": "1560:23:3", + "scope": 470, + "src": "1576:23:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4016,10 +4003,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 370, + "id": 443, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "1560:7:3", + "src": "1576:7:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -4029,18 +4016,18 @@ "visibility": "internal" } ], - "id": 379, + "id": 452, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 373, + "id": 446, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 350, - "src": "1605:2:3", + "referencedDeclaration": 423, + "src": "1621:2:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4048,12 +4035,12 @@ }, { "argumentTypes": null, - "id": 374, + "id": 447, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 352, - "src": "1609:5:3", + "referencedDeclaration": 425, + "src": "1625:5:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4061,12 +4048,12 @@ }, { "argumentTypes": null, - "id": 375, + "id": 448, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 354, - "src": "1616:4:3", + "referencedDeclaration": 427, + "src": "1632:4:4", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -4074,25 +4061,25 @@ }, { "argumentTypes": null, - "id": 376, + "id": 449, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 356, - "src": "1622:9:3", + "referencedDeclaration": 429, + "src": "1638:9:4", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, { "argumentTypes": null, - "id": 377, + "id": 450, "name": "nonce", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 358, - "src": "1633:5:3", + "referencedDeclaration": 431, + "src": "1649:5:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4114,7 +4101,7 @@ "typeString": "bytes memory" }, { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, { @@ -4122,18 +4109,18 @@ "typeString": "uint256" } ], - "id": 372, + "id": 445, "name": "getTransactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 553, - "src": "1586:18:3", + "referencedDeclaration": 625, + "src": "1602:18:4", "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$5_$_t_uint256_$returns$_t_bytes32_$", + "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$_t_uint256_$returns$_t_bytes32_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256) view returns (bytes32)" } }, - "id": 378, + "id": 451, "isConstant": false, "isLValue": false, "isPure": false, @@ -4141,14 +4128,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1586:53:3", + "src": "1602:53:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "VariableDeclarationStatement", - "src": "1560:79:3" + "src": "1576:79:4" }, { "expression": { @@ -4156,7 +4143,7 @@ "arguments": [ { "argumentTypes": null, - "id": 384, + "id": 457, "isConstant": false, "isLValue": false, "isPure": false, @@ -4164,31 +4151,31 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "1657:28:3", + "src": "1745:28:4", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 381, + "id": 454, "name": "isExecuted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 342, - "src": "1658:10:3", + "referencedDeclaration": 415, + "src": "1746:10:4", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" } }, - "id": 383, + "id": 456, "indexExpression": { "argumentTypes": null, - "id": 382, + "id": 455, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 371, - "src": "1669:15:3", + "referencedDeclaration": 444, + "src": "1757:15:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -4199,7 +4186,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1658:27:3", + "src": "1746:27:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4218,21 +4205,21 @@ "typeString": "bool" } ], - "id": 380, + "id": 453, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "1649:7:3", + "referencedDeclaration": 2601, + "src": "1737:7:4", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 385, + "id": 458, "isConstant": false, "isLValue": false, "isPure": false, @@ -4240,163 +4227,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1649:37:3", + "src": "1737:37:4", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 386, + "id": 459, "nodeType": "ExpressionStatement", - "src": "1649:37:3" + "src": "1737:37:4" }, { "expression": { "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 394, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "!", - "prefix": true, - "src": "1766:40:3", - "subExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 388, - "name": "isApproved", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 348, - "src": "1767:10:3", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", - "typeString": "mapping(bytes32 => mapping(address => bool))" - } - }, - "id": 390, - "indexExpression": { - "argumentTypes": null, - "id": 389, - "name": "transactionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 371, - "src": "1778:15:3", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1767:27:3", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 393, - "indexExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 391, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2396, - "src": "1795:3:3", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 392, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "1795:10:3", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1767:39:3", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 387, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 2399, - 2400 - ], - "referencedDeclaration": 2399, - "src": "1758:7:3", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 395, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1758:49:3", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 396, - "nodeType": "ExpressionStatement", - "src": "1758:49:3" - }, - { - "expression": { - "argumentTypes": null, - "id": 404, + "id": 467, "isConstant": false, "isLValue": false, "isPure": false, @@ -4407,26 +4251,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 397, + "id": 460, "name": "isApproved", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 348, - "src": "1817:10:3", + "referencedDeclaration": 421, + "src": "1784:10:4", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", - "typeString": "mapping(bytes32 => mapping(address => bool))" + "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(bytes32 => mapping(address => uint256))" } }, - "id": 401, + "id": 464, "indexExpression": { "argumentTypes": null, - "id": 398, + "id": 461, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 371, - "src": "1828:15:3", + "referencedDeclaration": 444, + "src": "1795:15:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -4437,29 +4281,29 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1817:27:3", + "src": "1784:27:4", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" } }, - "id": 402, + "id": 465, "indexExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 399, + "id": 462, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2396, - "src": "1845:3:3", + "referencedDeclaration": 2598, + "src": "1812:3:4", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 400, + "id": 463, "isConstant": false, "isLValue": false, "isPure": false, @@ -4467,7 +4311,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1845:10:3", + "src": "1812:10:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4478,46 +4322,46 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1817:39:3", + "src": "1784:39:4", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, - "hexValue": "74727565", - "id": 403, + "hexValue": "31", + "id": 466, "isConstant": false, "isLValue": false, "isPure": true, - "kind": "bool", + "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1859:4:3", + "src": "1826:1:4", "subdenomination": null, "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" }, - "value": "true" + "value": "1" }, - "src": "1817:46:3", + "src": "1784:43:4", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - "id": 405, + "id": 468, "nodeType": "ExpressionStatement", - "src": "1817:46:3" + "src": "1784:43:4" } ] }, "documentation": "@dev Allows to confirm a Safe transaction with a regular transaction.\n This can only be done from an owner address.\n @param to Destination address of Safe transaction.\n @param value Ether value of Safe transaction.\n @param data Data payload of Safe transaction.\n @param operation Operation type of Safe transaction.\n @param nonce Nonce used for this Safe transaction.", - "id": 407, + "id": 470, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -4525,16 +4369,16 @@ "name": "approveTransactionWithParameters", "nodeType": "FunctionDefinition", "parameters": { - "id": 359, + "id": 432, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 350, + "id": 423, "name": "to", "nodeType": "VariableDeclaration", - "scope": 407, - "src": "1226:10:3", + "scope": 470, + "src": "1314:10:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4542,10 +4386,10 @@ "typeString": "address" }, "typeName": { - "id": 349, + "id": 422, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1226:7:3", + "src": "1314:7:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4556,11 +4400,11 @@ }, { "constant": false, - "id": 352, + "id": 425, "name": "value", "nodeType": "VariableDeclaration", - "scope": 407, - "src": "1247:13:3", + "scope": 470, + "src": "1335:13:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4568,10 +4412,10 @@ "typeString": "uint256" }, "typeName": { - "id": 351, + "id": 424, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1247:7:3", + "src": "1335:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4582,11 +4426,11 @@ }, { "constant": false, - "id": 354, + "id": 427, "name": "data", "nodeType": "VariableDeclaration", - "scope": 407, - "src": "1271:10:3", + "scope": 470, + "src": "1359:10:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4594,10 +4438,10 @@ "typeString": "bytes" }, "typeName": { - "id": 353, + "id": 426, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "1271:5:3", + "src": "1359:5:4", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -4608,26 +4452,26 @@ }, { "constant": false, - "id": 356, + "id": 429, "name": "operation", "nodeType": "VariableDeclaration", - "scope": 407, - "src": "1292:24:3", + "scope": 470, + "src": "1380:24:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, "typeName": { "contractScope": null, - "id": 355, + "id": 428, "name": "Enum.Operation", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 5, - "src": "1292:14:3", + "referencedDeclaration": 29, + "src": "1380:14:4", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, @@ -4636,11 +4480,11 @@ }, { "constant": false, - "id": 358, + "id": 431, "name": "nonce", "nodeType": "VariableDeclaration", - "scope": 407, - "src": "1327:13:3", + "scope": 470, + "src": "1415:13:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4648,10 +4492,10 @@ "typeString": "uint256" }, "typeName": { - "id": 357, + "id": 430, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1327:7:3", + "src": "1415:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4661,39 +4505,39 @@ "visibility": "internal" } ], - "src": "1216:130:3" + "src": "1304:130:4" }, "payable": false, "returnParameters": { - "id": 360, + "id": 433, "nodeType": "ParameterList", "parameters": [], - "src": "1366:0:3" + "src": "1454:0:4" }, - "scope": 554, - "src": "1175:695:3", + "scope": 626, + "src": "1263:571:4", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 458, + "id": 521, "nodeType": "Block", - "src": "2496:358:3", + "src": "2460:358:4", "statements": [ { "assignments": [ - 421 + 484 ], "declarations": [ { "constant": false, - "id": 421, + "id": 484, "name": "transactionHash", "nodeType": "VariableDeclaration", - "scope": 459, - "src": "2506:23:3", + "scope": 522, + "src": "2470:23:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4701,10 +4545,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 420, + "id": 483, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "2506:7:3", + "src": "2470:7:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -4714,18 +4558,18 @@ "visibility": "internal" } ], - "id": 429, + "id": 492, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 423, + "id": 486, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 409, - "src": "2551:2:3", + "referencedDeclaration": 472, + "src": "2515:2:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4733,12 +4577,12 @@ }, { "argumentTypes": null, - "id": 424, + "id": 487, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 411, - "src": "2555:5:3", + "referencedDeclaration": 474, + "src": "2519:5:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4746,12 +4590,12 @@ }, { "argumentTypes": null, - "id": 425, + "id": 488, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 413, - "src": "2562:4:3", + "referencedDeclaration": 476, + "src": "2526:4:4", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -4759,25 +4603,25 @@ }, { "argumentTypes": null, - "id": 426, + "id": 489, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 415, - "src": "2568:9:3", + "referencedDeclaration": 478, + "src": "2532:9:4", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, { "argumentTypes": null, - "id": 427, + "id": 490, "name": "nonce", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 417, - "src": "2579:5:3", + "referencedDeclaration": 480, + "src": "2543:5:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4799,7 +4643,7 @@ "typeString": "bytes memory" }, { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, { @@ -4807,18 +4651,18 @@ "typeString": "uint256" } ], - "id": 422, + "id": 485, "name": "getTransactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 553, - "src": "2532:18:3", + "referencedDeclaration": 625, + "src": "2496:18:4", "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$5_$_t_uint256_$returns$_t_bytes32_$", + "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$_t_uint256_$returns$_t_bytes32_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256) view returns (bytes32)" } }, - "id": 428, + "id": 491, "isConstant": false, "isLValue": false, "isPure": false, @@ -4826,14 +4670,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2532:53:3", + "src": "2496:53:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "VariableDeclarationStatement", - "src": "2506:79:3" + "src": "2470:79:4" }, { "expression": { @@ -4841,7 +4685,7 @@ "arguments": [ { "argumentTypes": null, - "id": 434, + "id": 497, "isConstant": false, "isLValue": false, "isPure": false, @@ -4849,31 +4693,31 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "2603:28:3", + "src": "2567:28:4", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 431, + "id": 494, "name": "isExecuted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 342, - "src": "2604:10:3", + "referencedDeclaration": 415, + "src": "2568:10:4", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" } }, - "id": 433, + "id": 496, "indexExpression": { "argumentTypes": null, - "id": 432, + "id": 495, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 421, - "src": "2615:15:3", + "referencedDeclaration": 484, + "src": "2579:15:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -4884,7 +4728,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2604:27:3", + "src": "2568:27:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4903,21 +4747,21 @@ "typeString": "bool" } ], - "id": 430, + "id": 493, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "2595:7:3", + "referencedDeclaration": 2601, + "src": "2559:7:4", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 435, + "id": 498, "isConstant": false, "isLValue": false, "isPure": false, @@ -4925,15 +4769,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2595:37:3", + "src": "2559:37:4", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 436, + "id": 499, "nodeType": "ExpressionStatement", - "src": "2595:37:3" + "src": "2559:37:4" }, { "expression": { @@ -4941,12 +4785,12 @@ "arguments": [ { "argumentTypes": null, - "id": 438, + "id": 501, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 421, - "src": "2669:15:3", + "referencedDeclaration": 484, + "src": "2633:15:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -4960,18 +4804,18 @@ "typeString": "bytes32" } ], - "id": 437, + "id": 500, "name": "checkAndClearConfirmations", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 522, - "src": "2642:26:3", + "referencedDeclaration": 591, + "src": "2606:26:4", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$returns$__$", "typeString": "function (bytes32)" } }, - "id": 439, + "id": 502, "isConstant": false, "isLValue": false, "isPure": false, @@ -4979,20 +4823,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2642:43:3", + "src": "2606:43:4", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 440, + "id": 503, "nodeType": "ExpressionStatement", - "src": "2642:43:3" + "src": "2606:43:4" }, { "expression": { "argumentTypes": null, - "id": 445, + "id": 508, "isConstant": false, "isLValue": false, "isPure": false, @@ -5001,26 +4845,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 441, + "id": 504, "name": "isExecuted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 342, - "src": "2748:10:3", + "referencedDeclaration": 415, + "src": "2712:10:4", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" } }, - "id": 443, + "id": 506, "indexExpression": { "argumentTypes": null, - "id": 442, + "id": 505, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 421, - "src": "2759:15:3", + "referencedDeclaration": 484, + "src": "2723:15:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -5031,7 +4875,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "2748:27:3", + "src": "2712:27:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5042,14 +4886,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 444, + "id": 507, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "2778:4:3", + "src": "2742:4:4", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -5057,15 +4901,15 @@ }, "value": "true" }, - "src": "2748:34:3", + "src": "2712:34:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 446, + "id": 509, "nodeType": "ExpressionStatement", - "src": "2748:34:3" + "src": "2712:34:4" }, { "expression": { @@ -5076,12 +4920,12 @@ "arguments": [ { "argumentTypes": null, - "id": 449, + "id": 512, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 409, - "src": "2808:2:3", + "referencedDeclaration": 472, + "src": "2772:2:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5089,12 +4933,12 @@ }, { "argumentTypes": null, - "id": 450, + "id": 513, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 411, - "src": "2812:5:3", + "referencedDeclaration": 474, + "src": "2776:5:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5102,12 +4946,12 @@ }, { "argumentTypes": null, - "id": 451, + "id": 514, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 413, - "src": "2819:4:3", + "referencedDeclaration": 476, + "src": "2783:4:4", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -5115,14 +4959,14 @@ }, { "argumentTypes": null, - "id": 452, + "id": 515, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 415, - "src": "2825:9:3", + "referencedDeclaration": 478, + "src": "2789:9:4", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, @@ -5131,18 +4975,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 453, + "id": 516, "name": "gasleft", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2389, - "src": "2836:7:3", + "referencedDeclaration": 2591, + "src": "2800:7:4", "typeDescriptions": { "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, - "id": 454, + "id": 517, "isConstant": false, "isLValue": false, "isPure": false, @@ -5150,7 +4994,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2836:9:3", + "src": "2800:9:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5172,7 +5016,7 @@ "typeString": "bytes memory" }, { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, { @@ -5180,18 +5024,18 @@ "typeString": "uint256" } ], - "id": 448, + "id": 511, "name": "execute", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 860, - "src": "2800:7:3", + "referencedDeclaration": 989, + "src": "2764:7:4", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$5_$_t_uint256_$returns$_t_bool_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256) returns (bool)" } }, - "id": 455, + "id": 518, "isConstant": false, "isLValue": false, "isPure": false, @@ -5199,7 +5043,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2800:46:3", + "src": "2764:46:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5213,906 +5057,15 @@ "typeString": "bool" } ], - "id": 447, + "id": 510, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "2792:7:3", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 456, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2792:55:3", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 457, - "nodeType": "ExpressionStatement", - "src": "2792:55:3" - } - ] - }, - "documentation": "@dev Allows to execute a Safe transaction confirmed by required number of owners. If the sender is an owner this is automatically confirmed.\n @param to Destination address of Safe transaction.\n @param value Ether value of Safe transaction.\n @param data Data payload of Safe transaction.\n @param operation Operation type of Safe transaction.\n @param nonce Nonce used for this Safe transaction.", - "id": 459, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "execTransactionIfApproved", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 418, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 409, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 459, - "src": "2356:10:3", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 408, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2356:7:3", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 411, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 459, - "src": "2377:13:3", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 410, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2377:7:3", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 413, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 459, - "src": "2401:10:3", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 412, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "2401:5:3", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 415, - "name": "operation", - "nodeType": "VariableDeclaration", - "scope": 459, - "src": "2422:24:3", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", - "typeString": "enum Enum.Operation" - }, - "typeName": { - "contractScope": null, - "id": 414, - "name": "Enum.Operation", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 5, - "src": "2422:14:3", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", - "typeString": "enum Enum.Operation" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 417, - "name": "nonce", - "nodeType": "VariableDeclaration", - "scope": 459, - "src": "2457:13:3", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 416, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2457:7:3", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "2346:130:3" - }, - "payable": false, - "returnParameters": { - "id": 419, - "nodeType": "ParameterList", - "parameters": [], - "src": "2496:0:3" - }, - "scope": 554, - "src": "2312:542:3", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 521, - "nodeType": "Block", - "src": "2942:609:3", - "statements": [ - { - "assignments": [ - 465 - ], - "declarations": [ - { - "constant": false, - "id": 465, - "name": "confirmations", - "nodeType": "VariableDeclaration", - "scope": 522, - "src": "2952:21:3", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 464, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2952:7:3", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 467, - "initialValue": { - "argumentTypes": null, - "hexValue": "30", - "id": 466, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2976:1:3", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "nodeType": "VariableDeclarationStatement", - "src": "2952:25:3" - }, - { - "assignments": [ - 469 - ], - "declarations": [ - { - "constant": false, - "id": 469, - "name": "currentOwner", - "nodeType": "VariableDeclaration", - "scope": 522, - "src": "3029:20:3", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 468, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3029:7:3", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 473, - "initialValue": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 470, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 985, - "src": "3052:6:3", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_address_$", - "typeString": "mapping(address => address)" - } - }, - "id": 472, - "indexExpression": { - "argumentTypes": null, - "id": 471, - "name": "SENTINEL_OWNERS", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 981, - "src": "3059:15:3", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "3052:23:3", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "3029:46:3" - }, - { - "body": { - "id": 513, - "nodeType": "Block", - "src": "3125:375:3", - "statements": [ - { - "assignments": [ - 478 - ], - "declarations": [ - { - "constant": false, - "id": 478, - "name": "ownerConfirmed", - "nodeType": "VariableDeclaration", - "scope": 522, - "src": "3139:19:3", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 477, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "3139:4:3", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 484, - "initialValue": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 479, - "name": "isApproved", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 348, - "src": "3161:10:3", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", - "typeString": "mapping(bytes32 => mapping(address => bool))" - } - }, - "id": 481, - "indexExpression": { - "argumentTypes": null, - "id": 480, - "name": "transactionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 461, - "src": "3172:15:3", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "3161:27:3", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 483, - "indexExpression": { - "argumentTypes": null, - "id": 482, - "name": "currentOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 469, - "src": "3189:12:3", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "3161:41:3", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "3139:63:3" - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 490, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 488, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 485, - "name": "currentOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 469, - "src": "3219:12:3", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 486, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2396, - "src": "3235:3:3", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 487, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "3235:10:3", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "3219:26:3", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "||", - "rightExpression": { - "argumentTypes": null, - "id": 489, - "name": "ownerConfirmed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 478, - "src": "3249:14:3", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "3219:44:3", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 506, - "nodeType": "IfStatement", - "src": "3216:225:3", - "trueBody": { - "id": 505, - "nodeType": "Block", - "src": "3265:176:3", - "statements": [ - { - "condition": { - "argumentTypes": null, - "id": 491, - "name": "ownerConfirmed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 478, - "src": "3287:14:3", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 501, - "nodeType": "IfStatement", - "src": "3283:110:3", - "trueBody": { - "id": 500, - "nodeType": "Block", - "src": "3303:90:3", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 498, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 492, - "name": "isApproved", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 348, - "src": "3325:10:3", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", - "typeString": "mapping(bytes32 => mapping(address => bool))" - } - }, - "id": 495, - "indexExpression": { - "argumentTypes": null, - "id": 493, - "name": "transactionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 461, - "src": "3336:15:3", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "3325:27:3", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 496, - "indexExpression": { - "argumentTypes": null, - "id": 494, - "name": "currentOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 469, - "src": "3353:12:3", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "3325:41:3", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "66616c7365", - "id": 497, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3369:5:3", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - }, - "src": "3325:49:3", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 499, - "nodeType": "ExpressionStatement", - "src": "3325:49:3" - } - ] - } - }, - { - "expression": { - "argumentTypes": null, - "id": 503, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "3410:16:3", - "subExpression": { - "argumentTypes": null, - "id": 502, - "name": "confirmations", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 465, - "src": "3410:13:3", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 504, - "nodeType": "ExpressionStatement", - "src": "3410:16:3" - } - ] - } - }, - { - "expression": { - "argumentTypes": null, - "id": 511, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 507, - "name": "currentOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 469, - "src": "3454:12:3", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 508, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 985, - "src": "3469:6:3", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_address_$", - "typeString": "mapping(address => address)" - } - }, - "id": 510, - "indexExpression": { - "argumentTypes": null, - "id": 509, - "name": "currentOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 469, - "src": "3476:12:3", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "3469:20:3", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "3454:35:3", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 512, - "nodeType": "ExpressionStatement", - "src": "3454:35:3" - } - ] - }, - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 476, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 474, - "name": "currentOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 469, - "src": "3092:12:3", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "id": 475, - "name": "SENTINEL_OWNERS", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 981, - "src": "3108:15:3", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "3092:31:3", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 514, - "nodeType": "WhileStatement", - "src": "3085:415:3" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 518, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 516, - "name": "confirmations", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 465, - "src": "3517:13:3", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">=", - "rightExpression": { - "argumentTypes": null, - "id": 517, - "name": "threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 989, - "src": "3534:9:3", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "src": "3517:26:3", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 515, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 2399, - 2400 - ], - "referencedDeclaration": 2399, - "src": "3509:7:3", + "referencedDeclaration": 2601, + "src": "2756:7:4", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" @@ -6126,7 +5079,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3509:35:3", + "src": "2756:55:4", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" @@ -6134,351 +5087,29 @@ }, "id": 520, "nodeType": "ExpressionStatement", - "src": "3509:35:3" + "src": "2756:55:4" } ] }, - "documentation": null, + "documentation": "@dev Allows to execute a Safe transaction confirmed by required number of owners. If the sender is an owner this is automatically confirmed.\n @param to Destination address of Safe transaction.\n @param value Ether value of Safe transaction.\n @param data Data payload of Safe transaction.\n @param operation Operation type of Safe transaction.\n @param nonce Nonce used for this Safe transaction.", "id": 522, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [], - "name": "checkAndClearConfirmations", + "name": "execTransactionIfApproved", "nodeType": "FunctionDefinition", "parameters": { - "id": 462, + "id": 481, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 461, - "name": "transactionHash", - "nodeType": "VariableDeclaration", - "scope": 522, - "src": "2896:23:3", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 460, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "2896:7:3", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "2895:25:3" - }, - "payable": false, - "returnParameters": { - "id": 463, - "nodeType": "ParameterList", - "parameters": [], - "src": "2942:0:3" - }, - "scope": 554, - "src": "2860:691:3", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "internal" - }, - { - "body": { - "id": 552, - "nodeType": "Block", - "src": "4045:95:3", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "30783139", - "id": 539, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4077:4:3", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_25_by_1", - "typeString": "int_const 25" - }, - "value": "0x19" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_25_by_1", - "typeString": "int_const 25" - } - ], - "id": 538, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "4072:4:3", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes1_$", - "typeString": "type(bytes1)" - }, - "typeName": "byte" - }, - "id": 540, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4072:10:3", - "typeDescriptions": { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - } - }, - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "30", - "id": 542, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4089:1:3", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 541, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "4084:4:3", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes1_$", - "typeString": "type(bytes1)" - }, - "typeName": "byte" - }, - "id": 543, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4084:7:3", - "typeDescriptions": { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - } - }, - { - "argumentTypes": null, - "id": 544, - "name": "this", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2425, - "src": "4093:4:3", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafeTeamEdition_$554", - "typeString": "contract GnosisSafeTeamEdition" - } - }, - { - "argumentTypes": null, - "id": 545, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 524, - "src": "4099:2:3", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 546, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 526, - "src": "4103:5:3", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 547, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 528, - "src": "4110:4:3", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - { - "argumentTypes": null, - "id": 548, - "name": "operation", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 530, - "src": "4116:9:3", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", - "typeString": "enum Enum.Operation" - } - }, - { - "argumentTypes": null, - "id": 549, - "name": "nonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 532, - "src": "4127:5:3", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - }, - { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - }, - { - "typeIdentifier": "t_contract$_GnosisSafeTeamEdition_$554", - "typeString": "contract GnosisSafeTeamEdition" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_enum$_Operation_$5", - "typeString": "enum Enum.Operation" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 537, - "name": "keccak256", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2390, - "src": "4062:9:3", - "typeDescriptions": { - "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", - "typeString": "function () pure returns (bytes32)" - } - }, - "id": 550, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4062:71:3", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "functionReturnParameters": 536, - "id": 551, - "nodeType": "Return", - "src": "4055:78:3" - } - ] - }, - "documentation": "@dev Returns hash to be signed by owners.\n @param to Destination address.\n @param value Ether value.\n @param data Data payload.\n @param operation Operation type.\n @param nonce Transaction nonce.\n @return Transaction hash.", - "id": 553, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "getTransactionHash", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 533, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 524, + "id": 472, "name": "to", "nodeType": "VariableDeclaration", - "scope": 553, - "src": "3866:10:3", + "scope": 522, + "src": "2320:10:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6486,10 +5117,10 @@ "typeString": "address" }, "typeName": { - "id": 523, + "id": 471, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3866:7:3", + "src": "2320:7:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6500,11 +5131,11 @@ }, { "constant": false, - "id": 526, + "id": 474, "name": "value", "nodeType": "VariableDeclaration", - "scope": 553, - "src": "3887:13:3", + "scope": 522, + "src": "2341:13:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6512,10 +5143,10 @@ "typeString": "uint256" }, "typeName": { - "id": 525, + "id": 473, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3887:7:3", + "src": "2341:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6526,11 +5157,11 @@ }, { "constant": false, - "id": 528, + "id": 476, "name": "data", "nodeType": "VariableDeclaration", - "scope": 553, - "src": "3911:10:3", + "scope": 522, + "src": "2365:10:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6538,10 +5169,10 @@ "typeString": "bytes" }, "typeName": { - "id": 527, + "id": 475, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "3911:5:3", + "src": "2365:5:4", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -6552,26 +5183,26 @@ }, { "constant": false, - "id": 530, + "id": 478, "name": "operation", "nodeType": "VariableDeclaration", - "scope": 553, - "src": "3932:24:3", + "scope": 522, + "src": "2386:24:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, "typeName": { "contractScope": null, - "id": 529, + "id": 477, "name": "Enum.Operation", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 5, - "src": "3932:14:3", + "referencedDeclaration": 29, + "src": "2386:14:4", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, @@ -6580,11 +5211,11 @@ }, { "constant": false, - "id": 532, + "id": 480, "name": "nonce", "nodeType": "VariableDeclaration", - "scope": 553, - "src": "3967:13:3", + "scope": 522, + "src": "2421:13:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6592,10 +5223,10 @@ "typeString": "uint256" }, "typeName": { - "id": 531, + "id": 479, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3967:7:3", + "src": "2421:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6605,20 +5236,849 @@ "visibility": "internal" } ], - "src": "3856:130:3" + "src": "2310:130:4" }, "payable": false, "returnParameters": { - "id": 536, + "id": 482, + "nodeType": "ParameterList", + "parameters": [], + "src": "2460:0:4" + }, + "scope": 626, + "src": "2276:542:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 590, + "nodeType": "Block", + "src": "2906:651:4", + "statements": [ + { + "assignments": [ + 530 + ], + "declarations": [ + { + "constant": false, + "id": 530, + "name": "approvals", + "nodeType": "VariableDeclaration", + "scope": 591, + "src": "2916:37:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "typeName": { + "id": 529, + "keyType": { + "id": 527, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2924:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "2916:27:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueType": { + "id": 528, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2935:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 534, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 531, + "name": "isApproved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 421, + "src": "2956:10:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(bytes32 => mapping(address => uint256))" + } + }, + "id": 533, + "indexExpression": { + "argumentTypes": null, + "id": 532, + "name": "transactionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 524, + "src": "2967:15:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2956:27:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2916:67:4" + }, + { + "assignments": [ + 536 + ], + "declarations": [ + { + "constant": false, + "id": 536, + "name": "confirmations", + "nodeType": "VariableDeclaration", + "scope": 591, + "src": "2993:21:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 535, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2993:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 538, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 537, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3017:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "2993:25:4" + }, + { + "assignments": [ + 540 + ], + "declarations": [ + { + "constant": false, + "id": 540, + "name": "currentOwner", + "nodeType": "VariableDeclaration", + "scope": 591, + "src": "3070:20:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 539, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3070:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 544, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 541, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1114, + "src": "3093:6:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + } + }, + "id": 543, + "indexExpression": { + "argumentTypes": null, + "id": 542, + "name": "SENTINEL_OWNERS", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1110, + "src": "3100:15:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3093:23:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3070:46:4" + }, + { + "body": { + "id": 582, + "nodeType": "Block", + "src": "3166:340:4", + "statements": [ + { + "assignments": [ + 549 + ], + "declarations": [ + { + "constant": false, + "id": 549, + "name": "ownerConfirmed", + "nodeType": "VariableDeclaration", + "scope": 591, + "src": "3180:19:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 548, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3180:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 555, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 554, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 550, + "name": "approvals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 530, + "src": "3202:9:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 552, + "indexExpression": { + "argumentTypes": null, + "id": 551, + "name": "currentOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 540, + "src": "3212:12:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3202:23:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 553, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3229:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3202:28:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3180:50:4" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 561, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 559, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 556, + "name": "currentOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 540, + "src": "3247:12:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 557, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2598, + "src": "3263:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 558, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3263:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "3247:26:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "id": 560, + "name": "ownerConfirmed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 549, + "src": "3277:14:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "3247:44:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 575, + "nodeType": "IfStatement", + "src": "3244:203:4", + "trueBody": { + "id": 574, + "nodeType": "Block", + "src": "3293:154:4", + "statements": [ + { + "condition": { + "argumentTypes": null, + "id": 562, + "name": "ownerConfirmed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 549, + "src": "3315:14:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 570, + "nodeType": "IfStatement", + "src": "3311:88:4", + "trueBody": { + "id": 569, + "nodeType": "Block", + "src": "3331:68:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 567, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 563, + "name": "approvals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 530, + "src": "3353:9:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 565, + "indexExpression": { + "argumentTypes": null, + "id": 564, + "name": "currentOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 540, + "src": "3363:12:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3353:23:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 566, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3379:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3353:27:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 568, + "nodeType": "ExpressionStatement", + "src": "3353:27:4" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "id": 572, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "3416:16:4", + "subExpression": { + "argumentTypes": null, + "id": 571, + "name": "confirmations", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 536, + "src": "3416:13:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 573, + "nodeType": "ExpressionStatement", + "src": "3416:16:4" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "id": 580, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 576, + "name": "currentOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 540, + "src": "3460:12:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 577, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1114, + "src": "3475:6:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + } + }, + "id": 579, + "indexExpression": { + "argumentTypes": null, + "id": 578, + "name": "currentOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 540, + "src": "3482:12:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3475:20:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "3460:35:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 581, + "nodeType": "ExpressionStatement", + "src": "3460:35:4" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 547, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 545, + "name": "currentOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 540, + "src": "3133:12:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "id": 546, + "name": "SENTINEL_OWNERS", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1110, + "src": "3149:15:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "3133:31:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 583, + "nodeType": "WhileStatement", + "src": "3126:380:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 587, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 585, + "name": "confirmations", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 536, + "src": "3523:13:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "id": 586, + "name": "threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1118, + "src": "3540:9:4", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "3523:26:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 584, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2601, + 2602 + ], + "referencedDeclaration": 2601, + "src": "3515:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 588, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3515:35:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 589, + "nodeType": "ExpressionStatement", + "src": "3515:35:4" + } + ] + }, + "documentation": null, + "id": 591, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "checkAndClearConfirmations", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 525, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 535, - "name": "", + "id": 524, + "name": "transactionHash", "nodeType": "VariableDeclaration", - "scope": 553, - "src": "4032:7:3", + "scope": 591, + "src": "2860:23:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6626,10 +6086,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 534, + "id": 523, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "4032:7:3", + "src": "2860:7:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -6639,63 +6099,559 @@ "visibility": "internal" } ], - "src": "4031:9:3" + "src": "2859:25:4" }, - "scope": 554, - "src": "3829:311:3", + "payable": false, + "returnParameters": { + "id": 526, + "nodeType": "ParameterList", + "parameters": [], + "src": "2906:0:4" + }, + "scope": 626, + "src": "2824:733:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 624, + "nodeType": "Block", + "src": "4051:113:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30783139", + "id": 610, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4100:4:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_25_by_1", + "typeString": "int_const 25" + }, + "value": "0x19" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_25_by_1", + "typeString": "int_const 25" + } + ], + "id": 609, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4095:4:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes1_$", + "typeString": "type(bytes1)" + }, + "typeName": "byte" + }, + "id": 611, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4095:10:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 613, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4112:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 612, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4107:4:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes1_$", + "typeString": "type(bytes1)" + }, + "typeName": "byte" + }, + "id": 614, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4107:7:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + { + "argumentTypes": null, + "id": 615, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2633, + "src": "4116:4:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GnosisSafeTeamEdition_$626", + "typeString": "contract GnosisSafeTeamEdition" + } + }, + { + "argumentTypes": null, + "id": 616, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 593, + "src": "4122:2:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 617, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 595, + "src": "4126:5:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 618, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 597, + "src": "4133:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 619, + "name": "operation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 599, + "src": "4139:9:4", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + } + }, + { + "argumentTypes": null, + "id": 620, + "name": "nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 601, + "src": "4150:5:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + }, + { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + }, + { + "typeIdentifier": "t_contract$_GnosisSafeTeamEdition_$626", + "typeString": "contract GnosisSafeTeamEdition" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 607, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2585, + "src": "4078:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 608, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4078:16:4", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 621, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4078:78:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 606, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2592, + "src": "4068:9:4", + "typeDescriptions": { + "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", + "typeString": "function () pure returns (bytes32)" + } + }, + "id": 622, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4068:89:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 605, + "id": 623, + "nodeType": "Return", + "src": "4061:96:4" + } + ] + }, + "documentation": "@dev Returns hash to be signed by owners.\n @param to Destination address.\n @param value Ether value.\n @param data Data payload.\n @param operation Operation type.\n @param nonce Transaction nonce.\n @return Transaction hash.", + "id": 625, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "getTransactionHash", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 602, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 593, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 625, + "src": "3872:10:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 592, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3872:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 595, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 625, + "src": "3893:13:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 594, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3893:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 597, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 625, + "src": "3917:10:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 596, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3917:5:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 599, + "name": "operation", + "nodeType": "VariableDeclaration", + "scope": 625, + "src": "3938:24:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + }, + "typeName": { + "contractScope": null, + "id": 598, + "name": "Enum.Operation", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 29, + "src": "3938:14:4", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 601, + "name": "nonce", + "nodeType": "VariableDeclaration", + "scope": 625, + "src": "3973:13:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 600, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3973:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3862:130:4" + }, + "payable": false, + "returnParameters": { + "id": 605, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 604, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 625, + "src": "4038:7:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 603, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4038:7:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4037:9:4" + }, + "scope": 626, + "src": "3835:329:4", "stateMutability": "view", "superFunction": null, "visibility": "public" } ], - "scope": 555, - "src": "272:3870:3" + "scope": 627, + "src": "272:3894:4" } ], - "src": "0:4143:3" + "src": "0:4167:4" }, "compiler": { "name": "solc", - "version": "0.4.23+commit.124ca40d.Emscripten.clang" + "version": "0.4.24+commit.e67f0147.Emscripten.clang" }, "networks": { "4": { "events": {}, "links": {}, - "address": "0x2dd472fa9a922d380282775d1b0a33b2ce62d094", - "transactionHash": "0x680b211f800d9cfe49c7f9d9e0259032d19ff74c43e7f44e16f14b1220ca7b89" - }, - "1525950336085": { - "events": {}, - "links": {}, - "address": "0xd16506c40cb044bf78552d9bea796c9d98fa0a45", - "transactionHash": "0x782ef1b28e30afdcb711e7119c7bc794bbd7f42356ea5a68072b8f59400b05e3" - }, - "1526283540628": { - "events": {}, - "links": {}, - "address": "0xaadc387a6c96744064754aa1f2391cbe1bb55970", - "transactionHash": "0x782ef1b28e30afdcb711e7119c7bc794bbd7f42356ea5a68072b8f59400b05e3" - }, - "1526478212260": { - "events": {}, - "links": {}, - "address": "0xac64aef07af9275b66107f36039a47592c6507f8", - "transactionHash": "0x8004ae7f9ec8f459da793c0882711d8488c50b973f4bdddb9df31cade42b2cd3" - }, - "1526973574996": { - "events": {}, - "links": {}, - "address": "0x592b6c1e500c567c0dd01c2a1dd6b84db9c41ace", - "transactionHash": "0x8004ae7f9ec8f459da793c0882711d8488c50b973f4bdddb9df31cade42b2cd3" + "address": "0x2c4aed3a457a6c22b69e3c265e8ea2f1c63c3a22", + "transactionHash": "0xadc1acb04257fdd33996d12fb7aacca9dd0bbd4791091cadba4feb42d58d84b7" }, "1527316019334": { "events": {}, "links": {}, - "address": "0x29978b66e148e3e61ccff27e1f68784ed491fd82", - "transactionHash": "0x8004ae7f9ec8f459da793c0882711d8488c50b973f4bdddb9df31cade42b2cd3" + "address": "0x8a0005965449a50c878f81366c85b1b8ed684cd9", + "transactionHash": "0xb4a3d52a904d829e91e4502b2b0659cbfd5a90dd2af4c90f9d488e4e3f3b47d2" + }, + "1527420696956": { + "events": {}, + "links": {}, + "address": "0x60c424968c3dc4ff9130b80591c0b97dda690b66", + "transactionHash": "0x304ee33d69762c466c689bbea9fcce594bfafd1cbad5482e75be43ad24ca200f" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-26T06:28:28.342Z" + "updatedAt": "2018-05-27T11:31:46.251Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/MasterCopy.json b/safe-contracts/build/contracts/MasterCopy.json index 75b6f868..5d41f32a 100644 --- a/safe-contracts/build/contracts/MasterCopy.json +++ b/safe-contracts/build/contracts/MasterCopy.json @@ -16,40 +16,40 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50610158806100206000396000f300608060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680637de7edef14610046575b600080fd5b34801561005257600080fd5b50610087600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610089565b005b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156100c357600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141515156100e957600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505600a165627a7a7230582073cd5ab8858f9d67e5e09748f71ecf939357d0d1230776e9f935b1ef5d664eb00029", - "deployedBytecode": "0x608060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680637de7edef14610046575b600080fd5b34801561005257600080fd5b50610087600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610089565b005b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156100c357600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141515156100e957600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505600a165627a7a7230582073cd5ab8858f9d67e5e09748f71ecf939357d0d1230776e9f935b1ef5d664eb00029", - "sourceMap": "203:633:4:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;203:633:4;;;;;;;", - "deployedSourceMap": "203:633:4:-;;;;;;;;;;;;;;;;;;;;;;;;626:208;;8:9:-1;5:2;;;30:1;27;20:12;5:2;626:208:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;244:4:8;222:27;;:10;:27;;;214:36;;;;;;;;791:1:4;776:11;:16;;;;768:25;;;;;;;;816:11;803:10;;:24;;;;;;;;;;;;;;;;;;626:208;:::o", - "source": "pragma solidity 0.4.23;\nimport \"./SelfAuthorized.sol\";\n\n\n/// @title MasterCopy - Base for master copy contracts (should always be first super contract)\n/// @author Richard Meissner - \ncontract MasterCopy is SelfAuthorized {\n // masterCopy always needs to be first declared variable, to ensure that it is at the same location as in the Proxy contract.\n // It should also always be ensured that the address is stored alone (uses a full word)\n address masterCopy;\n\n /// @dev Allows to upgrade the contract. This can only be done via a Safe transaction.\n /// @param _masterCopy New contract address.\n function changeMasterCopy(address _masterCopy)\n public\n authorized\n {\n // Master copy address cannot be null.\n require(_masterCopy != 0);\n masterCopy = _masterCopy;\n }\n}\n", + "bytecode": "0x608060405234801561001057600080fd5b50610158806100206000396000f300608060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680637de7edef14610046575b600080fd5b34801561005257600080fd5b50610087600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610089565b005b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156100c357600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141515156100e957600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505600a165627a7a72305820af102433b8ccec4f2f22acc2112a110b3e5e8a3a9a6410aebbe25fc9281607660029", + "deployedBytecode": "0x608060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680637de7edef14610046575b600080fd5b34801561005257600080fd5b50610087600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610089565b005b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156100c357600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141515156100e957600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505600a165627a7a72305820af102433b8ccec4f2f22acc2112a110b3e5e8a3a9a6410aebbe25fc9281607660029", + "sourceMap": "203:633:5:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;203:633:5;;;;;;;", + "deployedSourceMap": "203:633:5:-;;;;;;;;;;;;;;;;;;;;;;;;626:208;;8:9:-1;5:2;;;30:1;27;20:12;5:2;626:208:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;244:4:13;222:27;;:10;:27;;;214:36;;;;;;;;791:1:5;776:11;:16;;;;768:25;;;;;;;;816:11;803:10;;:24;;;;;;;;;;;;;;;;;;626:208;:::o", + "source": "pragma solidity 0.4.24;\nimport \"./SelfAuthorized.sol\";\n\n\n/// @title MasterCopy - Base for master copy contracts (should always be first super contract)\n/// @author Richard Meissner - \ncontract MasterCopy is SelfAuthorized {\n // masterCopy always needs to be first declared variable, to ensure that it is at the same location as in the Proxy contract.\n // It should also always be ensured that the address is stored alone (uses a full word)\n address masterCopy;\n\n /// @dev Allows to upgrade the contract. This can only be done via a Safe transaction.\n /// @param _masterCopy New contract address.\n function changeMasterCopy(address _masterCopy)\n public\n authorized\n {\n // Master copy address cannot be null.\n require(_masterCopy != 0);\n masterCopy = _masterCopy;\n }\n}\n", "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/MasterCopy.sol", "ast": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/MasterCopy.sol", "exportedSymbols": { "MasterCopy": [ - 580 + 652 ] }, - "id": 581, + "id": 653, "nodeType": "SourceUnit", "nodes": [ { - "id": 556, + "id": 628, "literals": [ "solidity", "0.4", - ".23" + ".24" ], "nodeType": "PragmaDirective", - "src": "0:23:4" + "src": "0:23:5" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/SelfAuthorized.sol", "file": "./SelfAuthorized.sol", - "id": 557, + "id": 629, "nodeType": "ImportDirective", - "scope": 581, - "sourceUnit": 1360, - "src": "24:30:4", + "scope": 653, + "sourceUnit": 1620, + "src": "24:30:5", "symbolAliases": [], "unitAlias": "" }, @@ -59,42 +59,42 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 558, + "id": 630, "name": "SelfAuthorized", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1359, - "src": "226:14:4", + "referencedDeclaration": 1619, + "src": "226:14:5", "typeDescriptions": { - "typeIdentifier": "t_contract$_SelfAuthorized_$1359", + "typeIdentifier": "t_contract$_SelfAuthorized_$1619", "typeString": "contract SelfAuthorized" } }, - "id": 559, + "id": 631, "nodeType": "InheritanceSpecifier", - "src": "226:14:4" + "src": "226:14:5" } ], "contractDependencies": [ - 1359 + 1619 ], "contractKind": "contract", "documentation": "@title MasterCopy - Base for master copy contracts (should always be first super contract)\n @author Richard Meissner - ", "fullyImplemented": true, - "id": 580, + "id": 652, "linearizedBaseContracts": [ - 580, - 1359 + 652, + 1619 ], "name": "MasterCopy", "nodeType": "ContractDefinition", "nodes": [ { "constant": false, - "id": 561, + "id": 633, "name": "masterCopy", "nodeType": "VariableDeclaration", - "scope": 580, - "src": "465:18:4", + "scope": 652, + "src": "465:18:5", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -102,10 +102,10 @@ "typeString": "address" }, "typeName": { - "id": 560, + "id": 632, "name": "address", "nodeType": "ElementaryTypeName", - "src": "465:7:4", + "src": "465:7:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -116,9 +116,9 @@ }, { "body": { - "id": 578, + "id": 650, "nodeType": "Block", - "src": "711:123:4", + "src": "711:123:5", "statements": [ { "expression": { @@ -130,19 +130,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 571, + "id": 643, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 569, + "id": 641, "name": "_masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 563, - "src": "776:11:4", + "referencedDeclaration": 635, + "src": "776:11:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -153,14 +153,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 570, + "id": 642, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "791:1:4", + "src": "791:1:5", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -168,7 +168,7 @@ }, "value": "0" }, - "src": "776:16:4", + "src": "776:16:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -182,21 +182,21 @@ "typeString": "bool" } ], - "id": 568, + "id": 640, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "768:7:4", + "referencedDeclaration": 2601, + "src": "768:7:5", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 572, + "id": 644, "isConstant": false, "isLValue": false, "isPure": false, @@ -204,32 +204,32 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "768:25:4", + "src": "768:25:5", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 573, + "id": 645, "nodeType": "ExpressionStatement", - "src": "768:25:4" + "src": "768:25:5" }, { "expression": { "argumentTypes": null, - "id": 576, + "id": 648, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 574, + "id": 646, "name": "masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 561, - "src": "803:10:4", + "referencedDeclaration": 633, + "src": "803:10:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -239,68 +239,68 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 575, + "id": 647, "name": "_masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 563, - "src": "816:11:4", + "referencedDeclaration": 635, + "src": "816:11:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "803:24:4", + "src": "803:24:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 577, + "id": 649, "nodeType": "ExpressionStatement", - "src": "803:24:4" + "src": "803:24:5" } ] }, "documentation": "@dev Allows to upgrade the contract. This can only be done via a Safe transaction.\n @param _masterCopy New contract address.", - "id": 579, + "id": 651, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 566, + "id": 638, "modifierName": { "argumentTypes": null, - "id": 565, + "id": 637, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1358, - "src": "696:10:4", + "referencedDeclaration": 1618, + "src": "696:10:5", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "696:10:4" + "src": "696:10:5" } ], "name": "changeMasterCopy", "nodeType": "FunctionDefinition", "parameters": { - "id": 564, + "id": 636, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 563, + "id": 635, "name": "_masterCopy", "nodeType": "VariableDeclaration", - "scope": 579, - "src": "652:19:4", + "scope": 651, + "src": "652:19:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -308,10 +308,10 @@ "typeString": "address" }, "typeName": { - "id": 562, + "id": 634, "name": "address", "nodeType": "ElementaryTypeName", - "src": "652:7:4", + "src": "652:7:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -321,56 +321,56 @@ "visibility": "internal" } ], - "src": "651:21:4" + "src": "651:21:5" }, "payable": false, "returnParameters": { - "id": 567, + "id": 639, "nodeType": "ParameterList", "parameters": [], - "src": "711:0:4" + "src": "711:0:5" }, - "scope": 580, - "src": "626:208:4", + "scope": 652, + "src": "626:208:5", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" } ], - "scope": 581, - "src": "203:633:4" + "scope": 653, + "src": "203:633:5" } ], - "src": "0:837:4" + "src": "0:837:5" }, "legacyAST": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/MasterCopy.sol", "exportedSymbols": { "MasterCopy": [ - 580 + 652 ] }, - "id": 581, + "id": 653, "nodeType": "SourceUnit", "nodes": [ { - "id": 556, + "id": 628, "literals": [ "solidity", "0.4", - ".23" + ".24" ], "nodeType": "PragmaDirective", - "src": "0:23:4" + "src": "0:23:5" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/SelfAuthorized.sol", "file": "./SelfAuthorized.sol", - "id": 557, + "id": 629, "nodeType": "ImportDirective", - "scope": 581, - "sourceUnit": 1360, - "src": "24:30:4", + "scope": 653, + "sourceUnit": 1620, + "src": "24:30:5", "symbolAliases": [], "unitAlias": "" }, @@ -380,42 +380,42 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 558, + "id": 630, "name": "SelfAuthorized", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1359, - "src": "226:14:4", + "referencedDeclaration": 1619, + "src": "226:14:5", "typeDescriptions": { - "typeIdentifier": "t_contract$_SelfAuthorized_$1359", + "typeIdentifier": "t_contract$_SelfAuthorized_$1619", "typeString": "contract SelfAuthorized" } }, - "id": 559, + "id": 631, "nodeType": "InheritanceSpecifier", - "src": "226:14:4" + "src": "226:14:5" } ], "contractDependencies": [ - 1359 + 1619 ], "contractKind": "contract", "documentation": "@title MasterCopy - Base for master copy contracts (should always be first super contract)\n @author Richard Meissner - ", "fullyImplemented": true, - "id": 580, + "id": 652, "linearizedBaseContracts": [ - 580, - 1359 + 652, + 1619 ], "name": "MasterCopy", "nodeType": "ContractDefinition", "nodes": [ { "constant": false, - "id": 561, + "id": 633, "name": "masterCopy", "nodeType": "VariableDeclaration", - "scope": 580, - "src": "465:18:4", + "scope": 652, + "src": "465:18:5", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -423,10 +423,10 @@ "typeString": "address" }, "typeName": { - "id": 560, + "id": 632, "name": "address", "nodeType": "ElementaryTypeName", - "src": "465:7:4", + "src": "465:7:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -437,9 +437,9 @@ }, { "body": { - "id": 578, + "id": 650, "nodeType": "Block", - "src": "711:123:4", + "src": "711:123:5", "statements": [ { "expression": { @@ -451,19 +451,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 571, + "id": 643, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 569, + "id": 641, "name": "_masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 563, - "src": "776:11:4", + "referencedDeclaration": 635, + "src": "776:11:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -474,14 +474,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 570, + "id": 642, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "791:1:4", + "src": "791:1:5", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -489,7 +489,7 @@ }, "value": "0" }, - "src": "776:16:4", + "src": "776:16:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -503,21 +503,21 @@ "typeString": "bool" } ], - "id": 568, + "id": 640, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "768:7:4", + "referencedDeclaration": 2601, + "src": "768:7:5", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 572, + "id": 644, "isConstant": false, "isLValue": false, "isPure": false, @@ -525,32 +525,32 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "768:25:4", + "src": "768:25:5", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 573, + "id": 645, "nodeType": "ExpressionStatement", - "src": "768:25:4" + "src": "768:25:5" }, { "expression": { "argumentTypes": null, - "id": 576, + "id": 648, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 574, + "id": 646, "name": "masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 561, - "src": "803:10:4", + "referencedDeclaration": 633, + "src": "803:10:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -560,68 +560,68 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 575, + "id": 647, "name": "_masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 563, - "src": "816:11:4", + "referencedDeclaration": 635, + "src": "816:11:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "803:24:4", + "src": "803:24:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 577, + "id": 649, "nodeType": "ExpressionStatement", - "src": "803:24:4" + "src": "803:24:5" } ] }, "documentation": "@dev Allows to upgrade the contract. This can only be done via a Safe transaction.\n @param _masterCopy New contract address.", - "id": 579, + "id": 651, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 566, + "id": 638, "modifierName": { "argumentTypes": null, - "id": 565, + "id": 637, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1358, - "src": "696:10:4", + "referencedDeclaration": 1618, + "src": "696:10:5", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "696:10:4" + "src": "696:10:5" } ], "name": "changeMasterCopy", "nodeType": "FunctionDefinition", "parameters": { - "id": 564, + "id": 636, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 563, + "id": 635, "name": "_masterCopy", "nodeType": "VariableDeclaration", - "scope": 579, - "src": "652:19:4", + "scope": 651, + "src": "652:19:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -629,10 +629,10 @@ "typeString": "address" }, "typeName": { - "id": 562, + "id": 634, "name": "address", "nodeType": "ElementaryTypeName", - "src": "652:7:4", + "src": "652:7:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -642,33 +642,33 @@ "visibility": "internal" } ], - "src": "651:21:4" + "src": "651:21:5" }, "payable": false, "returnParameters": { - "id": 567, + "id": 639, "nodeType": "ParameterList", "parameters": [], - "src": "711:0:4" + "src": "711:0:5" }, - "scope": 580, - "src": "626:208:4", + "scope": 652, + "src": "626:208:5", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" } ], - "scope": 581, - "src": "203:633:4" + "scope": 653, + "src": "203:633:5" } ], - "src": "0:837:4" + "src": "0:837:5" }, "compiler": { "name": "solc", - "version": "0.4.23+commit.124ca40d.Emscripten.clang" + "version": "0.4.24+commit.e67f0147.Emscripten.clang" }, "networks": {}, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-16T10:51:14.746Z" + "updatedAt": "2018-05-27T11:12:45.579Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/Migrations.json b/safe-contracts/build/contracts/Migrations.json index 2f25e4e0..a7baf88b 100644 --- a/safe-contracts/build/contracts/Migrations.json +++ b/safe-contracts/build/contracts/Migrations.json @@ -64,24 +64,24 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506102f8806100606000396000f300608060405260043610610062576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630900f01014610067578063445df0ac146100aa5780638da5cb5b146100d5578063fdacd5761461012c575b600080fd5b34801561007357600080fd5b506100a8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610159565b005b3480156100b657600080fd5b506100bf610241565b6040518082815260200191505060405180910390f35b3480156100e157600080fd5b506100ea610247565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561013857600080fd5b506101576004803603810190808035906020019092919050505061026c565b005b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561023d578190508073ffffffffffffffffffffffffffffffffffffffff1663fdacd5766001546040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050600060405180830381600087803b15801561022457600080fd5b505af1158015610238573d6000803e3d6000fd5b505050505b5050565b60015481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156102c957806001819055505b505600a165627a7a723058206ae04dab7842a035dafed67c3a7c6e4dba46f3f40b8fa0fd9a934fb2efadc85b0029", - "deployedBytecode": "0x608060405260043610610062576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630900f01014610067578063445df0ac146100aa5780638da5cb5b146100d5578063fdacd5761461012c575b600080fd5b34801561007357600080fd5b506100a8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610159565b005b3480156100b657600080fd5b506100bf610241565b6040518082815260200191505060405180910390f35b3480156100e157600080fd5b506100ea610247565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561013857600080fd5b506101576004803603810190808035906020019092919050505061026c565b005b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561023d578190508073ffffffffffffffffffffffffffffffffffffffff1663fdacd5766001546040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050600060405180830381600087803b15801561022457600080fd5b505af1158015610238573d6000803e3d6000fd5b505050505b5050565b60015481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156102c957806001819055505b505600a165627a7a723058206ae04dab7842a035dafed67c3a7c6e4dba46f3f40b8fa0fd9a934fb2efadc85b0029", - "sourceMap": "25:580:7:-;;;191:76;8:9:-1;5:2;;;30:1;27;20:12;5:2;191:76:7;250:10;242:5;;:18;;;;;;;;;;;;;;;;;;25:580;;;;;;", - "deployedSourceMap": "25:580:7:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;408:195;;8:9:-1;5:2;;;30:1;27;20:12;5:2;408:195:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;77:36;;8:9:-1;5:2;;;30:1;27;20:12;5:2;77:36:7;;;;;;;;;;;;;;;;;;;;;;;51:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;51:20:7;;;;;;;;;;;;;;;;;;;;;;;;;;;273:129;;8:9:-1;5:2;;;30:1;27;20:12;5:2;273:129:7;;;;;;;;;;;;;;;;;;;;;;;;;;408:195;494:19;170:5;;;;;;;;;;;156:19;;:10;:19;;;152:26;;;527:11;494:45;;549:8;:21;;;571:24;;549:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;549:47:7;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;549:47:7;;;;152:26;408:195;;:::o;77:36::-;;;;:::o;51:20::-;;;;;;;;;;;;;:::o;273:129::-;170:5;;;;;;;;;;;156:19;;:10;:19;;;152:26;;;386:9;359:24;:36;;;;152:26;273:129;:::o", - "source": "pragma solidity ^0.4.4;\n\ncontract Migrations {\n address public owner;\n uint public last_completed_migration;\n\n modifier restricted() {\n if (msg.sender == owner) _;\n }\n\n function Migrations()\n public\n {\n owner = msg.sender;\n }\n\n function setCompleted(uint completed)\n public\n restricted\n {\n last_completed_migration = completed;\n }\n\n function upgrade(address new_address)\n public\n restricted\n {\n Migrations upgraded = Migrations(new_address);\n upgraded.setCompleted(last_completed_migration);\n }\n}\n", + "bytecode": "0x608060405234801561001057600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506102f8806100606000396000f300608060405260043610610062576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630900f01014610067578063445df0ac146100aa5780638da5cb5b146100d5578063fdacd5761461012c575b600080fd5b34801561007357600080fd5b506100a8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610159565b005b3480156100b657600080fd5b506100bf610241565b6040518082815260200191505060405180910390f35b3480156100e157600080fd5b506100ea610247565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561013857600080fd5b506101576004803603810190808035906020019092919050505061026c565b005b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561023d578190508073ffffffffffffffffffffffffffffffffffffffff1663fdacd5766001546040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050600060405180830381600087803b15801561022457600080fd5b505af1158015610238573d6000803e3d6000fd5b505050505b5050565b60015481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156102c957806001819055505b505600a165627a7a72305820395a1faf61b0f17e3924c1d3e3b1152739b523adb57dd5b79bb0bea6897a5ff70029", + "deployedBytecode": "0x608060405260043610610062576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630900f01014610067578063445df0ac146100aa5780638da5cb5b146100d5578063fdacd5761461012c575b600080fd5b34801561007357600080fd5b506100a8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610159565b005b3480156100b657600080fd5b506100bf610241565b6040518082815260200191505060405180910390f35b3480156100e157600080fd5b506100ea610247565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561013857600080fd5b506101576004803603810190808035906020019092919050505061026c565b005b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561023d578190508073ffffffffffffffffffffffffffffffffffffffff1663fdacd5766001546040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050600060405180830381600087803b15801561022457600080fd5b505af1158015610238573d6000803e3d6000fd5b505050505b5050565b60015481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156102c957806001819055505b505600a165627a7a72305820395a1faf61b0f17e3924c1d3e3b1152739b523adb57dd5b79bb0bea6897a5ff70029", + "sourceMap": "25:572:6:-;;;191:68;8:9:-1;5:2;;;30:1;27;20:12;5:2;191:68:6;242:10;234:5;;:18;;;;;;;;;;;;;;;;;;25:572;;;;;;", + "deployedSourceMap": "25:572:6:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;400:195;;8:9:-1;5:2;;;30:1;27;20:12;5:2;400:195:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;77:36;;8:9:-1;5:2;;;30:1;27;20:12;5:2;77:36:6;;;;;;;;;;;;;;;;;;;;;;;51:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;51:20:6;;;;;;;;;;;;;;;;;;;;;;;;;;;265:129;;8:9:-1;5:2;;;30:1;27;20:12;5:2;265:129:6;;;;;;;;;;;;;;;;;;;;;;;;;;400:195;486:19;170:5;;;;;;;;;;;156:19;;:10;:19;;;152:26;;;519:11;486:45;;541:8;:21;;;563:24;;541:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;541:47:6;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;541:47:6;;;;152:26;400:195;;:::o;77:36::-;;;;:::o;51:20::-;;;;;;;;;;;;;:::o;265:129::-;170:5;;;;;;;;;;;156:19;;:10;:19;;;152:26;;;378:9;351:24;:36;;;;152:26;265:129;:::o", + "source": "pragma solidity ^0.4.4;\n\ncontract Migrations {\n address public owner;\n uint public last_completed_migration;\n\n modifier restricted() {\n if (msg.sender == owner) _;\n }\n\n constructor()\n public\n {\n owner = msg.sender;\n }\n\n function setCompleted(uint completed)\n public\n restricted\n {\n last_completed_migration = completed;\n }\n\n function upgrade(address new_address)\n public\n restricted\n {\n Migrations upgraded = Migrations(new_address);\n upgraded.setCompleted(last_completed_migration);\n }\n}\n", "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Migrations.sol", "ast": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Migrations.sol", "exportedSymbols": { "Migrations": [ - 836 + 709 ] }, - "id": 837, + "id": 710, "nodeType": "SourceUnit", "nodes": [ { - "id": 781, + "id": 654, "literals": [ "solidity", "^", @@ -89,7 +89,7 @@ ".4" ], "nodeType": "PragmaDirective", - "src": "0:23:7" + "src": "0:23:6" }, { "baseContracts": [], @@ -97,20 +97,20 @@ "contractKind": "contract", "documentation": null, "fullyImplemented": true, - "id": 836, + "id": 709, "linearizedBaseContracts": [ - 836 + 709 ], "name": "Migrations", "nodeType": "ContractDefinition", "nodes": [ { "constant": false, - "id": 783, + "id": 656, "name": "owner", "nodeType": "VariableDeclaration", - "scope": 836, - "src": "51:20:7", + "scope": 709, + "src": "51:20:6", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -118,10 +118,10 @@ "typeString": "address" }, "typeName": { - "id": 782, + "id": 655, "name": "address", "nodeType": "ElementaryTypeName", - "src": "51:7:7", + "src": "51:7:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -132,11 +132,11 @@ }, { "constant": false, - "id": 785, + "id": 658, "name": "last_completed_migration", "nodeType": "VariableDeclaration", - "scope": 836, - "src": "77:36:7", + "scope": 709, + "src": "77:36:6", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -144,10 +144,10 @@ "typeString": "uint256" }, "typeName": { - "id": 784, + "id": 657, "name": "uint", "nodeType": "ElementaryTypeName", - "src": "77:4:7", + "src": "77:4:6", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -158,9 +158,9 @@ }, { "body": { - "id": 793, + "id": 666, "nodeType": "Block", - "src": "142:43:7", + "src": "142:43:6", "statements": [ { "condition": { @@ -169,7 +169,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 790, + "id": 663, "isConstant": false, "isLValue": false, "isPure": false, @@ -178,18 +178,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 787, + "id": 660, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2465, - "src": "156:3:7", + "referencedDeclaration": 2598, + "src": "156:3:6", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 788, + "id": 661, "isConstant": false, "isLValue": false, "isPure": false, @@ -197,7 +197,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "156:10:7", + "src": "156:10:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -207,70 +207,70 @@ "operator": "==", "rightExpression": { "argumentTypes": null, - "id": 789, + "id": 662, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 783, - "src": "170:5:7", + "referencedDeclaration": 656, + "src": "170:5:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "156:19:7", + "src": "156:19:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 792, + "id": 665, "nodeType": "IfStatement", - "src": "152:26:7", + "src": "152:26:6", "trueBody": { - "id": 791, + "id": 664, "nodeType": "PlaceholderStatement", - "src": "177:1:7" + "src": "177:1:6" } } ] }, "documentation": null, - "id": 794, + "id": 667, "name": "restricted", "nodeType": "ModifierDefinition", "parameters": { - "id": 786, + "id": 659, "nodeType": "ParameterList", "parameters": [], - "src": "139:2:7" + "src": "139:2:6" }, - "src": "120:65:7", + "src": "120:65:6", "visibility": "internal" }, { "body": { - "id": 802, + "id": 675, "nodeType": "Block", - "src": "232:35:7", + "src": "224:35:6", "statements": [ { "expression": { "argumentTypes": null, - "id": 800, + "id": 673, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 797, + "id": 670, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 783, - "src": "242:5:7", + "referencedDeclaration": 656, + "src": "234:5:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -282,18 +282,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 798, + "id": 671, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2465, - "src": "250:3:7", + "referencedDeclaration": 2598, + "src": "242:3:6", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 799, + "id": 672, "isConstant": false, "isLValue": false, "isPure": false, @@ -301,73 +301,73 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "250:10:7", + "src": "242:10:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "242:18:7", + "src": "234:18:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 801, + "id": 674, "nodeType": "ExpressionStatement", - "src": "242:18:7" + "src": "234:18:6" } ] }, "documentation": null, - "id": 803, + "id": 676, "implemented": true, "isConstructor": true, "isDeclaredConst": false, "modifiers": [], - "name": "Migrations", + "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 795, + "id": 668, "nodeType": "ParameterList", "parameters": [], - "src": "210:2:7" + "src": "202:2:6" }, "payable": false, "returnParameters": { - "id": 796, + "id": 669, "nodeType": "ParameterList", "parameters": [], - "src": "232:0:7" + "src": "224:0:6" }, - "scope": 836, - "src": "191:76:7", + "scope": 709, + "src": "191:68:6", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 814, + "id": 687, "nodeType": "Block", - "src": "349:53:7", + "src": "341:53:6", "statements": [ { "expression": { "argumentTypes": null, - "id": 812, + "id": 685, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 810, + "id": 683, "name": "last_completed_migration", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 785, - "src": "359:24:7", + "referencedDeclaration": 658, + "src": "351:24:6", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -377,68 +377,68 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 811, + "id": 684, "name": "completed", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 805, - "src": "386:9:7", + "referencedDeclaration": 678, + "src": "378:9:6", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "359:36:7", + "src": "351:36:6", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 813, + "id": 686, "nodeType": "ExpressionStatement", - "src": "359:36:7" + "src": "351:36:6" } ] }, "documentation": null, - "id": 815, + "id": 688, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 808, + "id": 681, "modifierName": { "argumentTypes": null, - "id": 807, + "id": 680, "name": "restricted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 794, - "src": "334:10:7", + "referencedDeclaration": 667, + "src": "326:10:6", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "334:10:7" + "src": "326:10:6" } ], "name": "setCompleted", "nodeType": "FunctionDefinition", "parameters": { - "id": 806, + "id": 679, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 805, + "id": 678, "name": "completed", "nodeType": "VariableDeclaration", - "scope": 815, - "src": "295:14:7", + "scope": 688, + "src": "287:14:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -446,10 +446,10 @@ "typeString": "uint256" }, "typeName": { - "id": 804, + "id": 677, "name": "uint", "nodeType": "ElementaryTypeName", - "src": "295:4:7", + "src": "287:4:6", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -459,54 +459,54 @@ "visibility": "internal" } ], - "src": "294:16:7" + "src": "286:16:6" }, "payable": false, "returnParameters": { - "id": 809, + "id": 682, "nodeType": "ParameterList", "parameters": [], - "src": "349:0:7" + "src": "341:0:6" }, - "scope": 836, - "src": "273:129:7", + "scope": 709, + "src": "265:129:6", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 834, + "id": 707, "nodeType": "Block", - "src": "484:119:7", + "src": "476:119:6", "statements": [ { "assignments": [ - 823 + 696 ], "declarations": [ { "constant": false, - "id": 823, + "id": 696, "name": "upgraded", "nodeType": "VariableDeclaration", - "scope": 835, - "src": "494:19:7", + "scope": 708, + "src": "486:19:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_Migrations_$836", + "typeIdentifier": "t_contract$_Migrations_$709", "typeString": "contract Migrations" }, "typeName": { "contractScope": null, - "id": 822, + "id": 695, "name": "Migrations", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 836, - "src": "494:10:7", + "referencedDeclaration": 709, + "src": "486:10:6", "typeDescriptions": { - "typeIdentifier": "t_contract$_Migrations_$836", + "typeIdentifier": "t_contract$_Migrations_$709", "typeString": "contract Migrations" } }, @@ -514,18 +514,18 @@ "visibility": "internal" } ], - "id": 827, + "id": 700, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 825, + "id": 698, "name": "new_address", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 817, - "src": "527:11:7", + "referencedDeclaration": 690, + "src": "519:11:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -539,18 +539,18 @@ "typeString": "address" } ], - "id": 824, + "id": 697, "name": "Migrations", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 836, - "src": "516:10:7", + "referencedDeclaration": 709, + "src": "508:10:6", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Migrations_$836_$", + "typeIdentifier": "t_type$_t_contract$_Migrations_$709_$", "typeString": "type(contract Migrations)" } }, - "id": 826, + "id": 699, "isConstant": false, "isLValue": false, "isPure": false, @@ -558,14 +558,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "516:23:7", + "src": "508:23:6", "typeDescriptions": { - "typeIdentifier": "t_contract$_Migrations_$836", + "typeIdentifier": "t_contract$_Migrations_$709", "typeString": "contract Migrations" } }, "nodeType": "VariableDeclarationStatement", - "src": "494:45:7" + "src": "486:45:6" }, { "expression": { @@ -573,12 +573,12 @@ "arguments": [ { "argumentTypes": null, - "id": 831, + "id": 704, "name": "last_completed_migration", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 785, - "src": "571:24:7", + "referencedDeclaration": 658, + "src": "563:24:6", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -594,32 +594,32 @@ ], "expression": { "argumentTypes": null, - "id": 828, + "id": 701, "name": "upgraded", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 823, - "src": "549:8:7", + "referencedDeclaration": 696, + "src": "541:8:6", "typeDescriptions": { - "typeIdentifier": "t_contract$_Migrations_$836", + "typeIdentifier": "t_contract$_Migrations_$709", "typeString": "contract Migrations" } }, - "id": 830, + "id": 703, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "setCompleted", "nodeType": "MemberAccess", - "referencedDeclaration": 815, - "src": "549:21:7", + "referencedDeclaration": 688, + "src": "541:21:6", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256) external" } }, - "id": 832, + "id": 705, "isConstant": false, "isLValue": false, "isPure": false, @@ -627,57 +627,57 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "549:47:7", + "src": "541:47:6", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 833, + "id": 706, "nodeType": "ExpressionStatement", - "src": "549:47:7" + "src": "541:47:6" } ] }, "documentation": null, - "id": 835, + "id": 708, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 820, + "id": 693, "modifierName": { "argumentTypes": null, - "id": 819, + "id": 692, "name": "restricted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 794, - "src": "469:10:7", + "referencedDeclaration": 667, + "src": "461:10:6", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "469:10:7" + "src": "461:10:6" } ], "name": "upgrade", "nodeType": "FunctionDefinition", "parameters": { - "id": 818, + "id": 691, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 817, + "id": 690, "name": "new_address", "nodeType": "VariableDeclaration", - "scope": 835, - "src": "425:19:7", + "scope": 708, + "src": "417:19:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -685,10 +685,10 @@ "typeString": "address" }, "typeName": { - "id": 816, + "id": 689, "name": "address", "nodeType": "ElementaryTypeName", - "src": "425:7:7", + "src": "417:7:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -698,40 +698,40 @@ "visibility": "internal" } ], - "src": "424:21:7" + "src": "416:21:6" }, "payable": false, "returnParameters": { - "id": 821, + "id": 694, "nodeType": "ParameterList", "parameters": [], - "src": "484:0:7" + "src": "476:0:6" }, - "scope": 836, - "src": "408:195:7", + "scope": 709, + "src": "400:195:6", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" } ], - "scope": 837, - "src": "25:580:7" + "scope": 710, + "src": "25:572:6" } ], - "src": "0:606:7" + "src": "0:598:6" }, "legacyAST": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Migrations.sol", "exportedSymbols": { "Migrations": [ - 836 + 709 ] }, - "id": 837, + "id": 710, "nodeType": "SourceUnit", "nodes": [ { - "id": 781, + "id": 654, "literals": [ "solidity", "^", @@ -739,7 +739,7 @@ ".4" ], "nodeType": "PragmaDirective", - "src": "0:23:7" + "src": "0:23:6" }, { "baseContracts": [], @@ -747,20 +747,20 @@ "contractKind": "contract", "documentation": null, "fullyImplemented": true, - "id": 836, + "id": 709, "linearizedBaseContracts": [ - 836 + 709 ], "name": "Migrations", "nodeType": "ContractDefinition", "nodes": [ { "constant": false, - "id": 783, + "id": 656, "name": "owner", "nodeType": "VariableDeclaration", - "scope": 836, - "src": "51:20:7", + "scope": 709, + "src": "51:20:6", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -768,10 +768,10 @@ "typeString": "address" }, "typeName": { - "id": 782, + "id": 655, "name": "address", "nodeType": "ElementaryTypeName", - "src": "51:7:7", + "src": "51:7:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -782,11 +782,11 @@ }, { "constant": false, - "id": 785, + "id": 658, "name": "last_completed_migration", "nodeType": "VariableDeclaration", - "scope": 836, - "src": "77:36:7", + "scope": 709, + "src": "77:36:6", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -794,10 +794,10 @@ "typeString": "uint256" }, "typeName": { - "id": 784, + "id": 657, "name": "uint", "nodeType": "ElementaryTypeName", - "src": "77:4:7", + "src": "77:4:6", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -808,9 +808,9 @@ }, { "body": { - "id": 793, + "id": 666, "nodeType": "Block", - "src": "142:43:7", + "src": "142:43:6", "statements": [ { "condition": { @@ -819,7 +819,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 790, + "id": 663, "isConstant": false, "isLValue": false, "isPure": false, @@ -828,18 +828,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 787, + "id": 660, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2465, - "src": "156:3:7", + "referencedDeclaration": 2598, + "src": "156:3:6", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 788, + "id": 661, "isConstant": false, "isLValue": false, "isPure": false, @@ -847,7 +847,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "156:10:7", + "src": "156:10:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -857,70 +857,70 @@ "operator": "==", "rightExpression": { "argumentTypes": null, - "id": 789, + "id": 662, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 783, - "src": "170:5:7", + "referencedDeclaration": 656, + "src": "170:5:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "156:19:7", + "src": "156:19:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 792, + "id": 665, "nodeType": "IfStatement", - "src": "152:26:7", + "src": "152:26:6", "trueBody": { - "id": 791, + "id": 664, "nodeType": "PlaceholderStatement", - "src": "177:1:7" + "src": "177:1:6" } } ] }, "documentation": null, - "id": 794, + "id": 667, "name": "restricted", "nodeType": "ModifierDefinition", "parameters": { - "id": 786, + "id": 659, "nodeType": "ParameterList", "parameters": [], - "src": "139:2:7" + "src": "139:2:6" }, - "src": "120:65:7", + "src": "120:65:6", "visibility": "internal" }, { "body": { - "id": 802, + "id": 675, "nodeType": "Block", - "src": "232:35:7", + "src": "224:35:6", "statements": [ { "expression": { "argumentTypes": null, - "id": 800, + "id": 673, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 797, + "id": 670, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 783, - "src": "242:5:7", + "referencedDeclaration": 656, + "src": "234:5:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -932,18 +932,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 798, + "id": 671, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2465, - "src": "250:3:7", + "referencedDeclaration": 2598, + "src": "242:3:6", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 799, + "id": 672, "isConstant": false, "isLValue": false, "isPure": false, @@ -951,73 +951,73 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "250:10:7", + "src": "242:10:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "242:18:7", + "src": "234:18:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 801, + "id": 674, "nodeType": "ExpressionStatement", - "src": "242:18:7" + "src": "234:18:6" } ] }, "documentation": null, - "id": 803, + "id": 676, "implemented": true, "isConstructor": true, "isDeclaredConst": false, "modifiers": [], - "name": "Migrations", + "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 795, + "id": 668, "nodeType": "ParameterList", "parameters": [], - "src": "210:2:7" + "src": "202:2:6" }, "payable": false, "returnParameters": { - "id": 796, + "id": 669, "nodeType": "ParameterList", "parameters": [], - "src": "232:0:7" + "src": "224:0:6" }, - "scope": 836, - "src": "191:76:7", + "scope": 709, + "src": "191:68:6", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 814, + "id": 687, "nodeType": "Block", - "src": "349:53:7", + "src": "341:53:6", "statements": [ { "expression": { "argumentTypes": null, - "id": 812, + "id": 685, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 810, + "id": 683, "name": "last_completed_migration", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 785, - "src": "359:24:7", + "referencedDeclaration": 658, + "src": "351:24:6", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1027,68 +1027,68 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 811, + "id": 684, "name": "completed", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 805, - "src": "386:9:7", + "referencedDeclaration": 678, + "src": "378:9:6", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "359:36:7", + "src": "351:36:6", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 813, + "id": 686, "nodeType": "ExpressionStatement", - "src": "359:36:7" + "src": "351:36:6" } ] }, "documentation": null, - "id": 815, + "id": 688, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 808, + "id": 681, "modifierName": { "argumentTypes": null, - "id": 807, + "id": 680, "name": "restricted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 794, - "src": "334:10:7", + "referencedDeclaration": 667, + "src": "326:10:6", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "334:10:7" + "src": "326:10:6" } ], "name": "setCompleted", "nodeType": "FunctionDefinition", "parameters": { - "id": 806, + "id": 679, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 805, + "id": 678, "name": "completed", "nodeType": "VariableDeclaration", - "scope": 815, - "src": "295:14:7", + "scope": 688, + "src": "287:14:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1096,10 +1096,10 @@ "typeString": "uint256" }, "typeName": { - "id": 804, + "id": 677, "name": "uint", "nodeType": "ElementaryTypeName", - "src": "295:4:7", + "src": "287:4:6", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1109,54 +1109,54 @@ "visibility": "internal" } ], - "src": "294:16:7" + "src": "286:16:6" }, "payable": false, "returnParameters": { - "id": 809, + "id": 682, "nodeType": "ParameterList", "parameters": [], - "src": "349:0:7" + "src": "341:0:6" }, - "scope": 836, - "src": "273:129:7", + "scope": 709, + "src": "265:129:6", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 834, + "id": 707, "nodeType": "Block", - "src": "484:119:7", + "src": "476:119:6", "statements": [ { "assignments": [ - 823 + 696 ], "declarations": [ { "constant": false, - "id": 823, + "id": 696, "name": "upgraded", "nodeType": "VariableDeclaration", - "scope": 835, - "src": "494:19:7", + "scope": 708, + "src": "486:19:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_Migrations_$836", + "typeIdentifier": "t_contract$_Migrations_$709", "typeString": "contract Migrations" }, "typeName": { "contractScope": null, - "id": 822, + "id": 695, "name": "Migrations", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 836, - "src": "494:10:7", + "referencedDeclaration": 709, + "src": "486:10:6", "typeDescriptions": { - "typeIdentifier": "t_contract$_Migrations_$836", + "typeIdentifier": "t_contract$_Migrations_$709", "typeString": "contract Migrations" } }, @@ -1164,18 +1164,18 @@ "visibility": "internal" } ], - "id": 827, + "id": 700, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 825, + "id": 698, "name": "new_address", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 817, - "src": "527:11:7", + "referencedDeclaration": 690, + "src": "519:11:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1189,18 +1189,18 @@ "typeString": "address" } ], - "id": 824, + "id": 697, "name": "Migrations", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 836, - "src": "516:10:7", + "referencedDeclaration": 709, + "src": "508:10:6", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Migrations_$836_$", + "typeIdentifier": "t_type$_t_contract$_Migrations_$709_$", "typeString": "type(contract Migrations)" } }, - "id": 826, + "id": 699, "isConstant": false, "isLValue": false, "isPure": false, @@ -1208,14 +1208,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "516:23:7", + "src": "508:23:6", "typeDescriptions": { - "typeIdentifier": "t_contract$_Migrations_$836", + "typeIdentifier": "t_contract$_Migrations_$709", "typeString": "contract Migrations" } }, "nodeType": "VariableDeclarationStatement", - "src": "494:45:7" + "src": "486:45:6" }, { "expression": { @@ -1223,12 +1223,12 @@ "arguments": [ { "argumentTypes": null, - "id": 831, + "id": 704, "name": "last_completed_migration", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 785, - "src": "571:24:7", + "referencedDeclaration": 658, + "src": "563:24:6", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1244,32 +1244,32 @@ ], "expression": { "argumentTypes": null, - "id": 828, + "id": 701, "name": "upgraded", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 823, - "src": "549:8:7", + "referencedDeclaration": 696, + "src": "541:8:6", "typeDescriptions": { - "typeIdentifier": "t_contract$_Migrations_$836", + "typeIdentifier": "t_contract$_Migrations_$709", "typeString": "contract Migrations" } }, - "id": 830, + "id": 703, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "setCompleted", "nodeType": "MemberAccess", - "referencedDeclaration": 815, - "src": "549:21:7", + "referencedDeclaration": 688, + "src": "541:21:6", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256) external" } }, - "id": 832, + "id": 705, "isConstant": false, "isLValue": false, "isPure": false, @@ -1277,57 +1277,57 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "549:47:7", + "src": "541:47:6", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 833, + "id": 706, "nodeType": "ExpressionStatement", - "src": "549:47:7" + "src": "541:47:6" } ] }, "documentation": null, - "id": 835, + "id": 708, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 820, + "id": 693, "modifierName": { "argumentTypes": null, - "id": 819, + "id": 692, "name": "restricted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 794, - "src": "469:10:7", + "referencedDeclaration": 667, + "src": "461:10:6", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "469:10:7" + "src": "461:10:6" } ], "name": "upgrade", "nodeType": "FunctionDefinition", "parameters": { - "id": 818, + "id": 691, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 817, + "id": 690, "name": "new_address", "nodeType": "VariableDeclaration", - "scope": 835, - "src": "425:19:7", + "scope": 708, + "src": "417:19:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1335,10 +1335,10 @@ "typeString": "address" }, "typeName": { - "id": 816, + "id": 689, "name": "address", "nodeType": "ElementaryTypeName", - "src": "425:7:7", + "src": "417:7:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1348,76 +1348,52 @@ "visibility": "internal" } ], - "src": "424:21:7" + "src": "416:21:6" }, "payable": false, "returnParameters": { - "id": 821, + "id": 694, "nodeType": "ParameterList", "parameters": [], - "src": "484:0:7" + "src": "476:0:6" }, - "scope": 836, - "src": "408:195:7", + "scope": 709, + "src": "400:195:6", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" } ], - "scope": 837, - "src": "25:580:7" + "scope": 710, + "src": "25:572:6" } ], - "src": "0:606:7" + "src": "0:598:6" }, "compiler": { "name": "solc", - "version": "0.4.23+commit.124ca40d.Emscripten.clang" + "version": "0.4.24+commit.e67f0147.Emscripten.clang" }, "networks": { "4": { "events": {}, "links": {}, - "address": "0x682586e353e6befc8c7c09ba28165afca941ed5f", - "transactionHash": "0xfa828695bce76ea64bfa11fac92c01894ca684341a49e1d583c43a0d13bb0ec1" - }, - "42": { - "events": {}, - "links": {}, - "address": "0x304f68cf0ca47b08d6bbf23c6f82d92bacf5378e", - "transactionHash": "0xa1edbc493e7f59db46fe904a775189a9fcdca9efabeea55db94f09fd64d37461" - }, - "1525950336085": { - "events": {}, - "links": {}, - "address": "0xb97a46b50b9e38d540e9701d3d4afe71a65c09df", - "transactionHash": "0x137111f15934455430bea53bd8a6721561285af6a431f174f090257877635ab6" - }, - "1526283540628": { - "events": {}, - "links": {}, - "address": "0x3b293b12ee278dba3d4350cd5b4434c228bad69b", - "transactionHash": "0x137111f15934455430bea53bd8a6721561285af6a431f174f090257877635ab6" - }, - "1526478212260": { - "events": {}, - "links": {}, - "address": "0x6ff07ab4d4ecb8339dee6bd028e379c2a1992103", - "transactionHash": "0x137111f15934455430bea53bd8a6721561285af6a431f174f090257877635ab6" - }, - "1526973574996": { - "events": {}, - "links": {}, - "address": "0xf06f42d5ffd359b4a14e6fecada46cafdb3276f2", - "transactionHash": "0x137111f15934455430bea53bd8a6721561285af6a431f174f090257877635ab6" + "address": "0x310ed4914d3d280593bdd91cd25f3010cef95c8f", + "transactionHash": "0x77ed51dc2aaa3502d11556785f91f9a1ec7102c4ab4d9fd24b163a12d46664ed" }, "1527316019334": { "events": {}, "links": {}, - "address": "0x2a4404906523f58d56823eacf9f27d62348baff5", - "transactionHash": "0x137111f15934455430bea53bd8a6721561285af6a431f174f090257877635ab6" + "address": "0x9511a1770d3700a42a922080cf7f2f20db4d9c05", + "transactionHash": "0x3215566e4282c1fe81a9e093b0fa684ce647015b0e43446042c71426709d8170" + }, + "1527420696956": { + "events": {}, + "links": {}, + "address": "0x03b6c37cb58fdaec2b5f7e9f9ed58a7525ef79d7", + "transactionHash": "0xb6a19a7a679a1474c09c651e4151421f210afa3f47effed019d4c0206144ee5f" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-26T06:28:28.365Z" + "updatedAt": "2018-05-27T11:31:46.343Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/Module.json b/safe-contracts/build/contracts/Module.json index d5d93b4e..0f066967 100644 --- a/safe-contracts/build/contracts/Module.json +++ b/safe-contracts/build/contracts/Module.json @@ -30,51 +30,51 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50610202806100206000396000f30060806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063481c6a75146100515780637de7edef146100a8575b600080fd5b34801561005d57600080fd5b506100666100eb565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156100b457600080fd5b506100e9600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610111565b005b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561016d57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561019357600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505600a165627a7a72305820022bc97a157f8f1660f06255d7c4b4cf1258759b394ed54181754cfffe1f70ee0029", - "deployedBytecode": "0x60806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063481c6a75146100515780637de7edef146100a8575b600080fd5b34801561005d57600080fd5b506100666100eb565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156100b457600080fd5b506100e9600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610111565b005b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561016d57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561019357600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505600a165627a7a72305820022bc97a157f8f1660f06255d7c4b4cf1258759b394ed54181754cfffe1f70ee0029", - "sourceMap": "225:437:5:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;225:437:5;;;;;;;", - "deployedSourceMap": "225:437:5:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;262:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;262:28:5;;;;;;;;;;;;;;;;;;;;;;;;;;;626:208:4;;8:9:-1;5:2;;;30:1;27;20:12;5:2;626:208:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;262:28:5;;;;;;;;;;;;;:::o;626:208:4:-;359:7:5;;;;;;;;;;;337:30;;:10;:30;;;329:39;;;;;;;;791:1:4;776:11;:16;;;;768:25;;;;;;;;816:11;803:10;;:24;;;;;;;;;;;;;;;;;;626:208;:::o", - "source": "pragma solidity 0.4.23;\nimport \"./MasterCopy.sol\";\nimport \"./ModuleManager.sol\";\n\n\n/// @title Module - Base class for modules.\n/// @author Stefan George - \n/// @author Richard Meissner - \ncontract Module is MasterCopy {\n\n ModuleManager public manager;\n\n modifier authorized() {\n require(msg.sender == address(manager));\n _;\n }\n\n function setManager()\n internal\n {\n // manager can only be 0 at initalization of contract.\n // Check ensures that setup function can only be called once.\n require(address(manager) == 0);\n manager = ModuleManager(msg.sender);\n }\n}\n", + "bytecode": "0x608060405234801561001057600080fd5b50610202806100206000396000f30060806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063481c6a75146100515780637de7edef146100a8575b600080fd5b34801561005d57600080fd5b506100666100eb565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156100b457600080fd5b506100e9600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610111565b005b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561016d57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561019357600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505600a165627a7a723058201e28a6acfe6922717722c910e51de720875c6e665112c8866ae58ba4fc613f1b0029", + "deployedBytecode": "0x60806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063481c6a75146100515780637de7edef146100a8575b600080fd5b34801561005d57600080fd5b506100666100eb565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156100b457600080fd5b506100e9600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610111565b005b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561016d57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561019357600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505600a165627a7a723058201e28a6acfe6922717722c910e51de720875c6e665112c8866ae58ba4fc613f1b0029", + "sourceMap": "225:437:7:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;225:437:7;;;;;;;", + "deployedSourceMap": "225:437:7:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;262:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;262:28:7;;;;;;;;;;;;;;;;;;;;;;;;;;;626:208:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;626:208:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;262:28:7;;;;;;;;;;;;;:::o;626:208:5:-;359:7:7;;;;;;;;;;;337:30;;:10;:30;;;329:39;;;;;;;;791:1:5;776:11;:16;;;;768:25;;;;;;;;816:11;803:10;;:24;;;;;;;;;;;;;;;;;;626:208;:::o", + "source": "pragma solidity 0.4.24;\nimport \"./MasterCopy.sol\";\nimport \"./ModuleManager.sol\";\n\n\n/// @title Module - Base class for modules.\n/// @author Stefan George - \n/// @author Richard Meissner - \ncontract Module is MasterCopy {\n\n ModuleManager public manager;\n\n modifier authorized() {\n require(msg.sender == address(manager));\n _;\n }\n\n function setManager()\n internal\n {\n // manager can only be 0 at initalization of contract.\n // Check ensures that setup function can only be called once.\n require(address(manager) == 0);\n manager = ModuleManager(msg.sender);\n }\n}\n", "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Module.sol", "ast": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Module.sol", "exportedSymbols": { "Module": [ - 621 + 750 ] }, - "id": 622, + "id": 751, "nodeType": "SourceUnit", "nodes": [ { - "id": 582, + "id": 711, "literals": [ "solidity", "0.4", - ".23" + ".24" ], "nodeType": "PragmaDirective", - "src": "0:23:5" + "src": "0:23:7" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/MasterCopy.sol", "file": "./MasterCopy.sol", - "id": 583, + "id": 712, "nodeType": "ImportDirective", - "scope": 622, - "sourceUnit": 581, - "src": "24:26:5", + "scope": 751, + "sourceUnit": 653, + "src": "24:26:7", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/ModuleManager.sol", "file": "./ModuleManager.sol", - "id": 584, + "id": 713, "nodeType": "ImportDirective", - "scope": 622, - "sourceUnit": 972, - "src": "51:29:5", + "scope": 751, + "sourceUnit": 1101, + "src": "51:29:7", "symbolAliases": [], "unitAlias": "" }, @@ -84,59 +84,59 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 585, + "id": 714, "name": "MasterCopy", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 580, - "src": "244:10:5", + "referencedDeclaration": 652, + "src": "244:10:7", "typeDescriptions": { - "typeIdentifier": "t_contract$_MasterCopy_$580", + "typeIdentifier": "t_contract$_MasterCopy_$652", "typeString": "contract MasterCopy" } }, - "id": 586, + "id": 715, "nodeType": "InheritanceSpecifier", - "src": "244:10:5" + "src": "244:10:7" } ], "contractDependencies": [ - 580, - 1359 + 652, + 1619 ], "contractKind": "contract", "documentation": "@title Module - Base class for modules.\n @author Stefan George - \n @author Richard Meissner - ", "fullyImplemented": true, - "id": 621, + "id": 750, "linearizedBaseContracts": [ - 621, - 580, - 1359 + 750, + 652, + 1619 ], "name": "Module", "nodeType": "ContractDefinition", "nodes": [ { "constant": false, - "id": 588, + "id": 717, "name": "manager", "nodeType": "VariableDeclaration", - "scope": 621, - "src": "262:28:5", + "scope": 750, + "src": "262:28:7", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$971", + "typeIdentifier": "t_contract$_ModuleManager_$1100", "typeString": "contract ModuleManager" }, "typeName": { "contractScope": null, - "id": 587, + "id": 716, "name": "ModuleManager", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 971, - "src": "262:13:5", + "referencedDeclaration": 1100, + "src": "262:13:7", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$971", + "typeIdentifier": "t_contract$_ModuleManager_$1100", "typeString": "contract ModuleManager" } }, @@ -145,9 +145,9 @@ }, { "body": { - "id": 600, + "id": 729, "nodeType": "Block", - "src": "319:67:5", + "src": "319:67:7", "statements": [ { "expression": { @@ -159,7 +159,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 596, + "id": 725, "isConstant": false, "isLValue": false, "isPure": false, @@ -168,18 +168,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 591, + "id": 720, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2396, - "src": "337:3:5", + "referencedDeclaration": 2598, + "src": "337:3:7", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 592, + "id": 721, "isConstant": false, "isLValue": false, "isPure": false, @@ -187,7 +187,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "337:10:5", + "src": "337:10:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -200,14 +200,14 @@ "arguments": [ { "argumentTypes": null, - "id": 594, + "id": 723, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 588, - "src": "359:7:5", + "referencedDeclaration": 717, + "src": "359:7:7", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$971", + "typeIdentifier": "t_contract$_ModuleManager_$1100", "typeString": "contract ModuleManager" } } @@ -215,24 +215,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_ModuleManager_$971", + "typeIdentifier": "t_contract$_ModuleManager_$1100", "typeString": "contract ModuleManager" } ], - "id": 593, + "id": 722, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "351:7:5", + "src": "351:7:7", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 595, + "id": 724, "isConstant": false, "isLValue": false, "isPure": false, @@ -240,13 +240,13 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "351:16:5", + "src": "351:16:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "337:30:5", + "src": "337:30:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -260,21 +260,21 @@ "typeString": "bool" } ], - "id": 590, + "id": 719, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "329:7:5", + "referencedDeclaration": 2601, + "src": "329:7:7", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 597, + "id": 726, "isConstant": false, "isLValue": false, "isPure": false, @@ -282,41 +282,41 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "329:39:5", + "src": "329:39:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 598, + "id": 727, "nodeType": "ExpressionStatement", - "src": "329:39:5" + "src": "329:39:7" }, { - "id": 599, + "id": 728, "nodeType": "PlaceholderStatement", - "src": "378:1:5" + "src": "378:1:7" } ] }, "documentation": null, - "id": 601, + "id": 730, "name": "authorized", "nodeType": "ModifierDefinition", "parameters": { - "id": 589, + "id": 718, "nodeType": "ParameterList", "parameters": [], - "src": "316:2:5" + "src": "316:2:7" }, - "src": "297:89:5", + "src": "297:89:7", "visibility": "internal" }, { "body": { - "id": 619, + "id": 748, "nodeType": "Block", - "src": "435:225:5", + "src": "435:225:7", "statements": [ { "expression": { @@ -328,7 +328,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 609, + "id": 738, "isConstant": false, "isLValue": false, "isPure": false, @@ -338,14 +338,14 @@ "arguments": [ { "argumentTypes": null, - "id": 606, + "id": 735, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 588, - "src": "594:7:5", + "referencedDeclaration": 717, + "src": "594:7:7", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$971", + "typeIdentifier": "t_contract$_ModuleManager_$1100", "typeString": "contract ModuleManager" } } @@ -353,24 +353,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_ModuleManager_$971", + "typeIdentifier": "t_contract$_ModuleManager_$1100", "typeString": "contract ModuleManager" } ], - "id": 605, + "id": 734, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "586:7:5", + "src": "586:7:7", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 607, + "id": 736, "isConstant": false, "isLValue": false, "isPure": false, @@ -378,7 +378,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "586:16:5", + "src": "586:16:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -389,14 +389,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 608, + "id": 737, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "606:1:5", + "src": "606:1:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -404,7 +404,7 @@ }, "value": "0" }, - "src": "586:21:5", + "src": "586:21:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -418,21 +418,21 @@ "typeString": "bool" } ], - "id": 604, + "id": 733, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "578:7:5", + "referencedDeclaration": 2601, + "src": "578:7:7", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 610, + "id": 739, "isConstant": false, "isLValue": false, "isPure": false, @@ -440,34 +440,34 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "578:30:5", + "src": "578:30:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 611, + "id": 740, "nodeType": "ExpressionStatement", - "src": "578:30:5" + "src": "578:30:7" }, { "expression": { "argumentTypes": null, - "id": 617, + "id": 746, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 612, + "id": 741, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 588, - "src": "618:7:5", + "referencedDeclaration": 717, + "src": "618:7:7", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$971", + "typeIdentifier": "t_contract$_ModuleManager_$1100", "typeString": "contract ModuleManager" } }, @@ -480,18 +480,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 614, + "id": 743, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2396, - "src": "642:3:5", + "referencedDeclaration": 2598, + "src": "642:3:7", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 615, + "id": 744, "isConstant": false, "isLValue": false, "isPure": false, @@ -499,7 +499,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "642:10:5", + "src": "642:10:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -513,18 +513,18 @@ "typeString": "address" } ], - "id": 613, + "id": 742, "name": "ModuleManager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 971, - "src": "628:13:5", + "referencedDeclaration": 1100, + "src": "628:13:7", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_ModuleManager_$971_$", + "typeIdentifier": "t_type$_t_contract$_ModuleManager_$1100_$", "typeString": "type(contract ModuleManager)" } }, - "id": 616, + "id": 745, "isConstant": false, "isLValue": false, "isPure": false, @@ -532,26 +532,26 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "628:25:5", + "src": "628:25:7", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$971", + "typeIdentifier": "t_contract$_ModuleManager_$1100", "typeString": "contract ModuleManager" } }, - "src": "618:35:5", + "src": "618:35:7", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$971", + "typeIdentifier": "t_contract$_ModuleManager_$1100", "typeString": "contract ModuleManager" } }, - "id": 618, + "id": 747, "nodeType": "ExpressionStatement", - "src": "618:35:5" + "src": "618:35:7" } ] }, "documentation": null, - "id": 620, + "id": 749, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -559,70 +559,70 @@ "name": "setManager", "nodeType": "FunctionDefinition", "parameters": { - "id": 602, + "id": 731, "nodeType": "ParameterList", "parameters": [], - "src": "411:2:5" + "src": "411:2:7" }, "payable": false, "returnParameters": { - "id": 603, + "id": 732, "nodeType": "ParameterList", "parameters": [], - "src": "435:0:5" + "src": "435:0:7" }, - "scope": 621, - "src": "392:268:5", + "scope": 750, + "src": "392:268:7", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" } ], - "scope": 622, - "src": "225:437:5" + "scope": 751, + "src": "225:437:7" } ], - "src": "0:663:5" + "src": "0:663:7" }, "legacyAST": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Module.sol", "exportedSymbols": { "Module": [ - 621 + 750 ] }, - "id": 622, + "id": 751, "nodeType": "SourceUnit", "nodes": [ { - "id": 582, + "id": 711, "literals": [ "solidity", "0.4", - ".23" + ".24" ], "nodeType": "PragmaDirective", - "src": "0:23:5" + "src": "0:23:7" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/MasterCopy.sol", "file": "./MasterCopy.sol", - "id": 583, + "id": 712, "nodeType": "ImportDirective", - "scope": 622, - "sourceUnit": 581, - "src": "24:26:5", + "scope": 751, + "sourceUnit": 653, + "src": "24:26:7", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/ModuleManager.sol", "file": "./ModuleManager.sol", - "id": 584, + "id": 713, "nodeType": "ImportDirective", - "scope": 622, - "sourceUnit": 972, - "src": "51:29:5", + "scope": 751, + "sourceUnit": 1101, + "src": "51:29:7", "symbolAliases": [], "unitAlias": "" }, @@ -632,59 +632,59 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 585, + "id": 714, "name": "MasterCopy", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 580, - "src": "244:10:5", + "referencedDeclaration": 652, + "src": "244:10:7", "typeDescriptions": { - "typeIdentifier": "t_contract$_MasterCopy_$580", + "typeIdentifier": "t_contract$_MasterCopy_$652", "typeString": "contract MasterCopy" } }, - "id": 586, + "id": 715, "nodeType": "InheritanceSpecifier", - "src": "244:10:5" + "src": "244:10:7" } ], "contractDependencies": [ - 580, - 1359 + 652, + 1619 ], "contractKind": "contract", "documentation": "@title Module - Base class for modules.\n @author Stefan George - \n @author Richard Meissner - ", "fullyImplemented": true, - "id": 621, + "id": 750, "linearizedBaseContracts": [ - 621, - 580, - 1359 + 750, + 652, + 1619 ], "name": "Module", "nodeType": "ContractDefinition", "nodes": [ { "constant": false, - "id": 588, + "id": 717, "name": "manager", "nodeType": "VariableDeclaration", - "scope": 621, - "src": "262:28:5", + "scope": 750, + "src": "262:28:7", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$971", + "typeIdentifier": "t_contract$_ModuleManager_$1100", "typeString": "contract ModuleManager" }, "typeName": { "contractScope": null, - "id": 587, + "id": 716, "name": "ModuleManager", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 971, - "src": "262:13:5", + "referencedDeclaration": 1100, + "src": "262:13:7", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$971", + "typeIdentifier": "t_contract$_ModuleManager_$1100", "typeString": "contract ModuleManager" } }, @@ -693,9 +693,9 @@ }, { "body": { - "id": 600, + "id": 729, "nodeType": "Block", - "src": "319:67:5", + "src": "319:67:7", "statements": [ { "expression": { @@ -707,7 +707,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 596, + "id": 725, "isConstant": false, "isLValue": false, "isPure": false, @@ -716,18 +716,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 591, + "id": 720, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2396, - "src": "337:3:5", + "referencedDeclaration": 2598, + "src": "337:3:7", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 592, + "id": 721, "isConstant": false, "isLValue": false, "isPure": false, @@ -735,7 +735,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "337:10:5", + "src": "337:10:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -748,14 +748,14 @@ "arguments": [ { "argumentTypes": null, - "id": 594, + "id": 723, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 588, - "src": "359:7:5", + "referencedDeclaration": 717, + "src": "359:7:7", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$971", + "typeIdentifier": "t_contract$_ModuleManager_$1100", "typeString": "contract ModuleManager" } } @@ -763,24 +763,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_ModuleManager_$971", + "typeIdentifier": "t_contract$_ModuleManager_$1100", "typeString": "contract ModuleManager" } ], - "id": 593, + "id": 722, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "351:7:5", + "src": "351:7:7", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 595, + "id": 724, "isConstant": false, "isLValue": false, "isPure": false, @@ -788,13 +788,13 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "351:16:5", + "src": "351:16:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "337:30:5", + "src": "337:30:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -808,21 +808,21 @@ "typeString": "bool" } ], - "id": 590, + "id": 719, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "329:7:5", + "referencedDeclaration": 2601, + "src": "329:7:7", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 597, + "id": 726, "isConstant": false, "isLValue": false, "isPure": false, @@ -830,41 +830,41 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "329:39:5", + "src": "329:39:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 598, + "id": 727, "nodeType": "ExpressionStatement", - "src": "329:39:5" + "src": "329:39:7" }, { - "id": 599, + "id": 728, "nodeType": "PlaceholderStatement", - "src": "378:1:5" + "src": "378:1:7" } ] }, "documentation": null, - "id": 601, + "id": 730, "name": "authorized", "nodeType": "ModifierDefinition", "parameters": { - "id": 589, + "id": 718, "nodeType": "ParameterList", "parameters": [], - "src": "316:2:5" + "src": "316:2:7" }, - "src": "297:89:5", + "src": "297:89:7", "visibility": "internal" }, { "body": { - "id": 619, + "id": 748, "nodeType": "Block", - "src": "435:225:5", + "src": "435:225:7", "statements": [ { "expression": { @@ -876,7 +876,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 609, + "id": 738, "isConstant": false, "isLValue": false, "isPure": false, @@ -886,14 +886,14 @@ "arguments": [ { "argumentTypes": null, - "id": 606, + "id": 735, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 588, - "src": "594:7:5", + "referencedDeclaration": 717, + "src": "594:7:7", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$971", + "typeIdentifier": "t_contract$_ModuleManager_$1100", "typeString": "contract ModuleManager" } } @@ -901,24 +901,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_ModuleManager_$971", + "typeIdentifier": "t_contract$_ModuleManager_$1100", "typeString": "contract ModuleManager" } ], - "id": 605, + "id": 734, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "586:7:5", + "src": "586:7:7", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 607, + "id": 736, "isConstant": false, "isLValue": false, "isPure": false, @@ -926,7 +926,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "586:16:5", + "src": "586:16:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -937,14 +937,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 608, + "id": 737, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "606:1:5", + "src": "606:1:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -952,7 +952,7 @@ }, "value": "0" }, - "src": "586:21:5", + "src": "586:21:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -966,21 +966,21 @@ "typeString": "bool" } ], - "id": 604, + "id": 733, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "578:7:5", + "referencedDeclaration": 2601, + "src": "578:7:7", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 610, + "id": 739, "isConstant": false, "isLValue": false, "isPure": false, @@ -988,34 +988,34 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "578:30:5", + "src": "578:30:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 611, + "id": 740, "nodeType": "ExpressionStatement", - "src": "578:30:5" + "src": "578:30:7" }, { "expression": { "argumentTypes": null, - "id": 617, + "id": 746, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 612, + "id": 741, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 588, - "src": "618:7:5", + "referencedDeclaration": 717, + "src": "618:7:7", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$971", + "typeIdentifier": "t_contract$_ModuleManager_$1100", "typeString": "contract ModuleManager" } }, @@ -1028,18 +1028,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 614, + "id": 743, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2396, - "src": "642:3:5", + "referencedDeclaration": 2598, + "src": "642:3:7", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 615, + "id": 744, "isConstant": false, "isLValue": false, "isPure": false, @@ -1047,7 +1047,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "642:10:5", + "src": "642:10:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1061,18 +1061,18 @@ "typeString": "address" } ], - "id": 613, + "id": 742, "name": "ModuleManager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 971, - "src": "628:13:5", + "referencedDeclaration": 1100, + "src": "628:13:7", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_ModuleManager_$971_$", + "typeIdentifier": "t_type$_t_contract$_ModuleManager_$1100_$", "typeString": "type(contract ModuleManager)" } }, - "id": 616, + "id": 745, "isConstant": false, "isLValue": false, "isPure": false, @@ -1080,26 +1080,26 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "628:25:5", + "src": "628:25:7", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$971", + "typeIdentifier": "t_contract$_ModuleManager_$1100", "typeString": "contract ModuleManager" } }, - "src": "618:35:5", + "src": "618:35:7", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$971", + "typeIdentifier": "t_contract$_ModuleManager_$1100", "typeString": "contract ModuleManager" } }, - "id": 618, + "id": 747, "nodeType": "ExpressionStatement", - "src": "618:35:5" + "src": "618:35:7" } ] }, "documentation": null, - "id": 620, + "id": 749, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -1107,36 +1107,36 @@ "name": "setManager", "nodeType": "FunctionDefinition", "parameters": { - "id": 602, + "id": 731, "nodeType": "ParameterList", "parameters": [], - "src": "411:2:5" + "src": "411:2:7" }, "payable": false, "returnParameters": { - "id": 603, + "id": 732, "nodeType": "ParameterList", "parameters": [], - "src": "435:0:5" + "src": "435:0:7" }, - "scope": 621, - "src": "392:268:5", + "scope": 750, + "src": "392:268:7", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" } ], - "scope": 622, - "src": "225:437:5" + "scope": 751, + "src": "225:437:7" } ], - "src": "0:663:5" + "src": "0:663:7" }, "compiler": { "name": "solc", - "version": "0.4.23+commit.124ca40d.Emscripten.clang" + "version": "0.4.24+commit.e67f0147.Emscripten.clang" }, "networks": {}, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-16T10:51:14.746Z" + "updatedAt": "2018-05-27T11:12:45.579Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/ModuleManager.json b/safe-contracts/build/contracts/ModuleManager.json index 8ab073d5..240aef16 100644 --- a/safe-contracts/build/contracts/ModuleManager.json +++ b/safe-contracts/build/contracts/ModuleManager.json @@ -138,62 +138,62 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50610d8f806100206000396000f300608060405260043610610083576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063468721a714610085578063610b59251461013d57806385e332cd14610180578063a3f4df7e146101d7578063b2494df314610267578063e009cfde146102d3578063ffa1ad7414610336575b005b34801561009157600080fd5b50610123600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff1690602001909291905050506103c6565b604051808215151515815260200191505060405180910390f35b34801561014957600080fd5b5061017e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610462565b005b34801561018c57600080fd5b506101956106db565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101e357600080fd5b506101ec6106e0565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561022c578082015181840152602081019050610211565b50505050905090810190601f1680156102595780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561027357600080fd5b5061027c610719565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156102bf5780820151818401526020810190506102a4565b505050509050019250505060405180910390f35b3480156102df57600080fd5b50610334600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506109bc565b005b34801561034257600080fd5b5061034b610beb565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561038b578082015181840152602081019050610370565b50505050905090810190601f1680156103b85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6000806000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415151561044b57600080fd5b610458858585855a610c24565b9050949350505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561049c57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141580156104f05750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b15156104fb57600080fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561057e57600080fd5b600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600181565b6040805190810160405280600e81526020017f4d6f64756c65204d616e6167657200000000000000000000000000000000000081525081565b6060600080606060009250600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151561082b576000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508280600101935050610787565b8260405190808252806020026020018201604052801561085a5781602001602082028038833980820191505090505b50905060009250600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415156109b35781818481518110151561090957fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915082806001019350506108c4565b80935050505090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156109f657600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610a8e57600080fd5b6000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b60008060006002811115610c3457fe5b846002811115610c4057fe5b1415610c5957610c5287878786610d21565b9150610d17565b60016002811115610c6657fe5b846002811115610c7257fe5b1415610c8a57610c83878685610d3a565b9150610d16565b610c9385610d51565b905060008173ffffffffffffffffffffffffffffffffffffffff16141591507f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b5b5095945050505050565b6000806000845160208601878987f19050949350505050565b60008060008451602086018786f490509392505050565b60008151602083016000f090509190505600a165627a7a72305820f73984cc7cb90fc15f3fdf21f5e74b21221f6ace06f0742ae3ee75acdbd56ef40029", - "deployedBytecode": "0x608060405260043610610083576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063468721a714610085578063610b59251461013d57806385e332cd14610180578063a3f4df7e146101d7578063b2494df314610267578063e009cfde146102d3578063ffa1ad7414610336575b005b34801561009157600080fd5b50610123600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff1690602001909291905050506103c6565b604051808215151515815260200191505060405180910390f35b34801561014957600080fd5b5061017e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610462565b005b34801561018c57600080fd5b506101956106db565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101e357600080fd5b506101ec6106e0565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561022c578082015181840152602081019050610211565b50505050905090810190601f1680156102595780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561027357600080fd5b5061027c610719565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156102bf5780820151818401526020810190506102a4565b505050509050019250505060405180910390f35b3480156102df57600080fd5b50610334600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506109bc565b005b34801561034257600080fd5b5061034b610beb565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561038b578082015181840152602081019050610370565b50505050905090810190601f1680156103b85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6000806000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415151561044b57600080fd5b610458858585855a610c24565b9050949350505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561049c57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141580156104f05750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b15156104fb57600080fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561057e57600080fd5b600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600181565b6040805190810160405280600e81526020017f4d6f64756c65204d616e6167657200000000000000000000000000000000000081525081565b6060600080606060009250600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151561082b576000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508280600101935050610787565b8260405190808252806020026020018201604052801561085a5781602001602082028038833980820191505090505b50905060009250600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415156109b35781818481518110151561090957fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915082806001019350506108c4565b80935050505090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156109f657600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610a8e57600080fd5b6000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b60008060006002811115610c3457fe5b846002811115610c4057fe5b1415610c5957610c5287878786610d21565b9150610d17565b60016002811115610c6657fe5b846002811115610c7257fe5b1415610c8a57610c83878685610d3a565b9150610d16565b610c9385610d51565b905060008173ffffffffffffffffffffffffffffffffffffffff16141591507f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b5b5095945050505050565b6000806000845160208601878987f19050949350505050565b60008060008451602086018786f490509392505050565b60008151602083016000f090509190505600a165627a7a72305820f73984cc7cb90fc15f3fdf21f5e74b21221f6ace06f0742ae3ee75acdbd56ef40029", - "sourceMap": "303:4860:6:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;303:4860:6;;;;;;;", - "deployedSourceMap": "303:4860:6:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2522:377;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2522:377:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1235:391;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1235:391:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;499:55;;8:9:-1;5:2;;;30:1;27;20:12;5:2;499:55:6;;;;;;;;;;;;;;;;;;;;;;;;;;;401:46;;8:9:-1;5:2;;;30:1;27;20:12;5:2;401:46:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;401:46:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4423:738;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4423:738:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;4423:738:6;;;;;;;;;;;;;;;;;1887:299;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1887:299:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;453:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;453:40:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;453:40:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2522:377;2654:12;2762:1;2739:7;:19;2747:10;2739:19;;;;;;;;;;;;;;;;;;;;;;;;;:24;;;;2731:33;;;;;;;;2846:46;2854:2;2858:5;2865:4;2871:9;2882;2846:7;:46::i;:::-;2836:56;;2522:377;;;;;;:::o;1235:391::-;244:4:8;222:27;;:10;:27;;;214:36;;;;;;;;1401:1:6;1390:6;1382:20;;;;:59;;;;;550:3;1406:35;;1414:6;1406:35;;;;1382:59;1374:68;;;;;;;;1520:1;1501:7;:15;1509:6;1501:15;;;;;;;;;;;;;;;;;;;;;;;;;:20;;;1493:29;;;;;;;;1550:7;:25;550:3;1550:25;;;;;;;;;;;;;;;;;;;;;;;;;1532:7;:15;1540:6;1532:15;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;1613:6;1585:7;:25;550:3;1585:25;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;1235:391;:::o;499:55::-;550:3;499:55;:::o;401:46::-;;;;;;;;;;;;;;;;;;;;:::o;4423:738::-;4490:9;4549:19;4582:21;4782:22;4571:1;4549:23;;4606:7;:25;550:3;4606:25;;;;;;;;;;;;;;;;;;;;;;;;;4582:49;;4641:132;550:3;4647:33;;:13;:33;;;;4641:132;;;4712:7;:22;4720:13;4712:22;;;;;;;;;;;;;;;;;;;;;;;;;4696:38;;4748:14;;;;;;;4641:132;;;4821:11;4807:26;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;4807:26:6;;;;4782:51;;4891:1;4877:15;;4918:7;:25;550:3;4918:25;;;;;;;;;;;;;;;;;;;;;;;;;4902:41;;4953:180;550:3;4959:33;;:13;:33;;;;4953:180;;;5029:13;5008:5;5014:11;5008:18;;;;;;;;;;;;;;;;;:34;;;;;;;;;;;5072:7;:22;5080:13;5072:22;;;;;;;;;;;;;;;;;;;;;;;;;5056:38;;5108:14;;;;;;;4953:180;;;5149:5;5142:12;;4423:738;;;;:::o;1887:299::-;244:4:8;222:27;;:10;:27;;;214:36;;;;;;;;2095:6:6;2064:38;;:7;:19;2072:10;2064:19;;;;;;;;;;;;;;;;;;;;;;;;;:38;;;2056:47;;;;;;;;2135:7;:15;2143:6;2135:15;;;;;;;;;;;;;;;;;;;;;;;;;2113:7;:19;2121:10;2113:19;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;2178:1;2160:7;:15;2168:6;2160:15;;;;;;;;;;;;;;;;:19;;;;;;;;;;;;;;;;;;1887:299;;:::o;453:40::-;;;;;;;;;;;;;;;;;;;;:::o;2905:548::-;3036:12;3307:19;3081;3068:32;;;;;;;;:9;:32;;;;;;;;;3064:383;;;3124:35;3136:2;3140:5;3147:4;3153:5;3124:11;:35::i;:::-;3114:45;;3064:383;;;3191:27;3178:40;;;;;;;;:9;:40;;;;;;;;;3174:273;;;3242:36;3262:2;3266:4;3272:5;3242:19;:36::i;:::-;3232:46;;3174:273;;;3329:19;3343:4;3329:13;:19::i;:::-;3307:41;;3387:1;3372:11;:16;;;;3362:26;;3407:29;3424:11;3407:29;;;;;;;;;;;;;;;;;;;;;;3174:273;3064:383;2905:548;;;;;;;;:::o;3459:309::-;3568:12;3750:1;3747;3740:4;3734:11;3727:4;3721;3717:15;3710:5;3706:2;3699:5;3694:58;3683:69;;3669:93;;;;;;:::o;3774:303::-;3876:12;4059:1;4056;4049:4;4043:11;4036:4;4030;4026:15;4022:2;4015:5;4002:59;3991:70;;3977:94;;;;;:::o;4083:261::-;4152:19;4322:4;4316:11;4309:4;4303;4299:15;4296:1;4289:39;4274:54;;4260:78;;;:::o", - "source": "pragma solidity 0.4.23;\nimport \"./Module.sol\";\nimport \"./MasterCopy.sol\";\nimport \"./Enum.sol\";\n\n\n/// @title Module Manager - A contract that manages modules that can execute transactions via this contract\n/// @author Stefan George - \n/// @author Richard Meissner - \ncontract ModuleManager is SelfAuthorized {\n\n event ContractCreation(address newContract);\n\n string public constant NAME = \"Module Manager\";\n string public constant VERSION = \"0.0.1\";\n address public constant SENTINEL_MODULES = address(0x1);\n\n mapping (address => address) internal modules;\n\n /// @dev Fallback function accepts Ether transactions.\n function ()\n external\n payable\n {\n\n }\n\n function setupModules(address to, bytes data)\n internal\n {\n require(modules[SENTINEL_MODULES] == 0);\n modules[SENTINEL_MODULES] = SENTINEL_MODULES;\n if (to != 0)\n // Setup has to complete successfully or transaction fails.\n require(executeDelegateCall(to, data, gasleft()));\n }\n\n /// @dev Allows to add a module to the whitelist.\n /// This can only be done via a Safe transaction.\n /// @param module Module to be whitelisted.\n function enableModule(Module module)\n public\n authorized\n {\n // Module address cannot be null or sentinel.\n require(address(module) != 0 && address(module) != SENTINEL_MODULES);\n // Module cannot be added twice.\n require(modules[module] == 0);\n modules[module] = modules[SENTINEL_MODULES];\n modules[SENTINEL_MODULES] = module;\n }\n\n /// @dev Allows to remove a module from the whitelist.\n /// This can only be done via a Safe transaction.\n /// @param prevModule Module that pointed to the module to be removed in the linked list\n /// @param module Module to be removed.\n function disableModule(Module prevModule, Module module)\n public\n authorized\n {\n // Validate module address corresponds to module index.\n require(modules[prevModule] == address(module));\n modules[prevModule] = modules[module];\n modules[module] = 0;\n }\n\n /// @dev Allows a Module to execute a Safe transaction without any further confirmations.\n /// @param to Destination address of module transaction.\n /// @param value Ether value of module transaction.\n /// @param data Data payload of module transaction.\n /// @param operation Operation type of module transaction.\n function execTransactionFromModule(address to, uint256 value, bytes data, Enum.Operation operation)\n public\n returns (bool success)\n {\n // Only whitelisted modules are allowed.\n require(modules[msg.sender] != 0);\n // Execute transaction without further confirmations.\n success = execute(to, value, data, operation, gasleft());\n }\n\n function execute(address to, uint256 value, bytes data, Enum.Operation operation, uint256 txGas)\n internal\n returns (bool success)\n {\n if (operation == Enum.Operation.Call)\n success = executeCall(to, value, data, txGas);\n else if (operation == Enum.Operation.DelegateCall)\n success = executeDelegateCall(to, data, txGas);\n else {\n address newContract = executeCreate(data);\n success = newContract != 0;\n emit ContractCreation(newContract);\n }\n }\n\n function executeCall(address to, uint256 value, bytes data, uint256 txGas)\n internal\n returns (bool success)\n {\n // solium-disable-next-line security/no-inline-assembly\n assembly {\n success := call(txGas, to, value, add(data, 0x20), mload(data), 0, 0)\n }\n }\n\n function executeDelegateCall(address to, bytes data, uint256 txGas)\n internal\n returns (bool success)\n {\n // solium-disable-next-line security/no-inline-assembly\n assembly {\n success := delegatecall(txGas, to, add(data, 0x20), mload(data), 0, 0)\n }\n }\n\n function executeCreate(bytes data)\n internal\n returns (address newContract)\n {\n // solium-disable-next-line security/no-inline-assembly\n assembly {\n newContract := create(0, add(data, 0x20), mload(data))\n }\n }\n\n /// @dev Returns array of modules.\n /// @return Array of modules.\n function getModules()\n public\n view\n returns (address[])\n {\n // Calculate module count\n uint256 moduleCount = 0;\n address currentModule = modules[SENTINEL_MODULES];\n while(currentModule != SENTINEL_MODULES) {\n currentModule = modules[currentModule];\n moduleCount ++;\n }\n address[] memory array = new address[](moduleCount);\n\n // populate return array\n moduleCount = 0;\n currentModule = modules[SENTINEL_MODULES];\n while(currentModule != SENTINEL_MODULES) {\n array[moduleCount] = currentModule;\n currentModule = modules[currentModule];\n moduleCount ++;\n }\n return array;\n }\n}\n", + "bytecode": "0x608060405234801561001057600080fd5b50610d8f806100206000396000f300608060405260043610610083576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063468721a714610085578063610b59251461013d57806385e332cd14610180578063a3f4df7e146101d7578063b2494df314610267578063e009cfde146102d3578063ffa1ad7414610336575b005b34801561009157600080fd5b50610123600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff1690602001909291905050506103c6565b604051808215151515815260200191505060405180910390f35b34801561014957600080fd5b5061017e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610462565b005b34801561018c57600080fd5b506101956106db565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101e357600080fd5b506101ec6106e0565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561022c578082015181840152602081019050610211565b50505050905090810190601f1680156102595780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561027357600080fd5b5061027c610719565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156102bf5780820151818401526020810190506102a4565b505050509050019250505060405180910390f35b3480156102df57600080fd5b50610334600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506109bc565b005b34801561034257600080fd5b5061034b610beb565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561038b578082015181840152602081019050610370565b50505050905090810190601f1680156103b85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6000806000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415151561044b57600080fd5b610458858585855a610c24565b9050949350505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561049c57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141580156104f05750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b15156104fb57600080fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561057e57600080fd5b600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600181565b6040805190810160405280600e81526020017f4d6f64756c65204d616e6167657200000000000000000000000000000000000081525081565b6060600080606060009250600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151561082b576000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508280600101935050610787565b8260405190808252806020026020018201604052801561085a5781602001602082028038833980820191505090505b50905060009250600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415156109b35781818481518110151561090957fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915082806001019350506108c4565b80935050505090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156109f657600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610a8e57600080fd5b6000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b60008060006002811115610c3457fe5b846002811115610c4057fe5b1415610c5957610c5287878786610d21565b9150610d17565b60016002811115610c6657fe5b846002811115610c7257fe5b1415610c8a57610c83878685610d3a565b9150610d16565b610c9385610d51565b905060008173ffffffffffffffffffffffffffffffffffffffff16141591507f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b5b5095945050505050565b6000806000845160208601878987f19050949350505050565b60008060008451602086018786f490509392505050565b60008151602083016000f090509190505600a165627a7a72305820433f31b2330c2467d55766d21a1ebc4edbb89e459704843222ec9c2d5e0f8c000029", + "deployedBytecode": "0x608060405260043610610083576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063468721a714610085578063610b59251461013d57806385e332cd14610180578063a3f4df7e146101d7578063b2494df314610267578063e009cfde146102d3578063ffa1ad7414610336575b005b34801561009157600080fd5b50610123600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff1690602001909291905050506103c6565b604051808215151515815260200191505060405180910390f35b34801561014957600080fd5b5061017e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610462565b005b34801561018c57600080fd5b506101956106db565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101e357600080fd5b506101ec6106e0565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561022c578082015181840152602081019050610211565b50505050905090810190601f1680156102595780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561027357600080fd5b5061027c610719565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156102bf5780820151818401526020810190506102a4565b505050509050019250505060405180910390f35b3480156102df57600080fd5b50610334600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506109bc565b005b34801561034257600080fd5b5061034b610beb565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561038b578082015181840152602081019050610370565b50505050905090810190601f1680156103b85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6000806000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415151561044b57600080fd5b610458858585855a610c24565b9050949350505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561049c57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141580156104f05750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b15156104fb57600080fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561057e57600080fd5b600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600181565b6040805190810160405280600e81526020017f4d6f64756c65204d616e6167657200000000000000000000000000000000000081525081565b6060600080606060009250600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151561082b576000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508280600101935050610787565b8260405190808252806020026020018201604052801561085a5781602001602082028038833980820191505090505b50905060009250600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415156109b35781818481518110151561090957fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915082806001019350506108c4565b80935050505090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156109f657600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610a8e57600080fd5b6000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b60008060006002811115610c3457fe5b846002811115610c4057fe5b1415610c5957610c5287878786610d21565b9150610d17565b60016002811115610c6657fe5b846002811115610c7257fe5b1415610c8a57610c83878685610d3a565b9150610d16565b610c9385610d51565b905060008173ffffffffffffffffffffffffffffffffffffffff16141591507f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b5b5095945050505050565b6000806000845160208601878987f19050949350505050565b60008060008451602086018786f490509392505050565b60008151602083016000f090509190505600a165627a7a72305820433f31b2330c2467d55766d21a1ebc4edbb89e459704843222ec9c2d5e0f8c000029", + "sourceMap": "303:4860:8:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;303:4860:8;;;;;;;", + "deployedSourceMap": "303:4860:8:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2522:377;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2522:377:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1235:391;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1235:391:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;499:55;;8:9:-1;5:2;;;30:1;27;20:12;5:2;499:55:8;;;;;;;;;;;;;;;;;;;;;;;;;;;401:46;;8:9:-1;5:2;;;30:1;27;20:12;5:2;401:46:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;401:46:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4423:738;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4423:738:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;4423:738:8;;;;;;;;;;;;;;;;;1887:299;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1887:299:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;453:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;453:40:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;453:40:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2522:377;2654:12;2762:1;2739:7;:19;2747:10;2739:19;;;;;;;;;;;;;;;;;;;;;;;;;:24;;;;2731:33;;;;;;;;2846:46;2854:2;2858:5;2865:4;2871:9;2882;2846:7;:46::i;:::-;2836:56;;2522:377;;;;;;:::o;1235:391::-;244:4:13;222:27;;:10;:27;;;214:36;;;;;;;;1401:1:8;1390:6;1382:20;;;;:59;;;;;550:3;1406:35;;1414:6;1406:35;;;;1382:59;1374:68;;;;;;;;1520:1;1501:7;:15;1509:6;1501:15;;;;;;;;;;;;;;;;;;;;;;;;;:20;;;1493:29;;;;;;;;1550:7;:25;550:3;1550:25;;;;;;;;;;;;;;;;;;;;;;;;;1532:7;:15;1540:6;1532:15;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;1613:6;1585:7;:25;550:3;1585:25;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;1235:391;:::o;499:55::-;550:3;499:55;:::o;401:46::-;;;;;;;;;;;;;;;;;;;;:::o;4423:738::-;4490:9;4549:19;4582:21;4782:22;4571:1;4549:23;;4606:7;:25;550:3;4606:25;;;;;;;;;;;;;;;;;;;;;;;;;4582:49;;4641:132;550:3;4647:33;;:13;:33;;;;4641:132;;;4712:7;:22;4720:13;4712:22;;;;;;;;;;;;;;;;;;;;;;;;;4696:38;;4748:14;;;;;;;4641:132;;;4821:11;4807:26;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;4807:26:8;;;;4782:51;;4891:1;4877:15;;4918:7;:25;550:3;4918:25;;;;;;;;;;;;;;;;;;;;;;;;;4902:41;;4953:180;550:3;4959:33;;:13;:33;;;;4953:180;;;5029:13;5008:5;5014:11;5008:18;;;;;;;;;;;;;;;;;:34;;;;;;;;;;;5072:7;:22;5080:13;5072:22;;;;;;;;;;;;;;;;;;;;;;;;;5056:38;;5108:14;;;;;;;4953:180;;;5149:5;5142:12;;4423:738;;;;:::o;1887:299::-;244:4:13;222:27;;:10;:27;;;214:36;;;;;;;;2095:6:8;2064:38;;:7;:19;2072:10;2064:19;;;;;;;;;;;;;;;;;;;;;;;;;:38;;;2056:47;;;;;;;;2135:7;:15;2143:6;2135:15;;;;;;;;;;;;;;;;;;;;;;;;;2113:7;:19;2121:10;2113:19;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;2178:1;2160:7;:15;2168:6;2160:15;;;;;;;;;;;;;;;;:19;;;;;;;;;;;;;;;;;;1887:299;;:::o;453:40::-;;;;;;;;;;;;;;;;;;;;:::o;2905:548::-;3036:12;3307:19;3081;3068:32;;;;;;;;:9;:32;;;;;;;;;3064:383;;;3124:35;3136:2;3140:5;3147:4;3153:5;3124:11;:35::i;:::-;3114:45;;3064:383;;;3191:27;3178:40;;;;;;;;:9;:40;;;;;;;;;3174:273;;;3242:36;3262:2;3266:4;3272:5;3242:19;:36::i;:::-;3232:46;;3174:273;;;3329:19;3343:4;3329:13;:19::i;:::-;3307:41;;3387:1;3372:11;:16;;;;3362:26;;3407:29;3424:11;3407:29;;;;;;;;;;;;;;;;;;;;;;3174:273;3064:383;2905:548;;;;;;;;:::o;3459:309::-;3568:12;3750:1;3747;3740:4;3734:11;3727:4;3721;3717:15;3710:5;3706:2;3699:5;3694:58;3683:69;;3669:93;;;;;;:::o;3774:303::-;3876:12;4059:1;4056;4049:4;4043:11;4036:4;4030;4026:15;4022:2;4015:5;4002:59;3991:70;;3977:94;;;;;:::o;4083:261::-;4152:19;4322:4;4316:11;4309:4;4303;4299:15;4296:1;4289:39;4274:54;;4260:78;;;:::o", + "source": "pragma solidity 0.4.24;\nimport \"./Module.sol\";\nimport \"./MasterCopy.sol\";\nimport \"./Enum.sol\";\n\n\n/// @title Module Manager - A contract that manages modules that can execute transactions via this contract\n/// @author Stefan George - \n/// @author Richard Meissner - \ncontract ModuleManager is SelfAuthorized {\n\n event ContractCreation(address newContract);\n\n string public constant NAME = \"Module Manager\";\n string public constant VERSION = \"0.0.1\";\n address public constant SENTINEL_MODULES = address(0x1);\n\n mapping (address => address) internal modules;\n\n /// @dev Fallback function accepts Ether transactions.\n function ()\n external\n payable\n {\n\n }\n\n function setupModules(address to, bytes data)\n internal\n {\n require(modules[SENTINEL_MODULES] == 0);\n modules[SENTINEL_MODULES] = SENTINEL_MODULES;\n if (to != 0)\n // Setup has to complete successfully or transaction fails.\n require(executeDelegateCall(to, data, gasleft()));\n }\n\n /// @dev Allows to add a module to the whitelist.\n /// This can only be done via a Safe transaction.\n /// @param module Module to be whitelisted.\n function enableModule(Module module)\n public\n authorized\n {\n // Module address cannot be null or sentinel.\n require(address(module) != 0 && address(module) != SENTINEL_MODULES);\n // Module cannot be added twice.\n require(modules[module] == 0);\n modules[module] = modules[SENTINEL_MODULES];\n modules[SENTINEL_MODULES] = module;\n }\n\n /// @dev Allows to remove a module from the whitelist.\n /// This can only be done via a Safe transaction.\n /// @param prevModule Module that pointed to the module to be removed in the linked list\n /// @param module Module to be removed.\n function disableModule(Module prevModule, Module module)\n public\n authorized\n {\n // Validate module address corresponds to module index.\n require(modules[prevModule] == address(module));\n modules[prevModule] = modules[module];\n modules[module] = 0;\n }\n\n /// @dev Allows a Module to execute a Safe transaction without any further confirmations.\n /// @param to Destination address of module transaction.\n /// @param value Ether value of module transaction.\n /// @param data Data payload of module transaction.\n /// @param operation Operation type of module transaction.\n function execTransactionFromModule(address to, uint256 value, bytes data, Enum.Operation operation)\n public\n returns (bool success)\n {\n // Only whitelisted modules are allowed.\n require(modules[msg.sender] != 0);\n // Execute transaction without further confirmations.\n success = execute(to, value, data, operation, gasleft());\n }\n\n function execute(address to, uint256 value, bytes data, Enum.Operation operation, uint256 txGas)\n internal\n returns (bool success)\n {\n if (operation == Enum.Operation.Call)\n success = executeCall(to, value, data, txGas);\n else if (operation == Enum.Operation.DelegateCall)\n success = executeDelegateCall(to, data, txGas);\n else {\n address newContract = executeCreate(data);\n success = newContract != 0;\n emit ContractCreation(newContract);\n }\n }\n\n function executeCall(address to, uint256 value, bytes data, uint256 txGas)\n internal\n returns (bool success)\n {\n // solium-disable-next-line security/no-inline-assembly\n assembly {\n success := call(txGas, to, value, add(data, 0x20), mload(data), 0, 0)\n }\n }\n\n function executeDelegateCall(address to, bytes data, uint256 txGas)\n internal\n returns (bool success)\n {\n // solium-disable-next-line security/no-inline-assembly\n assembly {\n success := delegatecall(txGas, to, add(data, 0x20), mload(data), 0, 0)\n }\n }\n\n function executeCreate(bytes data)\n internal\n returns (address newContract)\n {\n // solium-disable-next-line security/no-inline-assembly\n assembly {\n newContract := create(0, add(data, 0x20), mload(data))\n }\n }\n\n /// @dev Returns array of modules.\n /// @return Array of modules.\n function getModules()\n public\n view\n returns (address[])\n {\n // Calculate module count\n uint256 moduleCount = 0;\n address currentModule = modules[SENTINEL_MODULES];\n while(currentModule != SENTINEL_MODULES) {\n currentModule = modules[currentModule];\n moduleCount ++;\n }\n address[] memory array = new address[](moduleCount);\n\n // populate return array\n moduleCount = 0;\n currentModule = modules[SENTINEL_MODULES];\n while(currentModule != SENTINEL_MODULES) {\n array[moduleCount] = currentModule;\n currentModule = modules[currentModule];\n moduleCount ++;\n }\n return array;\n }\n}\n", "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/ModuleManager.sol", "ast": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/ModuleManager.sol", "exportedSymbols": { "ModuleManager": [ - 971 + 1100 ] }, - "id": 972, + "id": 1101, "nodeType": "SourceUnit", "nodes": [ { - "id": 623, + "id": 752, "literals": [ "solidity", "0.4", - ".23" + ".24" ], "nodeType": "PragmaDirective", - "src": "0:23:6" + "src": "0:23:8" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Module.sol", "file": "./Module.sol", - "id": 624, + "id": 753, "nodeType": "ImportDirective", - "scope": 972, - "sourceUnit": 622, - "src": "24:22:6", + "scope": 1101, + "sourceUnit": 751, + "src": "24:22:8", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/MasterCopy.sol", "file": "./MasterCopy.sol", - "id": 625, + "id": 754, "nodeType": "ImportDirective", - "scope": 972, - "sourceUnit": 581, - "src": "47:26:6", + "scope": 1101, + "sourceUnit": 653, + "src": "47:26:8", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Enum.sol", "file": "./Enum.sol", - "id": 626, + "id": 755, "nodeType": "ImportDirective", - "scope": 972, - "sourceUnit": 7, - "src": "74:20:6", + "scope": 1101, + "sourceUnit": 31, + "src": "74:20:8", "symbolAliases": [], "unitAlias": "" }, @@ -203,31 +203,31 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 627, + "id": 756, "name": "SelfAuthorized", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1359, - "src": "329:14:6", + "referencedDeclaration": 1619, + "src": "329:14:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_SelfAuthorized_$1359", + "typeIdentifier": "t_contract$_SelfAuthorized_$1619", "typeString": "contract SelfAuthorized" } }, - "id": 628, + "id": 757, "nodeType": "InheritanceSpecifier", - "src": "329:14:6" + "src": "329:14:8" } ], "contractDependencies": [ - 1359 + 1619 ], "contractKind": "contract", "documentation": "@title Module Manager - A contract that manages modules that can execute transactions via this contract\n @author Stefan George - \n @author Richard Meissner - ", "fullyImplemented": true, - "id": 971, + "id": 1100, "linearizedBaseContracts": [ - 971, - 1359 + 1100, + 1619 ], "name": "ModuleManager", "nodeType": "ContractDefinition", @@ -235,21 +235,21 @@ { "anonymous": false, "documentation": null, - "id": 632, + "id": 761, "name": "ContractCreation", "nodeType": "EventDefinition", "parameters": { - "id": 631, + "id": 760, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 630, + "id": 759, "indexed": false, "name": "newContract", "nodeType": "VariableDeclaration", - "scope": 632, - "src": "374:19:6", + "scope": 761, + "src": "374:19:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -257,10 +257,10 @@ "typeString": "address" }, "typeName": { - "id": 629, + "id": 758, "name": "address", "nodeType": "ElementaryTypeName", - "src": "374:7:6", + "src": "374:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -270,17 +270,17 @@ "visibility": "internal" } ], - "src": "373:21:6" + "src": "373:21:8" }, - "src": "351:44:6" + "src": "351:44:8" }, { "constant": true, - "id": 635, + "id": 764, "name": "NAME", "nodeType": "VariableDeclaration", - "scope": 971, - "src": "401:46:6", + "scope": 1100, + "src": "401:46:8", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -288,10 +288,10 @@ "typeString": "string" }, "typeName": { - "id": 633, + "id": 762, "name": "string", "nodeType": "ElementaryTypeName", - "src": "401:6:6", + "src": "401:6:8", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -300,14 +300,14 @@ "value": { "argumentTypes": null, "hexValue": "4d6f64756c65204d616e61676572", - "id": 634, + "id": 763, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "431:16:6", + "src": "431:16:8", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_12aaa44a1bae367a1e1d9881f5d80283afded6373c2a1ca586db420944084efb", @@ -319,11 +319,11 @@ }, { "constant": true, - "id": 638, + "id": 767, "name": "VERSION", "nodeType": "VariableDeclaration", - "scope": 971, - "src": "453:40:6", + "scope": 1100, + "src": "453:40:8", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -331,10 +331,10 @@ "typeString": "string" }, "typeName": { - "id": 636, + "id": 765, "name": "string", "nodeType": "ElementaryTypeName", - "src": "453:6:6", + "src": "453:6:8", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -343,14 +343,14 @@ "value": { "argumentTypes": null, "hexValue": "302e302e31", - "id": 637, + "id": 766, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "486:7:6", + "src": "486:7:8", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_ae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc199163811885", @@ -362,11 +362,11 @@ }, { "constant": true, - "id": 643, + "id": 772, "name": "SENTINEL_MODULES", "nodeType": "VariableDeclaration", - "scope": 971, - "src": "499:55:6", + "scope": 1100, + "src": "499:55:8", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -374,10 +374,10 @@ "typeString": "address" }, "typeName": { - "id": 639, + "id": 768, "name": "address", "nodeType": "ElementaryTypeName", - "src": "499:7:6", + "src": "499:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -389,14 +389,14 @@ { "argumentTypes": null, "hexValue": "307831", - "id": 641, + "id": 770, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "550:3:6", + "src": "550:3:8", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -412,20 +412,20 @@ "typeString": "int_const 1" } ], - "id": 640, + "id": 769, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "542:7:6", + "src": "542:7:8", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 642, + "id": 771, "isConstant": false, "isLValue": false, "isPure": true, @@ -433,7 +433,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "542:12:6", + "src": "542:12:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -443,11 +443,11 @@ }, { "constant": false, - "id": 647, + "id": 776, "name": "modules", "nodeType": "VariableDeclaration", - "scope": 971, - "src": "561:45:6", + "scope": 1100, + "src": "561:45:8", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -455,28 +455,28 @@ "typeString": "mapping(address => address)" }, "typeName": { - "id": 646, + "id": 775, "keyType": { - "id": 644, + "id": 773, "name": "address", "nodeType": "ElementaryTypeName", - "src": "570:7:6", + "src": "570:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", - "src": "561:28:6", + "src": "561:28:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" }, "valueType": { - "id": 645, + "id": 774, "name": "address", "nodeType": "ElementaryTypeName", - "src": "581:7:6", + "src": "581:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -488,13 +488,13 @@ }, { "body": { - "id": 650, + "id": 779, "nodeType": "Block", - "src": "721:8:6", + "src": "721:8:8", "statements": [] }, "documentation": "@dev Fallback function accepts Ether transactions.", - "id": 651, + "id": 780, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -502,29 +502,29 @@ "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 648, + "id": 777, "nodeType": "ParameterList", "parameters": [], - "src": "681:2:6" + "src": "681:2:8" }, "payable": true, "returnParameters": { - "id": 649, + "id": 778, "nodeType": "ParameterList", "parameters": [], - "src": "721:0:6" + "src": "721:0:8" }, - "scope": 971, - "src": "672:57:6", + "scope": 1100, + "src": "672:57:8", "stateMutability": "payable", "superFunction": null, "visibility": "external" }, { "body": { - "id": 685, + "id": 814, "nodeType": "Block", - "src": "802:266:6", + "src": "802:266:8", "statements": [ { "expression": { @@ -536,7 +536,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 663, + "id": 792, "isConstant": false, "isLValue": false, "isPure": false, @@ -545,26 +545,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 659, + "id": 788, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 647, - "src": "820:7:6", + "referencedDeclaration": 776, + "src": "820:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 661, + "id": 790, "indexExpression": { "argumentTypes": null, - "id": 660, + "id": 789, "name": "SENTINEL_MODULES", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 643, - "src": "828:16:6", + "referencedDeclaration": 772, + "src": "828:16:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -575,7 +575,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "820:25:6", + "src": "820:25:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -586,14 +586,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 662, + "id": 791, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "849:1:6", + "src": "849:1:8", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -601,7 +601,7 @@ }, "value": "0" }, - "src": "820:30:6", + "src": "820:30:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -615,21 +615,21 @@ "typeString": "bool" } ], - "id": 658, + "id": 787, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "812:7:6", + "referencedDeclaration": 2601, + "src": "812:7:8", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 664, + "id": 793, "isConstant": false, "isLValue": false, "isPure": false, @@ -637,20 +637,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "812:39:6", + "src": "812:39:8", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 665, + "id": 794, "nodeType": "ExpressionStatement", - "src": "812:39:6" + "src": "812:39:8" }, { "expression": { "argumentTypes": null, - "id": 670, + "id": 799, "isConstant": false, "isLValue": false, "isPure": false, @@ -659,26 +659,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 666, + "id": 795, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 647, - "src": "861:7:6", + "referencedDeclaration": 776, + "src": "861:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 668, + "id": 797, "indexExpression": { "argumentTypes": null, - "id": 667, + "id": 796, "name": "SENTINEL_MODULES", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 643, - "src": "869:16:6", + "referencedDeclaration": 772, + "src": "869:16:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -689,7 +689,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "861:25:6", + "src": "861:25:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -699,26 +699,26 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 669, + "id": 798, "name": "SENTINEL_MODULES", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 643, - "src": "889:16:6", + "referencedDeclaration": 772, + "src": "889:16:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "861:44:6", + "src": "861:44:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 671, + "id": 800, "nodeType": "ExpressionStatement", - "src": "861:44:6" + "src": "861:44:8" }, { "condition": { @@ -727,19 +727,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 674, + "id": 803, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 672, + "id": 801, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 653, - "src": "919:2:6", + "referencedDeclaration": 782, + "src": "919:2:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -750,14 +750,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 673, + "id": 802, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "925:1:6", + "src": "925:1:8", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -765,16 +765,16 @@ }, "value": "0" }, - "src": "919:7:6", + "src": "919:7:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 684, + "id": 813, "nodeType": "IfStatement", - "src": "915:146:6", + "src": "915:146:8", "trueBody": { "expression": { "argumentTypes": null, @@ -784,12 +784,12 @@ "arguments": [ { "argumentTypes": null, - "id": 677, + "id": 806, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 653, - "src": "1040:2:6", + "referencedDeclaration": 782, + "src": "1040:2:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -797,12 +797,12 @@ }, { "argumentTypes": null, - "id": 678, + "id": 807, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 655, - "src": "1044:4:6", + "referencedDeclaration": 784, + "src": "1044:4:8", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -813,18 +813,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 679, + "id": 808, "name": "gasleft", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2389, - "src": "1050:7:6", + "referencedDeclaration": 2591, + "src": "1050:7:8", "typeDescriptions": { "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, - "id": 680, + "id": 809, "isConstant": false, "isLValue": false, "isPure": false, @@ -832,7 +832,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1050:9:6", + "src": "1050:9:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -854,18 +854,18 @@ "typeString": "uint256" } ], - "id": 676, + "id": 805, "name": "executeDelegateCall", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 888, - "src": "1020:19:6", + "referencedDeclaration": 1017, + "src": "1020:19:8", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,bytes memory,uint256) returns (bool)" } }, - "id": 681, + "id": 810, "isConstant": false, "isLValue": false, "isPure": false, @@ -873,7 +873,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1020:40:6", + "src": "1020:40:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -887,21 +887,21 @@ "typeString": "bool" } ], - "id": 675, + "id": 804, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "1012:7:6", + "referencedDeclaration": 2601, + "src": "1012:7:8", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 682, + "id": 811, "isConstant": false, "isLValue": false, "isPure": false, @@ -909,21 +909,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1012:49:6", + "src": "1012:49:8", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 683, + "id": 812, "nodeType": "ExpressionStatement", - "src": "1012:49:6" + "src": "1012:49:8" } } ] }, "documentation": null, - "id": 686, + "id": 815, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -931,16 +931,16 @@ "name": "setupModules", "nodeType": "FunctionDefinition", "parameters": { - "id": 656, + "id": 785, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 653, + "id": 782, "name": "to", "nodeType": "VariableDeclaration", - "scope": 686, - "src": "757:10:6", + "scope": 815, + "src": "757:10:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -948,10 +948,10 @@ "typeString": "address" }, "typeName": { - "id": 652, + "id": 781, "name": "address", "nodeType": "ElementaryTypeName", - "src": "757:7:6", + "src": "757:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -962,11 +962,11 @@ }, { "constant": false, - "id": 655, + "id": 784, "name": "data", "nodeType": "VariableDeclaration", - "scope": 686, - "src": "769:10:6", + "scope": 815, + "src": "769:10:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -974,10 +974,10 @@ "typeString": "bytes" }, "typeName": { - "id": 654, + "id": 783, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "769:5:6", + "src": "769:5:8", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -987,26 +987,26 @@ "visibility": "internal" } ], - "src": "756:24:6" + "src": "756:24:8" }, "payable": false, "returnParameters": { - "id": 657, + "id": 786, "nodeType": "ParameterList", "parameters": [], - "src": "802:0:6" + "src": "802:0:8" }, - "scope": 971, - "src": "735:333:6", + "scope": 1100, + "src": "735:333:8", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 729, + "id": 858, "nodeType": "Block", - "src": "1310:316:6", + "src": "1310:316:8", "statements": [ { "expression": { @@ -1018,7 +1018,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 704, + "id": 833, "isConstant": false, "isLValue": false, "isPure": false, @@ -1029,7 +1029,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 698, + "id": 827, "isConstant": false, "isLValue": false, "isPure": false, @@ -1039,14 +1039,14 @@ "arguments": [ { "argumentTypes": null, - "id": 695, + "id": 824, "name": "module", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 688, - "src": "1390:6:6", + "referencedDeclaration": 817, + "src": "1390:6:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$621", + "typeIdentifier": "t_contract$_Module_$750", "typeString": "contract Module" } } @@ -1054,24 +1054,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_Module_$621", + "typeIdentifier": "t_contract$_Module_$750", "typeString": "contract Module" } ], - "id": 694, + "id": 823, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1382:7:6", + "src": "1382:7:8", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 696, + "id": 825, "isConstant": false, "isLValue": false, "isPure": false, @@ -1079,7 +1079,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1382:15:6", + "src": "1382:15:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1090,14 +1090,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 697, + "id": 826, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1401:1:6", + "src": "1401:1:8", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -1105,7 +1105,7 @@ }, "value": "0" }, - "src": "1382:20:6", + "src": "1382:20:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1119,7 +1119,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 703, + "id": 832, "isConstant": false, "isLValue": false, "isPure": false, @@ -1129,14 +1129,14 @@ "arguments": [ { "argumentTypes": null, - "id": 700, + "id": 829, "name": "module", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 688, - "src": "1414:6:6", + "referencedDeclaration": 817, + "src": "1414:6:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$621", + "typeIdentifier": "t_contract$_Module_$750", "typeString": "contract Module" } } @@ -1144,24 +1144,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_Module_$621", + "typeIdentifier": "t_contract$_Module_$750", "typeString": "contract Module" } ], - "id": 699, + "id": 828, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1406:7:6", + "src": "1406:7:8", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 701, + "id": 830, "isConstant": false, "isLValue": false, "isPure": false, @@ -1169,7 +1169,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1406:15:6", + "src": "1406:15:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1179,24 +1179,24 @@ "operator": "!=", "rightExpression": { "argumentTypes": null, - "id": 702, + "id": 831, "name": "SENTINEL_MODULES", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 643, - "src": "1425:16:6", + "referencedDeclaration": 772, + "src": "1425:16:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "1406:35:6", + "src": "1406:35:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "1382:59:6", + "src": "1382:59:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1210,21 +1210,21 @@ "typeString": "bool" } ], - "id": 693, + "id": 822, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "1374:7:6", + "referencedDeclaration": 2601, + "src": "1374:7:8", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 705, + "id": 834, "isConstant": false, "isLValue": false, "isPure": false, @@ -1232,15 +1232,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1374:68:6", + "src": "1374:68:8", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 706, + "id": 835, "nodeType": "ExpressionStatement", - "src": "1374:68:6" + "src": "1374:68:8" }, { "expression": { @@ -1252,7 +1252,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 712, + "id": 841, "isConstant": false, "isLValue": false, "isPure": false, @@ -1261,28 +1261,28 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 708, + "id": 837, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 647, - "src": "1501:7:6", + "referencedDeclaration": 776, + "src": "1501:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 710, + "id": 839, "indexExpression": { "argumentTypes": null, - "id": 709, + "id": 838, "name": "module", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 688, - "src": "1509:6:6", + "referencedDeclaration": 817, + "src": "1509:6:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$621", + "typeIdentifier": "t_contract$_Module_$750", "typeString": "contract Module" } }, @@ -1291,7 +1291,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1501:15:6", + "src": "1501:15:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1302,14 +1302,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 711, + "id": 840, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1520:1:6", + "src": "1520:1:8", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -1317,7 +1317,7 @@ }, "value": "0" }, - "src": "1501:20:6", + "src": "1501:20:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1331,21 +1331,21 @@ "typeString": "bool" } ], - "id": 707, + "id": 836, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "1493:7:6", + "referencedDeclaration": 2601, + "src": "1493:7:8", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 713, + "id": 842, "isConstant": false, "isLValue": false, "isPure": false, @@ -1353,20 +1353,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1493:29:6", + "src": "1493:29:8", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 714, + "id": 843, "nodeType": "ExpressionStatement", - "src": "1493:29:6" + "src": "1493:29:8" }, { "expression": { "argumentTypes": null, - "id": 721, + "id": 850, "isConstant": false, "isLValue": false, "isPure": false, @@ -1375,28 +1375,28 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 715, + "id": 844, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 647, - "src": "1532:7:6", + "referencedDeclaration": 776, + "src": "1532:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 717, + "id": 846, "indexExpression": { "argumentTypes": null, - "id": 716, + "id": 845, "name": "module", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 688, - "src": "1540:6:6", + "referencedDeclaration": 817, + "src": "1540:6:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$621", + "typeIdentifier": "t_contract$_Module_$750", "typeString": "contract Module" } }, @@ -1405,7 +1405,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1532:15:6", + "src": "1532:15:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1417,26 +1417,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 718, + "id": 847, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 647, - "src": "1550:7:6", + "referencedDeclaration": 776, + "src": "1550:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 720, + "id": 849, "indexExpression": { "argumentTypes": null, - "id": 719, + "id": 848, "name": "SENTINEL_MODULES", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 643, - "src": "1558:16:6", + "referencedDeclaration": 772, + "src": "1558:16:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1447,26 +1447,26 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1550:25:6", + "src": "1550:25:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "1532:43:6", + "src": "1532:43:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 722, + "id": 851, "nodeType": "ExpressionStatement", - "src": "1532:43:6" + "src": "1532:43:8" }, { "expression": { "argumentTypes": null, - "id": 727, + "id": 856, "isConstant": false, "isLValue": false, "isPure": false, @@ -1475,26 +1475,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 723, + "id": 852, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 647, - "src": "1585:7:6", + "referencedDeclaration": 776, + "src": "1585:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 725, + "id": 854, "indexExpression": { "argumentTypes": null, - "id": 724, + "id": 853, "name": "SENTINEL_MODULES", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 643, - "src": "1593:16:6", + "referencedDeclaration": 772, + "src": "1593:16:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1505,7 +1505,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1585:25:6", + "src": "1585:25:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1515,83 +1515,83 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 726, + "id": 855, "name": "module", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 688, - "src": "1613:6:6", + "referencedDeclaration": 817, + "src": "1613:6:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$621", + "typeIdentifier": "t_contract$_Module_$750", "typeString": "contract Module" } }, - "src": "1585:34:6", + "src": "1585:34:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 728, + "id": 857, "nodeType": "ExpressionStatement", - "src": "1585:34:6" + "src": "1585:34:8" } ] }, "documentation": "@dev Allows to add a module to the whitelist.\n This can only be done via a Safe transaction.\n @param module Module to be whitelisted.", - "id": 730, + "id": 859, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 691, + "id": 820, "modifierName": { "argumentTypes": null, - "id": 690, + "id": 819, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1358, - "src": "1295:10:6", + "referencedDeclaration": 1618, + "src": "1295:10:8", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "1295:10:6" + "src": "1295:10:8" } ], "name": "enableModule", "nodeType": "FunctionDefinition", "parameters": { - "id": 689, + "id": 818, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 688, + "id": 817, "name": "module", "nodeType": "VariableDeclaration", - "scope": 730, - "src": "1257:13:6", + "scope": 859, + "src": "1257:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$621", + "typeIdentifier": "t_contract$_Module_$750", "typeString": "contract Module" }, "typeName": { "contractScope": null, - "id": 687, + "id": 816, "name": "Module", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 621, - "src": "1257:6:6", + "referencedDeclaration": 750, + "src": "1257:6:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$621", + "typeIdentifier": "t_contract$_Module_$750", "typeString": "contract Module" } }, @@ -1599,26 +1599,26 @@ "visibility": "internal" } ], - "src": "1256:15:6" + "src": "1256:15:8" }, "payable": false, "returnParameters": { - "id": 692, + "id": 821, "nodeType": "ParameterList", "parameters": [], - "src": "1310:0:6" + "src": "1310:0:8" }, - "scope": 971, - "src": "1235:391:6", + "scope": 1100, + "src": "1235:391:8", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 763, + "id": 892, "nodeType": "Block", - "src": "1982:204:6", + "src": "1982:204:8", "statements": [ { "expression": { @@ -1630,7 +1630,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 746, + "id": 875, "isConstant": false, "isLValue": false, "isPure": false, @@ -1639,28 +1639,28 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 740, + "id": 869, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 647, - "src": "2064:7:6", + "referencedDeclaration": 776, + "src": "2064:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 742, + "id": 871, "indexExpression": { "argumentTypes": null, - "id": 741, + "id": 870, "name": "prevModule", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 732, - "src": "2072:10:6", + "referencedDeclaration": 861, + "src": "2072:10:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$621", + "typeIdentifier": "t_contract$_Module_$750", "typeString": "contract Module" } }, @@ -1669,7 +1669,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2064:19:6", + "src": "2064:19:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1682,14 +1682,14 @@ "arguments": [ { "argumentTypes": null, - "id": 744, + "id": 873, "name": "module", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 734, - "src": "2095:6:6", + "referencedDeclaration": 863, + "src": "2095:6:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$621", + "typeIdentifier": "t_contract$_Module_$750", "typeString": "contract Module" } } @@ -1697,24 +1697,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_Module_$621", + "typeIdentifier": "t_contract$_Module_$750", "typeString": "contract Module" } ], - "id": 743, + "id": 872, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2087:7:6", + "src": "2087:7:8", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 745, + "id": 874, "isConstant": false, "isLValue": false, "isPure": false, @@ -1722,13 +1722,13 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2087:15:6", + "src": "2087:15:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2064:38:6", + "src": "2064:38:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1742,21 +1742,21 @@ "typeString": "bool" } ], - "id": 739, + "id": 868, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "2056:7:6", + "referencedDeclaration": 2601, + "src": "2056:7:8", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 747, + "id": 876, "isConstant": false, "isLValue": false, "isPure": false, @@ -1764,20 +1764,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2056:47:6", + "src": "2056:47:8", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 748, + "id": 877, "nodeType": "ExpressionStatement", - "src": "2056:47:6" + "src": "2056:47:8" }, { "expression": { "argumentTypes": null, - "id": 755, + "id": 884, "isConstant": false, "isLValue": false, "isPure": false, @@ -1786,28 +1786,28 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 749, + "id": 878, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 647, - "src": "2113:7:6", + "referencedDeclaration": 776, + "src": "2113:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 751, + "id": 880, "indexExpression": { "argumentTypes": null, - "id": 750, + "id": 879, "name": "prevModule", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 732, - "src": "2121:10:6", + "referencedDeclaration": 861, + "src": "2121:10:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$621", + "typeIdentifier": "t_contract$_Module_$750", "typeString": "contract Module" } }, @@ -1816,7 +1816,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "2113:19:6", + "src": "2113:19:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1828,28 +1828,28 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 752, + "id": 881, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 647, - "src": "2135:7:6", + "referencedDeclaration": 776, + "src": "2135:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 754, + "id": 883, "indexExpression": { "argumentTypes": null, - "id": 753, + "id": 882, "name": "module", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 734, - "src": "2143:6:6", + "referencedDeclaration": 863, + "src": "2143:6:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$621", + "typeIdentifier": "t_contract$_Module_$750", "typeString": "contract Module" } }, @@ -1858,26 +1858,26 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2135:15:6", + "src": "2135:15:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2113:37:6", + "src": "2113:37:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 756, + "id": 885, "nodeType": "ExpressionStatement", - "src": "2113:37:6" + "src": "2113:37:8" }, { "expression": { "argumentTypes": null, - "id": 761, + "id": 890, "isConstant": false, "isLValue": false, "isPure": false, @@ -1886,28 +1886,28 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 757, + "id": 886, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 647, - "src": "2160:7:6", + "referencedDeclaration": 776, + "src": "2160:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 759, + "id": 888, "indexExpression": { "argumentTypes": null, - "id": 758, + "id": 887, "name": "module", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 734, - "src": "2168:6:6", + "referencedDeclaration": 863, + "src": "2168:6:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$621", + "typeIdentifier": "t_contract$_Module_$750", "typeString": "contract Module" } }, @@ -1916,7 +1916,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "2160:15:6", + "src": "2160:15:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1927,14 +1927,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "30", - "id": 760, + "id": 889, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2178:1:6", + "src": "2178:1:8", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -1942,72 +1942,72 @@ }, "value": "0" }, - "src": "2160:19:6", + "src": "2160:19:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 762, + "id": 891, "nodeType": "ExpressionStatement", - "src": "2160:19:6" + "src": "2160:19:8" } ] }, "documentation": "@dev Allows to remove a module from the whitelist.\n This can only be done via a Safe transaction.\n @param prevModule Module that pointed to the module to be removed in the linked list\n @param module Module to be removed.", - "id": 764, + "id": 893, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 737, + "id": 866, "modifierName": { "argumentTypes": null, - "id": 736, + "id": 865, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1358, - "src": "1967:10:6", + "referencedDeclaration": 1618, + "src": "1967:10:8", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "1967:10:6" + "src": "1967:10:8" } ], "name": "disableModule", "nodeType": "FunctionDefinition", "parameters": { - "id": 735, + "id": 864, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 732, + "id": 861, "name": "prevModule", "nodeType": "VariableDeclaration", - "scope": 764, - "src": "1910:17:6", + "scope": 893, + "src": "1910:17:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$621", + "typeIdentifier": "t_contract$_Module_$750", "typeString": "contract Module" }, "typeName": { "contractScope": null, - "id": 731, + "id": 860, "name": "Module", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 621, - "src": "1910:6:6", + "referencedDeclaration": 750, + "src": "1910:6:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$621", + "typeIdentifier": "t_contract$_Module_$750", "typeString": "contract Module" } }, @@ -2016,26 +2016,26 @@ }, { "constant": false, - "id": 734, + "id": 863, "name": "module", "nodeType": "VariableDeclaration", - "scope": 764, - "src": "1929:13:6", + "scope": 893, + "src": "1929:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$621", + "typeIdentifier": "t_contract$_Module_$750", "typeString": "contract Module" }, "typeName": { "contractScope": null, - "id": 733, + "id": 862, "name": "Module", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 621, - "src": "1929:6:6", + "referencedDeclaration": 750, + "src": "1929:6:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$621", + "typeIdentifier": "t_contract$_Module_$750", "typeString": "contract Module" } }, @@ -2043,26 +2043,26 @@ "visibility": "internal" } ], - "src": "1909:34:6" + "src": "1909:34:8" }, "payable": false, "returnParameters": { - "id": 738, + "id": 867, "nodeType": "ParameterList", "parameters": [], - "src": "1982:0:6" + "src": "1982:0:8" }, - "scope": 971, - "src": "1887:299:6", + "scope": 1100, + "src": "1887:299:8", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 797, + "id": 926, "nodeType": "Block", - "src": "2672:227:6", + "src": "2672:227:8", "statements": [ { "expression": { @@ -2074,7 +2074,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 783, + "id": 912, "isConstant": false, "isLValue": false, "isPure": false, @@ -2083,34 +2083,34 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 778, + "id": 907, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 647, - "src": "2739:7:6", + "referencedDeclaration": 776, + "src": "2739:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 781, + "id": 910, "indexExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 779, + "id": 908, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2396, - "src": "2747:3:6", + "referencedDeclaration": 2598, + "src": "2747:3:8", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 780, + "id": 909, "isConstant": false, "isLValue": false, "isPure": false, @@ -2118,7 +2118,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2747:10:6", + "src": "2747:10:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2129,7 +2129,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2739:19:6", + "src": "2739:19:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2140,14 +2140,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 782, + "id": 911, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2762:1:6", + "src": "2762:1:8", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -2155,7 +2155,7 @@ }, "value": "0" }, - "src": "2739:24:6", + "src": "2739:24:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2169,21 +2169,21 @@ "typeString": "bool" } ], - "id": 777, + "id": 906, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "2731:7:6", + "referencedDeclaration": 2601, + "src": "2731:7:8", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 784, + "id": 913, "isConstant": false, "isLValue": false, "isPure": false, @@ -2191,32 +2191,32 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2731:33:6", + "src": "2731:33:8", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 785, + "id": 914, "nodeType": "ExpressionStatement", - "src": "2731:33:6" + "src": "2731:33:8" }, { "expression": { "argumentTypes": null, - "id": 795, + "id": 924, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 786, + "id": 915, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 775, - "src": "2836:7:6", + "referencedDeclaration": 904, + "src": "2836:7:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2229,12 +2229,12 @@ "arguments": [ { "argumentTypes": null, - "id": 788, + "id": 917, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 766, - "src": "2854:2:6", + "referencedDeclaration": 895, + "src": "2854:2:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2242,12 +2242,12 @@ }, { "argumentTypes": null, - "id": 789, + "id": 918, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 768, - "src": "2858:5:6", + "referencedDeclaration": 897, + "src": "2858:5:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2255,12 +2255,12 @@ }, { "argumentTypes": null, - "id": 790, + "id": 919, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 770, - "src": "2865:4:6", + "referencedDeclaration": 899, + "src": "2865:4:8", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -2268,14 +2268,14 @@ }, { "argumentTypes": null, - "id": 791, + "id": 920, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 772, - "src": "2871:9:6", + "referencedDeclaration": 901, + "src": "2871:9:8", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, @@ -2284,18 +2284,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 792, + "id": 921, "name": "gasleft", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2389, - "src": "2882:7:6", + "referencedDeclaration": 2591, + "src": "2882:7:8", "typeDescriptions": { "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, - "id": 793, + "id": 922, "isConstant": false, "isLValue": false, "isPure": false, @@ -2303,7 +2303,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2882:9:6", + "src": "2882:9:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2325,7 +2325,7 @@ "typeString": "bytes memory" }, { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, { @@ -2333,18 +2333,18 @@ "typeString": "uint256" } ], - "id": 787, + "id": 916, "name": "execute", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 860, - "src": "2846:7:6", + "referencedDeclaration": 989, + "src": "2846:7:8", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$5_$_t_uint256_$returns$_t_bool_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256) returns (bool)" } }, - "id": 794, + "id": 923, "isConstant": false, "isLValue": false, "isPure": false, @@ -2352,26 +2352,26 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2846:46:6", + "src": "2846:46:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "2836:56:6", + "src": "2836:56:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 796, + "id": 925, "nodeType": "ExpressionStatement", - "src": "2836:56:6" + "src": "2836:56:8" } ] }, "documentation": "@dev Allows a Module to execute a Safe transaction without any further confirmations.\n @param to Destination address of module transaction.\n @param value Ether value of module transaction.\n @param data Data payload of module transaction.\n @param operation Operation type of module transaction.", - "id": 798, + "id": 927, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -2379,16 +2379,16 @@ "name": "execTransactionFromModule", "nodeType": "FunctionDefinition", "parameters": { - "id": 773, + "id": 902, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 766, + "id": 895, "name": "to", "nodeType": "VariableDeclaration", - "scope": 798, - "src": "2557:10:6", + "scope": 927, + "src": "2557:10:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2396,10 +2396,10 @@ "typeString": "address" }, "typeName": { - "id": 765, + "id": 894, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2557:7:6", + "src": "2557:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2410,11 +2410,11 @@ }, { "constant": false, - "id": 768, + "id": 897, "name": "value", "nodeType": "VariableDeclaration", - "scope": 798, - "src": "2569:13:6", + "scope": 927, + "src": "2569:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2422,10 +2422,10 @@ "typeString": "uint256" }, "typeName": { - "id": 767, + "id": 896, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2569:7:6", + "src": "2569:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2436,11 +2436,11 @@ }, { "constant": false, - "id": 770, + "id": 899, "name": "data", "nodeType": "VariableDeclaration", - "scope": 798, - "src": "2584:10:6", + "scope": 927, + "src": "2584:10:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2448,10 +2448,10 @@ "typeString": "bytes" }, "typeName": { - "id": 769, + "id": 898, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "2584:5:6", + "src": "2584:5:8", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -2462,26 +2462,26 @@ }, { "constant": false, - "id": 772, + "id": 901, "name": "operation", "nodeType": "VariableDeclaration", - "scope": 798, - "src": "2596:24:6", + "scope": 927, + "src": "2596:24:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, "typeName": { "contractScope": null, - "id": 771, + "id": 900, "name": "Enum.Operation", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 5, - "src": "2596:14:6", + "referencedDeclaration": 29, + "src": "2596:14:8", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, @@ -2489,20 +2489,20 @@ "visibility": "internal" } ], - "src": "2556:65:6" + "src": "2556:65:8" }, "payable": false, "returnParameters": { - "id": 776, + "id": 905, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 775, + "id": 904, "name": "success", "nodeType": "VariableDeclaration", - "scope": 798, - "src": "2654:12:6", + "scope": 927, + "src": "2654:12:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2510,10 +2510,10 @@ "typeString": "bool" }, "typeName": { - "id": 774, + "id": 903, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "2654:4:6", + "src": "2654:4:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2523,42 +2523,42 @@ "visibility": "internal" } ], - "src": "2653:14:6" + "src": "2653:14:8" }, - "scope": 971, - "src": "2522:377:6", + "scope": 1100, + "src": "2522:377:8", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 859, + "id": 988, "nodeType": "Block", - "src": "3054:399:6", + "src": "3054:399:8", "statements": [ { "condition": { "argumentTypes": null, "commonType": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, - "id": 817, + "id": 946, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 813, + "id": 942, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 806, - "src": "3068:9:6", + "referencedDeclaration": 935, + "src": "3068:9:8", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, @@ -2570,32 +2570,32 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 814, + "id": 943, "name": "Enum", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6, - "src": "3081:4:6", + "referencedDeclaration": 30, + "src": "3081:4:8", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Enum_$6_$", + "typeIdentifier": "t_type$_t_contract$_Enum_$30_$", "typeString": "type(contract Enum)" } }, - "id": 815, + "id": 944, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "Operation", "nodeType": "MemberAccess", - "referencedDeclaration": 5, - "src": "3081:14:6", + "referencedDeclaration": 29, + "src": "3081:14:8", "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_Operation_$5_$", + "typeIdentifier": "t_type$_t_enum$_Operation_$29_$", "typeString": "type(enum Enum.Operation)" } }, - "id": 816, + "id": 945, "isConstant": false, "isLValue": false, "isPure": true, @@ -2603,13 +2603,13 @@ "memberName": "Call", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "3081:19:6", + "src": "3081:19:8", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, - "src": "3068:32:6", + "src": "3068:32:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2619,24 +2619,24 @@ "condition": { "argumentTypes": null, "commonType": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, - "id": 831, + "id": 960, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 827, + "id": 956, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 806, - "src": "3178:9:6", + "referencedDeclaration": 935, + "src": "3178:9:8", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, @@ -2648,32 +2648,32 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 828, + "id": 957, "name": "Enum", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6, - "src": "3191:4:6", + "referencedDeclaration": 30, + "src": "3191:4:8", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Enum_$6_$", + "typeIdentifier": "t_type$_t_contract$_Enum_$30_$", "typeString": "type(contract Enum)" } }, - "id": 829, + "id": 958, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "Operation", "nodeType": "MemberAccess", - "referencedDeclaration": 5, - "src": "3191:14:6", + "referencedDeclaration": 29, + "src": "3191:14:8", "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_Operation_$5_$", + "typeIdentifier": "t_type$_t_enum$_Operation_$29_$", "typeString": "type(enum Enum.Operation)" } }, - "id": 830, + "id": 959, "isConstant": false, "isLValue": false, "isPure": true, @@ -2681,35 +2681,35 @@ "memberName": "DelegateCall", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "3191:27:6", + "src": "3191:27:8", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, - "src": "3178:40:6", + "src": "3178:40:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": { - "id": 856, + "id": 985, "nodeType": "Block", - "src": "3293:154:6", + "src": "3293:154:8", "statements": [ { "assignments": [ - 841 + 970 ], "declarations": [ { "constant": false, - "id": 841, + "id": 970, "name": "newContract", "nodeType": "VariableDeclaration", - "scope": 860, - "src": "3307:19:6", + "scope": 989, + "src": "3307:19:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2717,10 +2717,10 @@ "typeString": "address" }, "typeName": { - "id": 840, + "id": 969, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3307:7:6", + "src": "3307:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2730,18 +2730,18 @@ "visibility": "internal" } ], - "id": 845, + "id": 974, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 843, + "id": 972, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 804, - "src": "3343:4:6", + "referencedDeclaration": 933, + "src": "3343:4:8", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -2755,18 +2755,18 @@ "typeString": "bytes memory" } ], - "id": 842, + "id": 971, "name": "executeCreate", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 897, - "src": "3329:13:6", + "referencedDeclaration": 1026, + "src": "3329:13:8", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$_t_address_$", "typeString": "function (bytes memory) returns (address)" } }, - "id": 844, + "id": 973, "isConstant": false, "isLValue": false, "isPure": false, @@ -2774,31 +2774,31 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3329:19:6", + "src": "3329:19:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", - "src": "3307:41:6" + "src": "3307:41:8" }, { "expression": { "argumentTypes": null, - "id": 850, + "id": 979, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 846, + "id": 975, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 811, - "src": "3362:7:6", + "referencedDeclaration": 940, + "src": "3362:7:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2812,19 +2812,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 849, + "id": 978, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 847, + "id": 976, "name": "newContract", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 841, - "src": "3372:11:6", + "referencedDeclaration": 970, + "src": "3372:11:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2835,14 +2835,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 848, + "id": 977, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3387:1:6", + "src": "3387:1:8", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -2850,21 +2850,21 @@ }, "value": "0" }, - "src": "3372:16:6", + "src": "3372:16:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "3362:26:6", + "src": "3362:26:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 851, + "id": 980, "nodeType": "ExpressionStatement", - "src": "3362:26:6" + "src": "3362:26:8" }, { "eventCall": { @@ -2872,12 +2872,12 @@ "arguments": [ { "argumentTypes": null, - "id": 853, + "id": 982, "name": "newContract", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 841, - "src": "3424:11:6", + "referencedDeclaration": 970, + "src": "3424:11:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2891,18 +2891,18 @@ "typeString": "address" } ], - "id": 852, + "id": 981, "name": "ContractCreation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 632, - "src": "3407:16:6", + "referencedDeclaration": 761, + "src": "3407:16:8", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" } }, - "id": 854, + "id": 983, "isConstant": false, "isLValue": false, "isPure": false, @@ -2910,37 +2910,37 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3407:29:6", + "src": "3407:29:8", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 855, + "id": 984, "nodeType": "EmitStatement", - "src": "3402:34:6" + "src": "3402:34:8" } ] }, - "id": 857, + "id": 986, "nodeType": "IfStatement", - "src": "3174:273:6", + "src": "3174:273:8", "trueBody": { "expression": { "argumentTypes": null, - "id": 838, + "id": 967, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 832, + "id": 961, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 811, - "src": "3232:7:6", + "referencedDeclaration": 940, + "src": "3232:7:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2953,12 +2953,12 @@ "arguments": [ { "argumentTypes": null, - "id": 834, + "id": 963, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 800, - "src": "3262:2:6", + "referencedDeclaration": 929, + "src": "3262:2:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2966,12 +2966,12 @@ }, { "argumentTypes": null, - "id": 835, + "id": 964, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 804, - "src": "3266:4:6", + "referencedDeclaration": 933, + "src": "3266:4:8", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -2979,12 +2979,12 @@ }, { "argumentTypes": null, - "id": 836, + "id": 965, "name": "txGas", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 808, - "src": "3272:5:6", + "referencedDeclaration": 937, + "src": "3272:5:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3006,18 +3006,18 @@ "typeString": "uint256" } ], - "id": 833, + "id": 962, "name": "executeDelegateCall", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 888, - "src": "3242:19:6", + "referencedDeclaration": 1017, + "src": "3242:19:8", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,bytes memory,uint256) returns (bool)" } }, - "id": 837, + "id": 966, "isConstant": false, "isLValue": false, "isPure": false, @@ -3025,42 +3025,42 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3242:36:6", + "src": "3242:36:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "3232:46:6", + "src": "3232:46:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 839, + "id": 968, "nodeType": "ExpressionStatement", - "src": "3232:46:6" + "src": "3232:46:8" } }, - "id": 858, + "id": 987, "nodeType": "IfStatement", - "src": "3064:383:6", + "src": "3064:383:8", "trueBody": { "expression": { "argumentTypes": null, - "id": 825, + "id": 954, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 818, + "id": 947, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 811, - "src": "3114:7:6", + "referencedDeclaration": 940, + "src": "3114:7:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3073,12 +3073,12 @@ "arguments": [ { "argumentTypes": null, - "id": 820, + "id": 949, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 800, - "src": "3136:2:6", + "referencedDeclaration": 929, + "src": "3136:2:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3086,12 +3086,12 @@ }, { "argumentTypes": null, - "id": 821, + "id": 950, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 802, - "src": "3140:5:6", + "referencedDeclaration": 931, + "src": "3140:5:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3099,12 +3099,12 @@ }, { "argumentTypes": null, - "id": 822, + "id": 951, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 804, - "src": "3147:4:6", + "referencedDeclaration": 933, + "src": "3147:4:8", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -3112,12 +3112,12 @@ }, { "argumentTypes": null, - "id": 823, + "id": 952, "name": "txGas", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 808, - "src": "3153:5:6", + "referencedDeclaration": 937, + "src": "3153:5:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3143,18 +3143,18 @@ "typeString": "uint256" } ], - "id": 819, + "id": 948, "name": "executeCall", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 875, - "src": "3124:11:6", + "referencedDeclaration": 1004, + "src": "3124:11:8", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256,bytes memory,uint256) returns (bool)" } }, - "id": 824, + "id": 953, "isConstant": false, "isLValue": false, "isPure": false, @@ -3162,27 +3162,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3124:35:6", + "src": "3124:35:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "3114:45:6", + "src": "3114:45:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 826, + "id": 955, "nodeType": "ExpressionStatement", - "src": "3114:45:6" + "src": "3114:45:8" } } ] }, "documentation": null, - "id": 860, + "id": 989, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -3190,16 +3190,16 @@ "name": "execute", "nodeType": "FunctionDefinition", "parameters": { - "id": 809, + "id": 938, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 800, + "id": 929, "name": "to", "nodeType": "VariableDeclaration", - "scope": 860, - "src": "2922:10:6", + "scope": 989, + "src": "2922:10:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3207,10 +3207,10 @@ "typeString": "address" }, "typeName": { - "id": 799, + "id": 928, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2922:7:6", + "src": "2922:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3221,11 +3221,11 @@ }, { "constant": false, - "id": 802, + "id": 931, "name": "value", "nodeType": "VariableDeclaration", - "scope": 860, - "src": "2934:13:6", + "scope": 989, + "src": "2934:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3233,10 +3233,10 @@ "typeString": "uint256" }, "typeName": { - "id": 801, + "id": 930, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2934:7:6", + "src": "2934:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3247,11 +3247,11 @@ }, { "constant": false, - "id": 804, + "id": 933, "name": "data", "nodeType": "VariableDeclaration", - "scope": 860, - "src": "2949:10:6", + "scope": 989, + "src": "2949:10:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3259,10 +3259,10 @@ "typeString": "bytes" }, "typeName": { - "id": 803, + "id": 932, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "2949:5:6", + "src": "2949:5:8", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -3273,26 +3273,26 @@ }, { "constant": false, - "id": 806, + "id": 935, "name": "operation", "nodeType": "VariableDeclaration", - "scope": 860, - "src": "2961:24:6", + "scope": 989, + "src": "2961:24:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, "typeName": { "contractScope": null, - "id": 805, + "id": 934, "name": "Enum.Operation", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 5, - "src": "2961:14:6", + "referencedDeclaration": 29, + "src": "2961:14:8", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, @@ -3301,11 +3301,11 @@ }, { "constant": false, - "id": 808, + "id": 937, "name": "txGas", "nodeType": "VariableDeclaration", - "scope": 860, - "src": "2987:13:6", + "scope": 989, + "src": "2987:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3313,10 +3313,10 @@ "typeString": "uint256" }, "typeName": { - "id": 807, + "id": 936, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2987:7:6", + "src": "2987:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3326,20 +3326,20 @@ "visibility": "internal" } ], - "src": "2921:80:6" + "src": "2921:80:8" }, "payable": false, "returnParameters": { - "id": 812, + "id": 941, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 811, + "id": 940, "name": "success", "nodeType": "VariableDeclaration", - "scope": 860, - "src": "3036:12:6", + "scope": 989, + "src": "3036:12:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3347,10 +3347,10 @@ "typeString": "bool" }, "typeName": { - "id": 810, + "id": 939, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "3036:4:6", + "src": "3036:4:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3360,86 +3360,86 @@ "visibility": "internal" } ], - "src": "3035:14:6" + "src": "3035:14:8" }, - "scope": 971, - "src": "2905:548:6", + "scope": 1100, + "src": "2905:548:8", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 874, + "id": 1003, "nodeType": "Block", - "src": "3586:182:6", + "src": "3586:182:8", "statements": [ { "externalReferences": [ { "data": { - "declaration": 866, + "declaration": 995, "isOffset": false, "isSlot": false, - "src": "3740:4:6", + "src": "3740:4:8", "valueSize": 1 } }, { "data": { - "declaration": 866, + "declaration": 995, "isOffset": false, "isSlot": false, - "src": "3721:4:6", + "src": "3721:4:8", "valueSize": 1 } }, { "success": { - "declaration": 871, + "declaration": 1000, "isOffset": false, "isSlot": false, - "src": "3683:7:6", + "src": "3683:7:8", "valueSize": 1 } }, { "txGas": { - "declaration": 868, + "declaration": 997, "isOffset": false, "isSlot": false, - "src": "3699:5:6", + "src": "3699:5:8", "valueSize": 1 } }, { "to": { - "declaration": 862, + "declaration": 991, "isOffset": false, "isSlot": false, - "src": "3706:2:6", + "src": "3706:2:8", "valueSize": 1 } }, { "value": { - "declaration": 864, + "declaration": 993, "isOffset": false, "isSlot": false, - "src": "3710:5:6", + "src": "3710:5:8", "valueSize": 1 } } ], - "id": 873, + "id": 1002, "nodeType": "InlineAssembly", "operations": "{\n success := call(txGas, to, value, add(data, 0x20), mload(data), 0, 0)\n}", - "src": "3660:108:6" + "src": "3660:108:8" } ] }, "documentation": null, - "id": 875, + "id": 1004, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -3447,16 +3447,16 @@ "name": "executeCall", "nodeType": "FunctionDefinition", "parameters": { - "id": 869, + "id": 998, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 862, + "id": 991, "name": "to", "nodeType": "VariableDeclaration", - "scope": 875, - "src": "3480:10:6", + "scope": 1004, + "src": "3480:10:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3464,10 +3464,10 @@ "typeString": "address" }, "typeName": { - "id": 861, + "id": 990, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3480:7:6", + "src": "3480:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3478,11 +3478,11 @@ }, { "constant": false, - "id": 864, + "id": 993, "name": "value", "nodeType": "VariableDeclaration", - "scope": 875, - "src": "3492:13:6", + "scope": 1004, + "src": "3492:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3490,10 +3490,10 @@ "typeString": "uint256" }, "typeName": { - "id": 863, + "id": 992, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3492:7:6", + "src": "3492:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3504,11 +3504,11 @@ }, { "constant": false, - "id": 866, + "id": 995, "name": "data", "nodeType": "VariableDeclaration", - "scope": 875, - "src": "3507:10:6", + "scope": 1004, + "src": "3507:10:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3516,10 +3516,10 @@ "typeString": "bytes" }, "typeName": { - "id": 865, + "id": 994, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "3507:5:6", + "src": "3507:5:8", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -3530,11 +3530,11 @@ }, { "constant": false, - "id": 868, + "id": 997, "name": "txGas", "nodeType": "VariableDeclaration", - "scope": 875, - "src": "3519:13:6", + "scope": 1004, + "src": "3519:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3542,10 +3542,10 @@ "typeString": "uint256" }, "typeName": { - "id": 867, + "id": 996, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3519:7:6", + "src": "3519:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3555,20 +3555,20 @@ "visibility": "internal" } ], - "src": "3479:54:6" + "src": "3479:54:8" }, "payable": false, "returnParameters": { - "id": 872, + "id": 1001, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 871, + "id": 1000, "name": "success", "nodeType": "VariableDeclaration", - "scope": 875, - "src": "3568:12:6", + "scope": 1004, + "src": "3568:12:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3576,10 +3576,10 @@ "typeString": "bool" }, "typeName": { - "id": 870, + "id": 999, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "3568:4:6", + "src": "3568:4:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3589,77 +3589,77 @@ "visibility": "internal" } ], - "src": "3567:14:6" + "src": "3567:14:8" }, - "scope": 971, - "src": "3459:309:6", + "scope": 1100, + "src": "3459:309:8", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 887, + "id": 1016, "nodeType": "Block", - "src": "3894:183:6", + "src": "3894:183:8", "statements": [ { "externalReferences": [ { "data": { - "declaration": 879, + "declaration": 1008, "isOffset": false, "isSlot": false, - "src": "4049:4:6", + "src": "4049:4:8", "valueSize": 1 } }, { "data": { - "declaration": 879, + "declaration": 1008, "isOffset": false, "isSlot": false, - "src": "4030:4:6", + "src": "4030:4:8", "valueSize": 1 } }, { "success": { - "declaration": 884, + "declaration": 1013, "isOffset": false, "isSlot": false, - "src": "3991:7:6", + "src": "3991:7:8", "valueSize": 1 } }, { "txGas": { - "declaration": 881, + "declaration": 1010, "isOffset": false, "isSlot": false, - "src": "4015:5:6", + "src": "4015:5:8", "valueSize": 1 } }, { "to": { - "declaration": 877, + "declaration": 1006, "isOffset": false, "isSlot": false, - "src": "4022:2:6", + "src": "4022:2:8", "valueSize": 1 } } ], - "id": 886, + "id": 1015, "nodeType": "InlineAssembly", "operations": "{\n success := delegatecall(txGas, to, add(data, 0x20), mload(data), 0, 0)\n}", - "src": "3968:109:6" + "src": "3968:109:8" } ] }, "documentation": null, - "id": 888, + "id": 1017, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -3667,16 +3667,16 @@ "name": "executeDelegateCall", "nodeType": "FunctionDefinition", "parameters": { - "id": 882, + "id": 1011, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 877, + "id": 1006, "name": "to", "nodeType": "VariableDeclaration", - "scope": 888, - "src": "3803:10:6", + "scope": 1017, + "src": "3803:10:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3684,10 +3684,10 @@ "typeString": "address" }, "typeName": { - "id": 876, + "id": 1005, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3803:7:6", + "src": "3803:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3698,11 +3698,11 @@ }, { "constant": false, - "id": 879, + "id": 1008, "name": "data", "nodeType": "VariableDeclaration", - "scope": 888, - "src": "3815:10:6", + "scope": 1017, + "src": "3815:10:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3710,10 +3710,10 @@ "typeString": "bytes" }, "typeName": { - "id": 878, + "id": 1007, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "3815:5:6", + "src": "3815:5:8", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -3724,11 +3724,11 @@ }, { "constant": false, - "id": 881, + "id": 1010, "name": "txGas", "nodeType": "VariableDeclaration", - "scope": 888, - "src": "3827:13:6", + "scope": 1017, + "src": "3827:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3736,10 +3736,10 @@ "typeString": "uint256" }, "typeName": { - "id": 880, + "id": 1009, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3827:7:6", + "src": "3827:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3749,20 +3749,20 @@ "visibility": "internal" } ], - "src": "3802:39:6" + "src": "3802:39:8" }, "payable": false, "returnParameters": { - "id": 885, + "id": 1014, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 884, + "id": 1013, "name": "success", "nodeType": "VariableDeclaration", - "scope": 888, - "src": "3876:12:6", + "scope": 1017, + "src": "3876:12:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3770,10 +3770,10 @@ "typeString": "bool" }, "typeName": { - "id": 883, + "id": 1012, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "3876:4:6", + "src": "3876:4:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3783,59 +3783,59 @@ "visibility": "internal" } ], - "src": "3875:14:6" + "src": "3875:14:8" }, - "scope": 971, - "src": "3774:303:6", + "scope": 1100, + "src": "3774:303:8", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 896, + "id": 1025, "nodeType": "Block", - "src": "4177:167:6", + "src": "4177:167:8", "statements": [ { "externalReferences": [ { "newContract": { - "declaration": 893, + "declaration": 1022, "isOffset": false, "isSlot": false, - "src": "4274:11:6", + "src": "4274:11:8", "valueSize": 1 } }, { "data": { - "declaration": 890, + "declaration": 1019, "isOffset": false, "isSlot": false, - "src": "4303:4:6", + "src": "4303:4:8", "valueSize": 1 } }, { "data": { - "declaration": 890, + "declaration": 1019, "isOffset": false, "isSlot": false, - "src": "4322:4:6", + "src": "4322:4:8", "valueSize": 1 } } ], - "id": 895, + "id": 1024, "nodeType": "InlineAssembly", "operations": "{\n newContract := create(0, add(data, 0x20), mload(data))\n}", - "src": "4251:93:6" + "src": "4251:93:8" } ] }, "documentation": null, - "id": 897, + "id": 1026, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -3843,16 +3843,16 @@ "name": "executeCreate", "nodeType": "FunctionDefinition", "parameters": { - "id": 891, + "id": 1020, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 890, + "id": 1019, "name": "data", "nodeType": "VariableDeclaration", - "scope": 897, - "src": "4106:10:6", + "scope": 1026, + "src": "4106:10:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3860,10 +3860,10 @@ "typeString": "bytes" }, "typeName": { - "id": 889, + "id": 1018, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "4106:5:6", + "src": "4106:5:8", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -3873,20 +3873,20 @@ "visibility": "internal" } ], - "src": "4105:12:6" + "src": "4105:12:8" }, "payable": false, "returnParameters": { - "id": 894, + "id": 1023, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 893, + "id": 1022, "name": "newContract", "nodeType": "VariableDeclaration", - "scope": 897, - "src": "4152:19:6", + "scope": 1026, + "src": "4152:19:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3894,10 +3894,10 @@ "typeString": "address" }, "typeName": { - "id": 892, + "id": 1021, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4152:7:6", + "src": "4152:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3907,32 +3907,32 @@ "visibility": "internal" } ], - "src": "4151:21:6" + "src": "4151:21:8" }, - "scope": 971, - "src": "4083:261:6", + "scope": 1100, + "src": "4083:261:8", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 969, + "id": 1098, "nodeType": "Block", - "src": "4505:656:6", + "src": "4505:656:8", "statements": [ { "assignments": [ - 904 + 1033 ], "declarations": [ { "constant": false, - "id": 904, + "id": 1033, "name": "moduleCount", "nodeType": "VariableDeclaration", - "scope": 970, - "src": "4549:19:6", + "scope": 1099, + "src": "4549:19:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3940,10 +3940,10 @@ "typeString": "uint256" }, "typeName": { - "id": 903, + "id": 1032, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4549:7:6", + "src": "4549:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3953,18 +3953,18 @@ "visibility": "internal" } ], - "id": 906, + "id": 1035, "initialValue": { "argumentTypes": null, "hexValue": "30", - "id": 905, + "id": 1034, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4571:1:6", + "src": "4571:1:8", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -3973,20 +3973,20 @@ "value": "0" }, "nodeType": "VariableDeclarationStatement", - "src": "4549:23:6" + "src": "4549:23:8" }, { "assignments": [ - 908 + 1037 ], "declarations": [ { "constant": false, - "id": 908, + "id": 1037, "name": "currentModule", "nodeType": "VariableDeclaration", - "scope": 970, - "src": "4582:21:6", + "scope": 1099, + "src": "4582:21:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3994,10 +3994,10 @@ "typeString": "address" }, "typeName": { - "id": 907, + "id": 1036, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4582:7:6", + "src": "4582:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4007,31 +4007,31 @@ "visibility": "internal" } ], - "id": 912, + "id": 1041, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 909, + "id": 1038, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 647, - "src": "4606:7:6", + "referencedDeclaration": 776, + "src": "4606:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 911, + "id": 1040, "indexExpression": { "argumentTypes": null, - "id": 910, + "id": 1039, "name": "SENTINEL_MODULES", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 643, - "src": "4614:16:6", + "referencedDeclaration": 772, + "src": "4614:16:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4042,37 +4042,37 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4606:25:6", + "src": "4606:25:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", - "src": "4582:49:6" + "src": "4582:49:8" }, { "body": { - "id": 925, + "id": 1054, "nodeType": "Block", - "src": "4682:91:6", + "src": "4682:91:8", "statements": [ { "expression": { "argumentTypes": null, - "id": 920, + "id": 1049, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 916, + "id": 1045, "name": "currentModule", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 908, - "src": "4696:13:6", + "referencedDeclaration": 1037, + "src": "4696:13:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4084,26 +4084,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 917, + "id": 1046, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 647, - "src": "4712:7:6", + "referencedDeclaration": 776, + "src": "4712:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 919, + "id": 1048, "indexExpression": { "argumentTypes": null, - "id": 918, + "id": 1047, "name": "currentModule", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 908, - "src": "4720:13:6", + "referencedDeclaration": 1037, + "src": "4720:13:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4114,26 +4114,26 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4712:22:6", + "src": "4712:22:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "4696:38:6", + "src": "4696:38:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 921, + "id": 1050, "nodeType": "ExpressionStatement", - "src": "4696:38:6" + "src": "4696:38:8" }, { "expression": { "argumentTypes": null, - "id": 923, + "id": 1052, "isConstant": false, "isLValue": false, "isPure": false, @@ -4141,15 +4141,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "4748:14:6", + "src": "4748:14:8", "subExpression": { "argumentTypes": null, - "id": 922, + "id": 1051, "name": "moduleCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 904, - "src": "4748:11:6", + "referencedDeclaration": 1033, + "src": "4748:11:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4160,9 +4160,9 @@ "typeString": "uint256" } }, - "id": 924, + "id": 1053, "nodeType": "ExpressionStatement", - "src": "4748:14:6" + "src": "4748:14:8" } ] }, @@ -4172,19 +4172,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 915, + "id": 1044, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 913, + "id": 1042, "name": "currentModule", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 908, - "src": "4647:13:6", + "referencedDeclaration": 1037, + "src": "4647:13:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4194,39 +4194,39 @@ "operator": "!=", "rightExpression": { "argumentTypes": null, - "id": 914, + "id": 1043, "name": "SENTINEL_MODULES", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 643, - "src": "4664:16:6", + "referencedDeclaration": 772, + "src": "4664:16:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "4647:33:6", + "src": "4647:33:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 926, + "id": 1055, "nodeType": "WhileStatement", - "src": "4641:132:6" + "src": "4641:132:8" }, { "assignments": [ - 930 + 1059 ], "declarations": [ { "constant": false, - "id": 930, + "id": 1059, "name": "array", "nodeType": "VariableDeclaration", - "scope": 970, - "src": "4782:22:6", + "scope": 1099, + "src": "4782:22:8", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -4235,19 +4235,19 @@ }, "typeName": { "baseType": { - "id": 928, + "id": 1057, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4782:7:6", + "src": "4782:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 929, + "id": 1058, "length": null, "nodeType": "ArrayTypeName", - "src": "4782:9:6", + "src": "4782:9:8", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" @@ -4257,18 +4257,18 @@ "visibility": "internal" } ], - "id": 936, + "id": 1065, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 934, + "id": 1063, "name": "moduleCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 904, - "src": "4821:11:6", + "referencedDeclaration": 1033, + "src": "4821:11:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4282,39 +4282,39 @@ "typeString": "uint256" } ], - "id": 933, + "id": 1062, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "NewExpression", - "src": "4807:13:6", + "src": "4807:13:8", "typeDescriptions": { "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_$", "typeString": "function (uint256) pure returns (address[] memory)" }, "typeName": { "baseType": { - "id": 931, + "id": 1060, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4811:7:6", + "src": "4811:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 932, + "id": 1061, "length": null, "nodeType": "ArrayTypeName", - "src": "4811:9:6", + "src": "4811:9:8", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" } } }, - "id": 935, + "id": 1064, "isConstant": false, "isLValue": false, "isPure": false, @@ -4322,31 +4322,31 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4807:26:6", + "src": "4807:26:8", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory", "typeString": "address[] memory" } }, "nodeType": "VariableDeclarationStatement", - "src": "4782:51:6" + "src": "4782:51:8" }, { "expression": { "argumentTypes": null, - "id": 939, + "id": 1068, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 937, + "id": 1066, "name": "moduleCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 904, - "src": "4877:11:6", + "referencedDeclaration": 1033, + "src": "4877:11:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4357,14 +4357,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "30", - "id": 938, + "id": 1067, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4891:1:6", + "src": "4891:1:8", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -4372,32 +4372,32 @@ }, "value": "0" }, - "src": "4877:15:6", + "src": "4877:15:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 940, + "id": 1069, "nodeType": "ExpressionStatement", - "src": "4877:15:6" + "src": "4877:15:8" }, { "expression": { "argumentTypes": null, - "id": 945, + "id": 1074, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 941, + "id": 1070, "name": "currentModule", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 908, - "src": "4902:13:6", + "referencedDeclaration": 1037, + "src": "4902:13:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4409,26 +4409,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 942, + "id": 1071, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 647, - "src": "4918:7:6", + "referencedDeclaration": 776, + "src": "4918:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 944, + "id": 1073, "indexExpression": { "argumentTypes": null, - "id": 943, + "id": 1072, "name": "SENTINEL_MODULES", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 643, - "src": "4926:16:6", + "referencedDeclaration": 772, + "src": "4926:16:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4439,32 +4439,32 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4918:25:6", + "src": "4918:25:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "4902:41:6", + "src": "4902:41:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 946, + "id": 1075, "nodeType": "ExpressionStatement", - "src": "4902:41:6" + "src": "4902:41:8" }, { "body": { - "id": 965, + "id": 1094, "nodeType": "Block", - "src": "4994:139:6", + "src": "4994:139:8", "statements": [ { "expression": { "argumentTypes": null, - "id": 954, + "id": 1083, "isConstant": false, "isLValue": false, "isPure": false, @@ -4473,26 +4473,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 950, + "id": 1079, "name": "array", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 930, - "src": "5008:5:6", + "referencedDeclaration": 1059, + "src": "5008:5:8", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 952, + "id": 1081, "indexExpression": { "argumentTypes": null, - "id": 951, + "id": 1080, "name": "moduleCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 904, - "src": "5014:11:6", + "referencedDeclaration": 1033, + "src": "5014:11:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4503,7 +4503,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "5008:18:6", + "src": "5008:18:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4513,43 +4513,43 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 953, + "id": 1082, "name": "currentModule", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 908, - "src": "5029:13:6", + "referencedDeclaration": 1037, + "src": "5029:13:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "5008:34:6", + "src": "5008:34:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 955, + "id": 1084, "nodeType": "ExpressionStatement", - "src": "5008:34:6" + "src": "5008:34:8" }, { "expression": { "argumentTypes": null, - "id": 960, + "id": 1089, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 956, + "id": 1085, "name": "currentModule", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 908, - "src": "5056:13:6", + "referencedDeclaration": 1037, + "src": "5056:13:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4561,26 +4561,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 957, + "id": 1086, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 647, - "src": "5072:7:6", + "referencedDeclaration": 776, + "src": "5072:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 959, + "id": 1088, "indexExpression": { "argumentTypes": null, - "id": 958, + "id": 1087, "name": "currentModule", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 908, - "src": "5080:13:6", + "referencedDeclaration": 1037, + "src": "5080:13:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4591,26 +4591,26 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "5072:22:6", + "src": "5072:22:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "5056:38:6", + "src": "5056:38:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 961, + "id": 1090, "nodeType": "ExpressionStatement", - "src": "5056:38:6" + "src": "5056:38:8" }, { "expression": { "argumentTypes": null, - "id": 963, + "id": 1092, "isConstant": false, "isLValue": false, "isPure": false, @@ -4618,15 +4618,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "5108:14:6", + "src": "5108:14:8", "subExpression": { "argumentTypes": null, - "id": 962, + "id": 1091, "name": "moduleCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 904, - "src": "5108:11:6", + "referencedDeclaration": 1033, + "src": "5108:11:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4637,9 +4637,9 @@ "typeString": "uint256" } }, - "id": 964, + "id": 1093, "nodeType": "ExpressionStatement", - "src": "5108:14:6" + "src": "5108:14:8" } ] }, @@ -4649,19 +4649,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 949, + "id": 1078, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 947, + "id": 1076, "name": "currentModule", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 908, - "src": "4959:13:6", + "referencedDeclaration": 1037, + "src": "4959:13:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4671,50 +4671,50 @@ "operator": "!=", "rightExpression": { "argumentTypes": null, - "id": 948, + "id": 1077, "name": "SENTINEL_MODULES", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 643, - "src": "4976:16:6", + "referencedDeclaration": 772, + "src": "4976:16:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "4959:33:6", + "src": "4959:33:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 966, + "id": 1095, "nodeType": "WhileStatement", - "src": "4953:180:6" + "src": "4953:180:8" }, { "expression": { "argumentTypes": null, - "id": 967, + "id": 1096, "name": "array", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 930, - "src": "5149:5:6", + "referencedDeclaration": 1059, + "src": "5149:5:8", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "functionReturnParameters": 902, - "id": 968, + "functionReturnParameters": 1031, + "id": 1097, "nodeType": "Return", - "src": "5142:12:6" + "src": "5142:12:8" } ] }, "documentation": "@dev Returns array of modules.\n @return Array of modules.", - "id": 970, + "id": 1099, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -4722,23 +4722,23 @@ "name": "getModules", "nodeType": "FunctionDefinition", "parameters": { - "id": 898, + "id": 1027, "nodeType": "ParameterList", "parameters": [], - "src": "4442:2:6" + "src": "4442:2:8" }, "payable": false, "returnParameters": { - "id": 902, + "id": 1031, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 901, + "id": 1030, "name": "", "nodeType": "VariableDeclaration", - "scope": 970, - "src": "4490:9:6", + "scope": 1099, + "src": "4490:9:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4747,19 +4747,19 @@ }, "typeName": { "baseType": { - "id": 899, + "id": 1028, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4490:7:6", + "src": "4490:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 900, + "id": 1029, "length": null, "nodeType": "ArrayTypeName", - "src": "4490:9:6", + "src": "4490:9:8", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" @@ -4769,71 +4769,71 @@ "visibility": "internal" } ], - "src": "4489:11:6" + "src": "4489:11:8" }, - "scope": 971, - "src": "4423:738:6", + "scope": 1100, + "src": "4423:738:8", "stateMutability": "view", "superFunction": null, "visibility": "public" } ], - "scope": 972, - "src": "303:4860:6" + "scope": 1101, + "src": "303:4860:8" } ], - "src": "0:5164:6" + "src": "0:5164:8" }, "legacyAST": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/ModuleManager.sol", "exportedSymbols": { "ModuleManager": [ - 971 + 1100 ] }, - "id": 972, + "id": 1101, "nodeType": "SourceUnit", "nodes": [ { - "id": 623, + "id": 752, "literals": [ "solidity", "0.4", - ".23" + ".24" ], "nodeType": "PragmaDirective", - "src": "0:23:6" + "src": "0:23:8" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Module.sol", "file": "./Module.sol", - "id": 624, + "id": 753, "nodeType": "ImportDirective", - "scope": 972, - "sourceUnit": 622, - "src": "24:22:6", + "scope": 1101, + "sourceUnit": 751, + "src": "24:22:8", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/MasterCopy.sol", "file": "./MasterCopy.sol", - "id": 625, + "id": 754, "nodeType": "ImportDirective", - "scope": 972, - "sourceUnit": 581, - "src": "47:26:6", + "scope": 1101, + "sourceUnit": 653, + "src": "47:26:8", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Enum.sol", "file": "./Enum.sol", - "id": 626, + "id": 755, "nodeType": "ImportDirective", - "scope": 972, - "sourceUnit": 7, - "src": "74:20:6", + "scope": 1101, + "sourceUnit": 31, + "src": "74:20:8", "symbolAliases": [], "unitAlias": "" }, @@ -4843,31 +4843,31 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 627, + "id": 756, "name": "SelfAuthorized", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1359, - "src": "329:14:6", + "referencedDeclaration": 1619, + "src": "329:14:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_SelfAuthorized_$1359", + "typeIdentifier": "t_contract$_SelfAuthorized_$1619", "typeString": "contract SelfAuthorized" } }, - "id": 628, + "id": 757, "nodeType": "InheritanceSpecifier", - "src": "329:14:6" + "src": "329:14:8" } ], "contractDependencies": [ - 1359 + 1619 ], "contractKind": "contract", "documentation": "@title Module Manager - A contract that manages modules that can execute transactions via this contract\n @author Stefan George - \n @author Richard Meissner - ", "fullyImplemented": true, - "id": 971, + "id": 1100, "linearizedBaseContracts": [ - 971, - 1359 + 1100, + 1619 ], "name": "ModuleManager", "nodeType": "ContractDefinition", @@ -4875,21 +4875,21 @@ { "anonymous": false, "documentation": null, - "id": 632, + "id": 761, "name": "ContractCreation", "nodeType": "EventDefinition", "parameters": { - "id": 631, + "id": 760, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 630, + "id": 759, "indexed": false, "name": "newContract", "nodeType": "VariableDeclaration", - "scope": 632, - "src": "374:19:6", + "scope": 761, + "src": "374:19:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4897,10 +4897,10 @@ "typeString": "address" }, "typeName": { - "id": 629, + "id": 758, "name": "address", "nodeType": "ElementaryTypeName", - "src": "374:7:6", + "src": "374:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4910,17 +4910,17 @@ "visibility": "internal" } ], - "src": "373:21:6" + "src": "373:21:8" }, - "src": "351:44:6" + "src": "351:44:8" }, { "constant": true, - "id": 635, + "id": 764, "name": "NAME", "nodeType": "VariableDeclaration", - "scope": 971, - "src": "401:46:6", + "scope": 1100, + "src": "401:46:8", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -4928,10 +4928,10 @@ "typeString": "string" }, "typeName": { - "id": 633, + "id": 762, "name": "string", "nodeType": "ElementaryTypeName", - "src": "401:6:6", + "src": "401:6:8", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -4940,14 +4940,14 @@ "value": { "argumentTypes": null, "hexValue": "4d6f64756c65204d616e61676572", - "id": 634, + "id": 763, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "431:16:6", + "src": "431:16:8", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_12aaa44a1bae367a1e1d9881f5d80283afded6373c2a1ca586db420944084efb", @@ -4959,11 +4959,11 @@ }, { "constant": true, - "id": 638, + "id": 767, "name": "VERSION", "nodeType": "VariableDeclaration", - "scope": 971, - "src": "453:40:6", + "scope": 1100, + "src": "453:40:8", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -4971,10 +4971,10 @@ "typeString": "string" }, "typeName": { - "id": 636, + "id": 765, "name": "string", "nodeType": "ElementaryTypeName", - "src": "453:6:6", + "src": "453:6:8", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -4983,14 +4983,14 @@ "value": { "argumentTypes": null, "hexValue": "302e302e31", - "id": 637, + "id": 766, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "486:7:6", + "src": "486:7:8", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_ae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc199163811885", @@ -5002,11 +5002,11 @@ }, { "constant": true, - "id": 643, + "id": 772, "name": "SENTINEL_MODULES", "nodeType": "VariableDeclaration", - "scope": 971, - "src": "499:55:6", + "scope": 1100, + "src": "499:55:8", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -5014,10 +5014,10 @@ "typeString": "address" }, "typeName": { - "id": 639, + "id": 768, "name": "address", "nodeType": "ElementaryTypeName", - "src": "499:7:6", + "src": "499:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5029,14 +5029,14 @@ { "argumentTypes": null, "hexValue": "307831", - "id": 641, + "id": 770, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "550:3:6", + "src": "550:3:8", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -5052,20 +5052,20 @@ "typeString": "int_const 1" } ], - "id": 640, + "id": 769, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "542:7:6", + "src": "542:7:8", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 642, + "id": 771, "isConstant": false, "isLValue": false, "isPure": true, @@ -5073,7 +5073,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "542:12:6", + "src": "542:12:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5083,11 +5083,11 @@ }, { "constant": false, - "id": 647, + "id": 776, "name": "modules", "nodeType": "VariableDeclaration", - "scope": 971, - "src": "561:45:6", + "scope": 1100, + "src": "561:45:8", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -5095,28 +5095,28 @@ "typeString": "mapping(address => address)" }, "typeName": { - "id": 646, + "id": 775, "keyType": { - "id": 644, + "id": 773, "name": "address", "nodeType": "ElementaryTypeName", - "src": "570:7:6", + "src": "570:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", - "src": "561:28:6", + "src": "561:28:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" }, "valueType": { - "id": 645, + "id": 774, "name": "address", "nodeType": "ElementaryTypeName", - "src": "581:7:6", + "src": "581:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5128,13 +5128,13 @@ }, { "body": { - "id": 650, + "id": 779, "nodeType": "Block", - "src": "721:8:6", + "src": "721:8:8", "statements": [] }, "documentation": "@dev Fallback function accepts Ether transactions.", - "id": 651, + "id": 780, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -5142,29 +5142,29 @@ "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 648, + "id": 777, "nodeType": "ParameterList", "parameters": [], - "src": "681:2:6" + "src": "681:2:8" }, "payable": true, "returnParameters": { - "id": 649, + "id": 778, "nodeType": "ParameterList", "parameters": [], - "src": "721:0:6" + "src": "721:0:8" }, - "scope": 971, - "src": "672:57:6", + "scope": 1100, + "src": "672:57:8", "stateMutability": "payable", "superFunction": null, "visibility": "external" }, { "body": { - "id": 685, + "id": 814, "nodeType": "Block", - "src": "802:266:6", + "src": "802:266:8", "statements": [ { "expression": { @@ -5176,7 +5176,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 663, + "id": 792, "isConstant": false, "isLValue": false, "isPure": false, @@ -5185,26 +5185,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 659, + "id": 788, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 647, - "src": "820:7:6", + "referencedDeclaration": 776, + "src": "820:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 661, + "id": 790, "indexExpression": { "argumentTypes": null, - "id": 660, + "id": 789, "name": "SENTINEL_MODULES", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 643, - "src": "828:16:6", + "referencedDeclaration": 772, + "src": "828:16:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5215,7 +5215,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "820:25:6", + "src": "820:25:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5226,14 +5226,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 662, + "id": 791, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "849:1:6", + "src": "849:1:8", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -5241,7 +5241,7 @@ }, "value": "0" }, - "src": "820:30:6", + "src": "820:30:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5255,21 +5255,21 @@ "typeString": "bool" } ], - "id": 658, + "id": 787, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "812:7:6", + "referencedDeclaration": 2601, + "src": "812:7:8", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 664, + "id": 793, "isConstant": false, "isLValue": false, "isPure": false, @@ -5277,20 +5277,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "812:39:6", + "src": "812:39:8", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 665, + "id": 794, "nodeType": "ExpressionStatement", - "src": "812:39:6" + "src": "812:39:8" }, { "expression": { "argumentTypes": null, - "id": 670, + "id": 799, "isConstant": false, "isLValue": false, "isPure": false, @@ -5299,26 +5299,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 666, + "id": 795, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 647, - "src": "861:7:6", + "referencedDeclaration": 776, + "src": "861:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 668, + "id": 797, "indexExpression": { "argumentTypes": null, - "id": 667, + "id": 796, "name": "SENTINEL_MODULES", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 643, - "src": "869:16:6", + "referencedDeclaration": 772, + "src": "869:16:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5329,7 +5329,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "861:25:6", + "src": "861:25:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5339,26 +5339,26 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 669, + "id": 798, "name": "SENTINEL_MODULES", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 643, - "src": "889:16:6", + "referencedDeclaration": 772, + "src": "889:16:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "861:44:6", + "src": "861:44:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 671, + "id": 800, "nodeType": "ExpressionStatement", - "src": "861:44:6" + "src": "861:44:8" }, { "condition": { @@ -5367,19 +5367,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 674, + "id": 803, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 672, + "id": 801, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 653, - "src": "919:2:6", + "referencedDeclaration": 782, + "src": "919:2:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5390,14 +5390,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 673, + "id": 802, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "925:1:6", + "src": "925:1:8", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -5405,16 +5405,16 @@ }, "value": "0" }, - "src": "919:7:6", + "src": "919:7:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 684, + "id": 813, "nodeType": "IfStatement", - "src": "915:146:6", + "src": "915:146:8", "trueBody": { "expression": { "argumentTypes": null, @@ -5424,12 +5424,12 @@ "arguments": [ { "argumentTypes": null, - "id": 677, + "id": 806, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 653, - "src": "1040:2:6", + "referencedDeclaration": 782, + "src": "1040:2:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5437,12 +5437,12 @@ }, { "argumentTypes": null, - "id": 678, + "id": 807, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 655, - "src": "1044:4:6", + "referencedDeclaration": 784, + "src": "1044:4:8", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -5453,18 +5453,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 679, + "id": 808, "name": "gasleft", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2389, - "src": "1050:7:6", + "referencedDeclaration": 2591, + "src": "1050:7:8", "typeDescriptions": { "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, - "id": 680, + "id": 809, "isConstant": false, "isLValue": false, "isPure": false, @@ -5472,7 +5472,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1050:9:6", + "src": "1050:9:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5494,18 +5494,18 @@ "typeString": "uint256" } ], - "id": 676, + "id": 805, "name": "executeDelegateCall", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 888, - "src": "1020:19:6", + "referencedDeclaration": 1017, + "src": "1020:19:8", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,bytes memory,uint256) returns (bool)" } }, - "id": 681, + "id": 810, "isConstant": false, "isLValue": false, "isPure": false, @@ -5513,7 +5513,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1020:40:6", + "src": "1020:40:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5527,21 +5527,21 @@ "typeString": "bool" } ], - "id": 675, + "id": 804, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "1012:7:6", + "referencedDeclaration": 2601, + "src": "1012:7:8", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 682, + "id": 811, "isConstant": false, "isLValue": false, "isPure": false, @@ -5549,21 +5549,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1012:49:6", + "src": "1012:49:8", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 683, + "id": 812, "nodeType": "ExpressionStatement", - "src": "1012:49:6" + "src": "1012:49:8" } } ] }, "documentation": null, - "id": 686, + "id": 815, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -5571,16 +5571,16 @@ "name": "setupModules", "nodeType": "FunctionDefinition", "parameters": { - "id": 656, + "id": 785, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 653, + "id": 782, "name": "to", "nodeType": "VariableDeclaration", - "scope": 686, - "src": "757:10:6", + "scope": 815, + "src": "757:10:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5588,10 +5588,10 @@ "typeString": "address" }, "typeName": { - "id": 652, + "id": 781, "name": "address", "nodeType": "ElementaryTypeName", - "src": "757:7:6", + "src": "757:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5602,11 +5602,11 @@ }, { "constant": false, - "id": 655, + "id": 784, "name": "data", "nodeType": "VariableDeclaration", - "scope": 686, - "src": "769:10:6", + "scope": 815, + "src": "769:10:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5614,10 +5614,10 @@ "typeString": "bytes" }, "typeName": { - "id": 654, + "id": 783, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "769:5:6", + "src": "769:5:8", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -5627,26 +5627,26 @@ "visibility": "internal" } ], - "src": "756:24:6" + "src": "756:24:8" }, "payable": false, "returnParameters": { - "id": 657, + "id": 786, "nodeType": "ParameterList", "parameters": [], - "src": "802:0:6" + "src": "802:0:8" }, - "scope": 971, - "src": "735:333:6", + "scope": 1100, + "src": "735:333:8", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 729, + "id": 858, "nodeType": "Block", - "src": "1310:316:6", + "src": "1310:316:8", "statements": [ { "expression": { @@ -5658,7 +5658,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 704, + "id": 833, "isConstant": false, "isLValue": false, "isPure": false, @@ -5669,7 +5669,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 698, + "id": 827, "isConstant": false, "isLValue": false, "isPure": false, @@ -5679,14 +5679,14 @@ "arguments": [ { "argumentTypes": null, - "id": 695, + "id": 824, "name": "module", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 688, - "src": "1390:6:6", + "referencedDeclaration": 817, + "src": "1390:6:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$621", + "typeIdentifier": "t_contract$_Module_$750", "typeString": "contract Module" } } @@ -5694,24 +5694,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_Module_$621", + "typeIdentifier": "t_contract$_Module_$750", "typeString": "contract Module" } ], - "id": 694, + "id": 823, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1382:7:6", + "src": "1382:7:8", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 696, + "id": 825, "isConstant": false, "isLValue": false, "isPure": false, @@ -5719,7 +5719,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1382:15:6", + "src": "1382:15:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5730,14 +5730,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 697, + "id": 826, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1401:1:6", + "src": "1401:1:8", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -5745,7 +5745,7 @@ }, "value": "0" }, - "src": "1382:20:6", + "src": "1382:20:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5759,7 +5759,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 703, + "id": 832, "isConstant": false, "isLValue": false, "isPure": false, @@ -5769,14 +5769,14 @@ "arguments": [ { "argumentTypes": null, - "id": 700, + "id": 829, "name": "module", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 688, - "src": "1414:6:6", + "referencedDeclaration": 817, + "src": "1414:6:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$621", + "typeIdentifier": "t_contract$_Module_$750", "typeString": "contract Module" } } @@ -5784,24 +5784,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_Module_$621", + "typeIdentifier": "t_contract$_Module_$750", "typeString": "contract Module" } ], - "id": 699, + "id": 828, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1406:7:6", + "src": "1406:7:8", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 701, + "id": 830, "isConstant": false, "isLValue": false, "isPure": false, @@ -5809,7 +5809,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1406:15:6", + "src": "1406:15:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5819,24 +5819,24 @@ "operator": "!=", "rightExpression": { "argumentTypes": null, - "id": 702, + "id": 831, "name": "SENTINEL_MODULES", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 643, - "src": "1425:16:6", + "referencedDeclaration": 772, + "src": "1425:16:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "1406:35:6", + "src": "1406:35:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "1382:59:6", + "src": "1382:59:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5850,21 +5850,21 @@ "typeString": "bool" } ], - "id": 693, + "id": 822, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "1374:7:6", + "referencedDeclaration": 2601, + "src": "1374:7:8", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 705, + "id": 834, "isConstant": false, "isLValue": false, "isPure": false, @@ -5872,15 +5872,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1374:68:6", + "src": "1374:68:8", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 706, + "id": 835, "nodeType": "ExpressionStatement", - "src": "1374:68:6" + "src": "1374:68:8" }, { "expression": { @@ -5892,7 +5892,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 712, + "id": 841, "isConstant": false, "isLValue": false, "isPure": false, @@ -5901,28 +5901,28 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 708, + "id": 837, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 647, - "src": "1501:7:6", + "referencedDeclaration": 776, + "src": "1501:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 710, + "id": 839, "indexExpression": { "argumentTypes": null, - "id": 709, + "id": 838, "name": "module", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 688, - "src": "1509:6:6", + "referencedDeclaration": 817, + "src": "1509:6:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$621", + "typeIdentifier": "t_contract$_Module_$750", "typeString": "contract Module" } }, @@ -5931,7 +5931,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1501:15:6", + "src": "1501:15:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5942,14 +5942,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 711, + "id": 840, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1520:1:6", + "src": "1520:1:8", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -5957,7 +5957,7 @@ }, "value": "0" }, - "src": "1501:20:6", + "src": "1501:20:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5971,21 +5971,21 @@ "typeString": "bool" } ], - "id": 707, + "id": 836, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "1493:7:6", + "referencedDeclaration": 2601, + "src": "1493:7:8", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 713, + "id": 842, "isConstant": false, "isLValue": false, "isPure": false, @@ -5993,20 +5993,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1493:29:6", + "src": "1493:29:8", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 714, + "id": 843, "nodeType": "ExpressionStatement", - "src": "1493:29:6" + "src": "1493:29:8" }, { "expression": { "argumentTypes": null, - "id": 721, + "id": 850, "isConstant": false, "isLValue": false, "isPure": false, @@ -6015,28 +6015,28 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 715, + "id": 844, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 647, - "src": "1532:7:6", + "referencedDeclaration": 776, + "src": "1532:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 717, + "id": 846, "indexExpression": { "argumentTypes": null, - "id": 716, + "id": 845, "name": "module", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 688, - "src": "1540:6:6", + "referencedDeclaration": 817, + "src": "1540:6:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$621", + "typeIdentifier": "t_contract$_Module_$750", "typeString": "contract Module" } }, @@ -6045,7 +6045,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1532:15:6", + "src": "1532:15:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6057,26 +6057,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 718, + "id": 847, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 647, - "src": "1550:7:6", + "referencedDeclaration": 776, + "src": "1550:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 720, + "id": 849, "indexExpression": { "argumentTypes": null, - "id": 719, + "id": 848, "name": "SENTINEL_MODULES", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 643, - "src": "1558:16:6", + "referencedDeclaration": 772, + "src": "1558:16:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6087,26 +6087,26 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1550:25:6", + "src": "1550:25:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "1532:43:6", + "src": "1532:43:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 722, + "id": 851, "nodeType": "ExpressionStatement", - "src": "1532:43:6" + "src": "1532:43:8" }, { "expression": { "argumentTypes": null, - "id": 727, + "id": 856, "isConstant": false, "isLValue": false, "isPure": false, @@ -6115,26 +6115,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 723, + "id": 852, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 647, - "src": "1585:7:6", + "referencedDeclaration": 776, + "src": "1585:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 725, + "id": 854, "indexExpression": { "argumentTypes": null, - "id": 724, + "id": 853, "name": "SENTINEL_MODULES", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 643, - "src": "1593:16:6", + "referencedDeclaration": 772, + "src": "1593:16:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6145,7 +6145,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1585:25:6", + "src": "1585:25:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6155,83 +6155,83 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 726, + "id": 855, "name": "module", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 688, - "src": "1613:6:6", + "referencedDeclaration": 817, + "src": "1613:6:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$621", + "typeIdentifier": "t_contract$_Module_$750", "typeString": "contract Module" } }, - "src": "1585:34:6", + "src": "1585:34:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 728, + "id": 857, "nodeType": "ExpressionStatement", - "src": "1585:34:6" + "src": "1585:34:8" } ] }, "documentation": "@dev Allows to add a module to the whitelist.\n This can only be done via a Safe transaction.\n @param module Module to be whitelisted.", - "id": 730, + "id": 859, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 691, + "id": 820, "modifierName": { "argumentTypes": null, - "id": 690, + "id": 819, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1358, - "src": "1295:10:6", + "referencedDeclaration": 1618, + "src": "1295:10:8", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "1295:10:6" + "src": "1295:10:8" } ], "name": "enableModule", "nodeType": "FunctionDefinition", "parameters": { - "id": 689, + "id": 818, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 688, + "id": 817, "name": "module", "nodeType": "VariableDeclaration", - "scope": 730, - "src": "1257:13:6", + "scope": 859, + "src": "1257:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$621", + "typeIdentifier": "t_contract$_Module_$750", "typeString": "contract Module" }, "typeName": { "contractScope": null, - "id": 687, + "id": 816, "name": "Module", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 621, - "src": "1257:6:6", + "referencedDeclaration": 750, + "src": "1257:6:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$621", + "typeIdentifier": "t_contract$_Module_$750", "typeString": "contract Module" } }, @@ -6239,26 +6239,26 @@ "visibility": "internal" } ], - "src": "1256:15:6" + "src": "1256:15:8" }, "payable": false, "returnParameters": { - "id": 692, + "id": 821, "nodeType": "ParameterList", "parameters": [], - "src": "1310:0:6" + "src": "1310:0:8" }, - "scope": 971, - "src": "1235:391:6", + "scope": 1100, + "src": "1235:391:8", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 763, + "id": 892, "nodeType": "Block", - "src": "1982:204:6", + "src": "1982:204:8", "statements": [ { "expression": { @@ -6270,7 +6270,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 746, + "id": 875, "isConstant": false, "isLValue": false, "isPure": false, @@ -6279,28 +6279,28 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 740, + "id": 869, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 647, - "src": "2064:7:6", + "referencedDeclaration": 776, + "src": "2064:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 742, + "id": 871, "indexExpression": { "argumentTypes": null, - "id": 741, + "id": 870, "name": "prevModule", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 732, - "src": "2072:10:6", + "referencedDeclaration": 861, + "src": "2072:10:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$621", + "typeIdentifier": "t_contract$_Module_$750", "typeString": "contract Module" } }, @@ -6309,7 +6309,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2064:19:6", + "src": "2064:19:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6322,14 +6322,14 @@ "arguments": [ { "argumentTypes": null, - "id": 744, + "id": 873, "name": "module", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 734, - "src": "2095:6:6", + "referencedDeclaration": 863, + "src": "2095:6:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$621", + "typeIdentifier": "t_contract$_Module_$750", "typeString": "contract Module" } } @@ -6337,24 +6337,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_Module_$621", + "typeIdentifier": "t_contract$_Module_$750", "typeString": "contract Module" } ], - "id": 743, + "id": 872, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2087:7:6", + "src": "2087:7:8", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 745, + "id": 874, "isConstant": false, "isLValue": false, "isPure": false, @@ -6362,13 +6362,13 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2087:15:6", + "src": "2087:15:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2064:38:6", + "src": "2064:38:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6382,21 +6382,21 @@ "typeString": "bool" } ], - "id": 739, + "id": 868, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "2056:7:6", + "referencedDeclaration": 2601, + "src": "2056:7:8", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 747, + "id": 876, "isConstant": false, "isLValue": false, "isPure": false, @@ -6404,20 +6404,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2056:47:6", + "src": "2056:47:8", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 748, + "id": 877, "nodeType": "ExpressionStatement", - "src": "2056:47:6" + "src": "2056:47:8" }, { "expression": { "argumentTypes": null, - "id": 755, + "id": 884, "isConstant": false, "isLValue": false, "isPure": false, @@ -6426,28 +6426,28 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 749, + "id": 878, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 647, - "src": "2113:7:6", + "referencedDeclaration": 776, + "src": "2113:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 751, + "id": 880, "indexExpression": { "argumentTypes": null, - "id": 750, + "id": 879, "name": "prevModule", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 732, - "src": "2121:10:6", + "referencedDeclaration": 861, + "src": "2121:10:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$621", + "typeIdentifier": "t_contract$_Module_$750", "typeString": "contract Module" } }, @@ -6456,7 +6456,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "2113:19:6", + "src": "2113:19:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6468,28 +6468,28 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 752, + "id": 881, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 647, - "src": "2135:7:6", + "referencedDeclaration": 776, + "src": "2135:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 754, + "id": 883, "indexExpression": { "argumentTypes": null, - "id": 753, + "id": 882, "name": "module", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 734, - "src": "2143:6:6", + "referencedDeclaration": 863, + "src": "2143:6:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$621", + "typeIdentifier": "t_contract$_Module_$750", "typeString": "contract Module" } }, @@ -6498,26 +6498,26 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2135:15:6", + "src": "2135:15:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2113:37:6", + "src": "2113:37:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 756, + "id": 885, "nodeType": "ExpressionStatement", - "src": "2113:37:6" + "src": "2113:37:8" }, { "expression": { "argumentTypes": null, - "id": 761, + "id": 890, "isConstant": false, "isLValue": false, "isPure": false, @@ -6526,28 +6526,28 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 757, + "id": 886, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 647, - "src": "2160:7:6", + "referencedDeclaration": 776, + "src": "2160:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 759, + "id": 888, "indexExpression": { "argumentTypes": null, - "id": 758, + "id": 887, "name": "module", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 734, - "src": "2168:6:6", + "referencedDeclaration": 863, + "src": "2168:6:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$621", + "typeIdentifier": "t_contract$_Module_$750", "typeString": "contract Module" } }, @@ -6556,7 +6556,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "2160:15:6", + "src": "2160:15:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6567,14 +6567,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "30", - "id": 760, + "id": 889, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2178:1:6", + "src": "2178:1:8", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -6582,72 +6582,72 @@ }, "value": "0" }, - "src": "2160:19:6", + "src": "2160:19:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 762, + "id": 891, "nodeType": "ExpressionStatement", - "src": "2160:19:6" + "src": "2160:19:8" } ] }, "documentation": "@dev Allows to remove a module from the whitelist.\n This can only be done via a Safe transaction.\n @param prevModule Module that pointed to the module to be removed in the linked list\n @param module Module to be removed.", - "id": 764, + "id": 893, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 737, + "id": 866, "modifierName": { "argumentTypes": null, - "id": 736, + "id": 865, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1358, - "src": "1967:10:6", + "referencedDeclaration": 1618, + "src": "1967:10:8", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "1967:10:6" + "src": "1967:10:8" } ], "name": "disableModule", "nodeType": "FunctionDefinition", "parameters": { - "id": 735, + "id": 864, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 732, + "id": 861, "name": "prevModule", "nodeType": "VariableDeclaration", - "scope": 764, - "src": "1910:17:6", + "scope": 893, + "src": "1910:17:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$621", + "typeIdentifier": "t_contract$_Module_$750", "typeString": "contract Module" }, "typeName": { "contractScope": null, - "id": 731, + "id": 860, "name": "Module", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 621, - "src": "1910:6:6", + "referencedDeclaration": 750, + "src": "1910:6:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$621", + "typeIdentifier": "t_contract$_Module_$750", "typeString": "contract Module" } }, @@ -6656,26 +6656,26 @@ }, { "constant": false, - "id": 734, + "id": 863, "name": "module", "nodeType": "VariableDeclaration", - "scope": 764, - "src": "1929:13:6", + "scope": 893, + "src": "1929:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$621", + "typeIdentifier": "t_contract$_Module_$750", "typeString": "contract Module" }, "typeName": { "contractScope": null, - "id": 733, + "id": 862, "name": "Module", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 621, - "src": "1929:6:6", + "referencedDeclaration": 750, + "src": "1929:6:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$621", + "typeIdentifier": "t_contract$_Module_$750", "typeString": "contract Module" } }, @@ -6683,26 +6683,26 @@ "visibility": "internal" } ], - "src": "1909:34:6" + "src": "1909:34:8" }, "payable": false, "returnParameters": { - "id": 738, + "id": 867, "nodeType": "ParameterList", "parameters": [], - "src": "1982:0:6" + "src": "1982:0:8" }, - "scope": 971, - "src": "1887:299:6", + "scope": 1100, + "src": "1887:299:8", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 797, + "id": 926, "nodeType": "Block", - "src": "2672:227:6", + "src": "2672:227:8", "statements": [ { "expression": { @@ -6714,7 +6714,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 783, + "id": 912, "isConstant": false, "isLValue": false, "isPure": false, @@ -6723,34 +6723,34 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 778, + "id": 907, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 647, - "src": "2739:7:6", + "referencedDeclaration": 776, + "src": "2739:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 781, + "id": 910, "indexExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 779, + "id": 908, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2396, - "src": "2747:3:6", + "referencedDeclaration": 2598, + "src": "2747:3:8", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 780, + "id": 909, "isConstant": false, "isLValue": false, "isPure": false, @@ -6758,7 +6758,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2747:10:6", + "src": "2747:10:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6769,7 +6769,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2739:19:6", + "src": "2739:19:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6780,14 +6780,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 782, + "id": 911, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2762:1:6", + "src": "2762:1:8", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -6795,7 +6795,7 @@ }, "value": "0" }, - "src": "2739:24:6", + "src": "2739:24:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6809,21 +6809,21 @@ "typeString": "bool" } ], - "id": 777, + "id": 906, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "2731:7:6", + "referencedDeclaration": 2601, + "src": "2731:7:8", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 784, + "id": 913, "isConstant": false, "isLValue": false, "isPure": false, @@ -6831,32 +6831,32 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2731:33:6", + "src": "2731:33:8", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 785, + "id": 914, "nodeType": "ExpressionStatement", - "src": "2731:33:6" + "src": "2731:33:8" }, { "expression": { "argumentTypes": null, - "id": 795, + "id": 924, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 786, + "id": 915, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 775, - "src": "2836:7:6", + "referencedDeclaration": 904, + "src": "2836:7:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6869,12 +6869,12 @@ "arguments": [ { "argumentTypes": null, - "id": 788, + "id": 917, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 766, - "src": "2854:2:6", + "referencedDeclaration": 895, + "src": "2854:2:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6882,12 +6882,12 @@ }, { "argumentTypes": null, - "id": 789, + "id": 918, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 768, - "src": "2858:5:6", + "referencedDeclaration": 897, + "src": "2858:5:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6895,12 +6895,12 @@ }, { "argumentTypes": null, - "id": 790, + "id": 919, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 770, - "src": "2865:4:6", + "referencedDeclaration": 899, + "src": "2865:4:8", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -6908,14 +6908,14 @@ }, { "argumentTypes": null, - "id": 791, + "id": 920, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 772, - "src": "2871:9:6", + "referencedDeclaration": 901, + "src": "2871:9:8", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, @@ -6924,18 +6924,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 792, + "id": 921, "name": "gasleft", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2389, - "src": "2882:7:6", + "referencedDeclaration": 2591, + "src": "2882:7:8", "typeDescriptions": { "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, - "id": 793, + "id": 922, "isConstant": false, "isLValue": false, "isPure": false, @@ -6943,7 +6943,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2882:9:6", + "src": "2882:9:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6965,7 +6965,7 @@ "typeString": "bytes memory" }, { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, { @@ -6973,18 +6973,18 @@ "typeString": "uint256" } ], - "id": 787, + "id": 916, "name": "execute", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 860, - "src": "2846:7:6", + "referencedDeclaration": 989, + "src": "2846:7:8", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$5_$_t_uint256_$returns$_t_bool_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256) returns (bool)" } }, - "id": 794, + "id": 923, "isConstant": false, "isLValue": false, "isPure": false, @@ -6992,26 +6992,26 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2846:46:6", + "src": "2846:46:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "2836:56:6", + "src": "2836:56:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 796, + "id": 925, "nodeType": "ExpressionStatement", - "src": "2836:56:6" + "src": "2836:56:8" } ] }, "documentation": "@dev Allows a Module to execute a Safe transaction without any further confirmations.\n @param to Destination address of module transaction.\n @param value Ether value of module transaction.\n @param data Data payload of module transaction.\n @param operation Operation type of module transaction.", - "id": 798, + "id": 927, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -7019,16 +7019,16 @@ "name": "execTransactionFromModule", "nodeType": "FunctionDefinition", "parameters": { - "id": 773, + "id": 902, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 766, + "id": 895, "name": "to", "nodeType": "VariableDeclaration", - "scope": 798, - "src": "2557:10:6", + "scope": 927, + "src": "2557:10:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7036,10 +7036,10 @@ "typeString": "address" }, "typeName": { - "id": 765, + "id": 894, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2557:7:6", + "src": "2557:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7050,11 +7050,11 @@ }, { "constant": false, - "id": 768, + "id": 897, "name": "value", "nodeType": "VariableDeclaration", - "scope": 798, - "src": "2569:13:6", + "scope": 927, + "src": "2569:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7062,10 +7062,10 @@ "typeString": "uint256" }, "typeName": { - "id": 767, + "id": 896, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2569:7:6", + "src": "2569:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7076,11 +7076,11 @@ }, { "constant": false, - "id": 770, + "id": 899, "name": "data", "nodeType": "VariableDeclaration", - "scope": 798, - "src": "2584:10:6", + "scope": 927, + "src": "2584:10:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7088,10 +7088,10 @@ "typeString": "bytes" }, "typeName": { - "id": 769, + "id": 898, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "2584:5:6", + "src": "2584:5:8", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -7102,26 +7102,26 @@ }, { "constant": false, - "id": 772, + "id": 901, "name": "operation", "nodeType": "VariableDeclaration", - "scope": 798, - "src": "2596:24:6", + "scope": 927, + "src": "2596:24:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, "typeName": { "contractScope": null, - "id": 771, + "id": 900, "name": "Enum.Operation", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 5, - "src": "2596:14:6", + "referencedDeclaration": 29, + "src": "2596:14:8", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, @@ -7129,20 +7129,20 @@ "visibility": "internal" } ], - "src": "2556:65:6" + "src": "2556:65:8" }, "payable": false, "returnParameters": { - "id": 776, + "id": 905, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 775, + "id": 904, "name": "success", "nodeType": "VariableDeclaration", - "scope": 798, - "src": "2654:12:6", + "scope": 927, + "src": "2654:12:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7150,10 +7150,10 @@ "typeString": "bool" }, "typeName": { - "id": 774, + "id": 903, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "2654:4:6", + "src": "2654:4:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -7163,42 +7163,42 @@ "visibility": "internal" } ], - "src": "2653:14:6" + "src": "2653:14:8" }, - "scope": 971, - "src": "2522:377:6", + "scope": 1100, + "src": "2522:377:8", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 859, + "id": 988, "nodeType": "Block", - "src": "3054:399:6", + "src": "3054:399:8", "statements": [ { "condition": { "argumentTypes": null, "commonType": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, - "id": 817, + "id": 946, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 813, + "id": 942, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 806, - "src": "3068:9:6", + "referencedDeclaration": 935, + "src": "3068:9:8", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, @@ -7210,32 +7210,32 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 814, + "id": 943, "name": "Enum", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6, - "src": "3081:4:6", + "referencedDeclaration": 30, + "src": "3081:4:8", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Enum_$6_$", + "typeIdentifier": "t_type$_t_contract$_Enum_$30_$", "typeString": "type(contract Enum)" } }, - "id": 815, + "id": 944, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "Operation", "nodeType": "MemberAccess", - "referencedDeclaration": 5, - "src": "3081:14:6", + "referencedDeclaration": 29, + "src": "3081:14:8", "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_Operation_$5_$", + "typeIdentifier": "t_type$_t_enum$_Operation_$29_$", "typeString": "type(enum Enum.Operation)" } }, - "id": 816, + "id": 945, "isConstant": false, "isLValue": false, "isPure": true, @@ -7243,13 +7243,13 @@ "memberName": "Call", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "3081:19:6", + "src": "3081:19:8", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, - "src": "3068:32:6", + "src": "3068:32:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -7259,24 +7259,24 @@ "condition": { "argumentTypes": null, "commonType": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, - "id": 831, + "id": 960, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 827, + "id": 956, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 806, - "src": "3178:9:6", + "referencedDeclaration": 935, + "src": "3178:9:8", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, @@ -7288,32 +7288,32 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 828, + "id": 957, "name": "Enum", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6, - "src": "3191:4:6", + "referencedDeclaration": 30, + "src": "3191:4:8", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Enum_$6_$", + "typeIdentifier": "t_type$_t_contract$_Enum_$30_$", "typeString": "type(contract Enum)" } }, - "id": 829, + "id": 958, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "Operation", "nodeType": "MemberAccess", - "referencedDeclaration": 5, - "src": "3191:14:6", + "referencedDeclaration": 29, + "src": "3191:14:8", "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_Operation_$5_$", + "typeIdentifier": "t_type$_t_enum$_Operation_$29_$", "typeString": "type(enum Enum.Operation)" } }, - "id": 830, + "id": 959, "isConstant": false, "isLValue": false, "isPure": true, @@ -7321,35 +7321,35 @@ "memberName": "DelegateCall", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "3191:27:6", + "src": "3191:27:8", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, - "src": "3178:40:6", + "src": "3178:40:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": { - "id": 856, + "id": 985, "nodeType": "Block", - "src": "3293:154:6", + "src": "3293:154:8", "statements": [ { "assignments": [ - 841 + 970 ], "declarations": [ { "constant": false, - "id": 841, + "id": 970, "name": "newContract", "nodeType": "VariableDeclaration", - "scope": 860, - "src": "3307:19:6", + "scope": 989, + "src": "3307:19:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7357,10 +7357,10 @@ "typeString": "address" }, "typeName": { - "id": 840, + "id": 969, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3307:7:6", + "src": "3307:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7370,18 +7370,18 @@ "visibility": "internal" } ], - "id": 845, + "id": 974, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 843, + "id": 972, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 804, - "src": "3343:4:6", + "referencedDeclaration": 933, + "src": "3343:4:8", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -7395,18 +7395,18 @@ "typeString": "bytes memory" } ], - "id": 842, + "id": 971, "name": "executeCreate", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 897, - "src": "3329:13:6", + "referencedDeclaration": 1026, + "src": "3329:13:8", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$_t_address_$", "typeString": "function (bytes memory) returns (address)" } }, - "id": 844, + "id": 973, "isConstant": false, "isLValue": false, "isPure": false, @@ -7414,31 +7414,31 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3329:19:6", + "src": "3329:19:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", - "src": "3307:41:6" + "src": "3307:41:8" }, { "expression": { "argumentTypes": null, - "id": 850, + "id": 979, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 846, + "id": 975, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 811, - "src": "3362:7:6", + "referencedDeclaration": 940, + "src": "3362:7:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -7452,19 +7452,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 849, + "id": 978, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 847, + "id": 976, "name": "newContract", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 841, - "src": "3372:11:6", + "referencedDeclaration": 970, + "src": "3372:11:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7475,14 +7475,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 848, + "id": 977, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3387:1:6", + "src": "3387:1:8", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -7490,21 +7490,21 @@ }, "value": "0" }, - "src": "3372:16:6", + "src": "3372:16:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "3362:26:6", + "src": "3362:26:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 851, + "id": 980, "nodeType": "ExpressionStatement", - "src": "3362:26:6" + "src": "3362:26:8" }, { "eventCall": { @@ -7512,12 +7512,12 @@ "arguments": [ { "argumentTypes": null, - "id": 853, + "id": 982, "name": "newContract", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 841, - "src": "3424:11:6", + "referencedDeclaration": 970, + "src": "3424:11:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7531,18 +7531,18 @@ "typeString": "address" } ], - "id": 852, + "id": 981, "name": "ContractCreation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 632, - "src": "3407:16:6", + "referencedDeclaration": 761, + "src": "3407:16:8", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" } }, - "id": 854, + "id": 983, "isConstant": false, "isLValue": false, "isPure": false, @@ -7550,37 +7550,37 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3407:29:6", + "src": "3407:29:8", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 855, + "id": 984, "nodeType": "EmitStatement", - "src": "3402:34:6" + "src": "3402:34:8" } ] }, - "id": 857, + "id": 986, "nodeType": "IfStatement", - "src": "3174:273:6", + "src": "3174:273:8", "trueBody": { "expression": { "argumentTypes": null, - "id": 838, + "id": 967, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 832, + "id": 961, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 811, - "src": "3232:7:6", + "referencedDeclaration": 940, + "src": "3232:7:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -7593,12 +7593,12 @@ "arguments": [ { "argumentTypes": null, - "id": 834, + "id": 963, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 800, - "src": "3262:2:6", + "referencedDeclaration": 929, + "src": "3262:2:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7606,12 +7606,12 @@ }, { "argumentTypes": null, - "id": 835, + "id": 964, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 804, - "src": "3266:4:6", + "referencedDeclaration": 933, + "src": "3266:4:8", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -7619,12 +7619,12 @@ }, { "argumentTypes": null, - "id": 836, + "id": 965, "name": "txGas", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 808, - "src": "3272:5:6", + "referencedDeclaration": 937, + "src": "3272:5:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7646,18 +7646,18 @@ "typeString": "uint256" } ], - "id": 833, + "id": 962, "name": "executeDelegateCall", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 888, - "src": "3242:19:6", + "referencedDeclaration": 1017, + "src": "3242:19:8", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,bytes memory,uint256) returns (bool)" } }, - "id": 837, + "id": 966, "isConstant": false, "isLValue": false, "isPure": false, @@ -7665,42 +7665,42 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3242:36:6", + "src": "3242:36:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "3232:46:6", + "src": "3232:46:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 839, + "id": 968, "nodeType": "ExpressionStatement", - "src": "3232:46:6" + "src": "3232:46:8" } }, - "id": 858, + "id": 987, "nodeType": "IfStatement", - "src": "3064:383:6", + "src": "3064:383:8", "trueBody": { "expression": { "argumentTypes": null, - "id": 825, + "id": 954, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 818, + "id": 947, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 811, - "src": "3114:7:6", + "referencedDeclaration": 940, + "src": "3114:7:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -7713,12 +7713,12 @@ "arguments": [ { "argumentTypes": null, - "id": 820, + "id": 949, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 800, - "src": "3136:2:6", + "referencedDeclaration": 929, + "src": "3136:2:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7726,12 +7726,12 @@ }, { "argumentTypes": null, - "id": 821, + "id": 950, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 802, - "src": "3140:5:6", + "referencedDeclaration": 931, + "src": "3140:5:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7739,12 +7739,12 @@ }, { "argumentTypes": null, - "id": 822, + "id": 951, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 804, - "src": "3147:4:6", + "referencedDeclaration": 933, + "src": "3147:4:8", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -7752,12 +7752,12 @@ }, { "argumentTypes": null, - "id": 823, + "id": 952, "name": "txGas", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 808, - "src": "3153:5:6", + "referencedDeclaration": 937, + "src": "3153:5:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7783,18 +7783,18 @@ "typeString": "uint256" } ], - "id": 819, + "id": 948, "name": "executeCall", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 875, - "src": "3124:11:6", + "referencedDeclaration": 1004, + "src": "3124:11:8", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256,bytes memory,uint256) returns (bool)" } }, - "id": 824, + "id": 953, "isConstant": false, "isLValue": false, "isPure": false, @@ -7802,27 +7802,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3124:35:6", + "src": "3124:35:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "3114:45:6", + "src": "3114:45:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 826, + "id": 955, "nodeType": "ExpressionStatement", - "src": "3114:45:6" + "src": "3114:45:8" } } ] }, "documentation": null, - "id": 860, + "id": 989, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -7830,16 +7830,16 @@ "name": "execute", "nodeType": "FunctionDefinition", "parameters": { - "id": 809, + "id": 938, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 800, + "id": 929, "name": "to", "nodeType": "VariableDeclaration", - "scope": 860, - "src": "2922:10:6", + "scope": 989, + "src": "2922:10:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7847,10 +7847,10 @@ "typeString": "address" }, "typeName": { - "id": 799, + "id": 928, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2922:7:6", + "src": "2922:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7861,11 +7861,11 @@ }, { "constant": false, - "id": 802, + "id": 931, "name": "value", "nodeType": "VariableDeclaration", - "scope": 860, - "src": "2934:13:6", + "scope": 989, + "src": "2934:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7873,10 +7873,10 @@ "typeString": "uint256" }, "typeName": { - "id": 801, + "id": 930, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2934:7:6", + "src": "2934:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7887,11 +7887,11 @@ }, { "constant": false, - "id": 804, + "id": 933, "name": "data", "nodeType": "VariableDeclaration", - "scope": 860, - "src": "2949:10:6", + "scope": 989, + "src": "2949:10:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7899,10 +7899,10 @@ "typeString": "bytes" }, "typeName": { - "id": 803, + "id": 932, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "2949:5:6", + "src": "2949:5:8", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -7913,26 +7913,26 @@ }, { "constant": false, - "id": 806, + "id": 935, "name": "operation", "nodeType": "VariableDeclaration", - "scope": 860, - "src": "2961:24:6", + "scope": 989, + "src": "2961:24:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, "typeName": { "contractScope": null, - "id": 805, + "id": 934, "name": "Enum.Operation", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 5, - "src": "2961:14:6", + "referencedDeclaration": 29, + "src": "2961:14:8", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, @@ -7941,11 +7941,11 @@ }, { "constant": false, - "id": 808, + "id": 937, "name": "txGas", "nodeType": "VariableDeclaration", - "scope": 860, - "src": "2987:13:6", + "scope": 989, + "src": "2987:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7953,10 +7953,10 @@ "typeString": "uint256" }, "typeName": { - "id": 807, + "id": 936, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2987:7:6", + "src": "2987:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7966,20 +7966,20 @@ "visibility": "internal" } ], - "src": "2921:80:6" + "src": "2921:80:8" }, "payable": false, "returnParameters": { - "id": 812, + "id": 941, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 811, + "id": 940, "name": "success", "nodeType": "VariableDeclaration", - "scope": 860, - "src": "3036:12:6", + "scope": 989, + "src": "3036:12:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7987,10 +7987,10 @@ "typeString": "bool" }, "typeName": { - "id": 810, + "id": 939, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "3036:4:6", + "src": "3036:4:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -8000,86 +8000,86 @@ "visibility": "internal" } ], - "src": "3035:14:6" + "src": "3035:14:8" }, - "scope": 971, - "src": "2905:548:6", + "scope": 1100, + "src": "2905:548:8", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 874, + "id": 1003, "nodeType": "Block", - "src": "3586:182:6", + "src": "3586:182:8", "statements": [ { "externalReferences": [ { "data": { - "declaration": 866, + "declaration": 995, "isOffset": false, "isSlot": false, - "src": "3740:4:6", + "src": "3740:4:8", "valueSize": 1 } }, { "data": { - "declaration": 866, + "declaration": 995, "isOffset": false, "isSlot": false, - "src": "3721:4:6", + "src": "3721:4:8", "valueSize": 1 } }, { "success": { - "declaration": 871, + "declaration": 1000, "isOffset": false, "isSlot": false, - "src": "3683:7:6", + "src": "3683:7:8", "valueSize": 1 } }, { "txGas": { - "declaration": 868, + "declaration": 997, "isOffset": false, "isSlot": false, - "src": "3699:5:6", + "src": "3699:5:8", "valueSize": 1 } }, { "to": { - "declaration": 862, + "declaration": 991, "isOffset": false, "isSlot": false, - "src": "3706:2:6", + "src": "3706:2:8", "valueSize": 1 } }, { "value": { - "declaration": 864, + "declaration": 993, "isOffset": false, "isSlot": false, - "src": "3710:5:6", + "src": "3710:5:8", "valueSize": 1 } } ], - "id": 873, + "id": 1002, "nodeType": "InlineAssembly", "operations": "{\n success := call(txGas, to, value, add(data, 0x20), mload(data), 0, 0)\n}", - "src": "3660:108:6" + "src": "3660:108:8" } ] }, "documentation": null, - "id": 875, + "id": 1004, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -8087,16 +8087,16 @@ "name": "executeCall", "nodeType": "FunctionDefinition", "parameters": { - "id": 869, + "id": 998, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 862, + "id": 991, "name": "to", "nodeType": "VariableDeclaration", - "scope": 875, - "src": "3480:10:6", + "scope": 1004, + "src": "3480:10:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8104,10 +8104,10 @@ "typeString": "address" }, "typeName": { - "id": 861, + "id": 990, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3480:7:6", + "src": "3480:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8118,11 +8118,11 @@ }, { "constant": false, - "id": 864, + "id": 993, "name": "value", "nodeType": "VariableDeclaration", - "scope": 875, - "src": "3492:13:6", + "scope": 1004, + "src": "3492:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8130,10 +8130,10 @@ "typeString": "uint256" }, "typeName": { - "id": 863, + "id": 992, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3492:7:6", + "src": "3492:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8144,11 +8144,11 @@ }, { "constant": false, - "id": 866, + "id": 995, "name": "data", "nodeType": "VariableDeclaration", - "scope": 875, - "src": "3507:10:6", + "scope": 1004, + "src": "3507:10:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8156,10 +8156,10 @@ "typeString": "bytes" }, "typeName": { - "id": 865, + "id": 994, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "3507:5:6", + "src": "3507:5:8", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -8170,11 +8170,11 @@ }, { "constant": false, - "id": 868, + "id": 997, "name": "txGas", "nodeType": "VariableDeclaration", - "scope": 875, - "src": "3519:13:6", + "scope": 1004, + "src": "3519:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8182,10 +8182,10 @@ "typeString": "uint256" }, "typeName": { - "id": 867, + "id": 996, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3519:7:6", + "src": "3519:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8195,20 +8195,20 @@ "visibility": "internal" } ], - "src": "3479:54:6" + "src": "3479:54:8" }, "payable": false, "returnParameters": { - "id": 872, + "id": 1001, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 871, + "id": 1000, "name": "success", "nodeType": "VariableDeclaration", - "scope": 875, - "src": "3568:12:6", + "scope": 1004, + "src": "3568:12:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8216,10 +8216,10 @@ "typeString": "bool" }, "typeName": { - "id": 870, + "id": 999, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "3568:4:6", + "src": "3568:4:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -8229,77 +8229,77 @@ "visibility": "internal" } ], - "src": "3567:14:6" + "src": "3567:14:8" }, - "scope": 971, - "src": "3459:309:6", + "scope": 1100, + "src": "3459:309:8", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 887, + "id": 1016, "nodeType": "Block", - "src": "3894:183:6", + "src": "3894:183:8", "statements": [ { "externalReferences": [ { "data": { - "declaration": 879, + "declaration": 1008, "isOffset": false, "isSlot": false, - "src": "4049:4:6", + "src": "4049:4:8", "valueSize": 1 } }, { "data": { - "declaration": 879, + "declaration": 1008, "isOffset": false, "isSlot": false, - "src": "4030:4:6", + "src": "4030:4:8", "valueSize": 1 } }, { "success": { - "declaration": 884, + "declaration": 1013, "isOffset": false, "isSlot": false, - "src": "3991:7:6", + "src": "3991:7:8", "valueSize": 1 } }, { "txGas": { - "declaration": 881, + "declaration": 1010, "isOffset": false, "isSlot": false, - "src": "4015:5:6", + "src": "4015:5:8", "valueSize": 1 } }, { "to": { - "declaration": 877, + "declaration": 1006, "isOffset": false, "isSlot": false, - "src": "4022:2:6", + "src": "4022:2:8", "valueSize": 1 } } ], - "id": 886, + "id": 1015, "nodeType": "InlineAssembly", "operations": "{\n success := delegatecall(txGas, to, add(data, 0x20), mload(data), 0, 0)\n}", - "src": "3968:109:6" + "src": "3968:109:8" } ] }, "documentation": null, - "id": 888, + "id": 1017, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -8307,16 +8307,16 @@ "name": "executeDelegateCall", "nodeType": "FunctionDefinition", "parameters": { - "id": 882, + "id": 1011, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 877, + "id": 1006, "name": "to", "nodeType": "VariableDeclaration", - "scope": 888, - "src": "3803:10:6", + "scope": 1017, + "src": "3803:10:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8324,10 +8324,10 @@ "typeString": "address" }, "typeName": { - "id": 876, + "id": 1005, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3803:7:6", + "src": "3803:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8338,11 +8338,11 @@ }, { "constant": false, - "id": 879, + "id": 1008, "name": "data", "nodeType": "VariableDeclaration", - "scope": 888, - "src": "3815:10:6", + "scope": 1017, + "src": "3815:10:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8350,10 +8350,10 @@ "typeString": "bytes" }, "typeName": { - "id": 878, + "id": 1007, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "3815:5:6", + "src": "3815:5:8", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -8364,11 +8364,11 @@ }, { "constant": false, - "id": 881, + "id": 1010, "name": "txGas", "nodeType": "VariableDeclaration", - "scope": 888, - "src": "3827:13:6", + "scope": 1017, + "src": "3827:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8376,10 +8376,10 @@ "typeString": "uint256" }, "typeName": { - "id": 880, + "id": 1009, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3827:7:6", + "src": "3827:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8389,20 +8389,20 @@ "visibility": "internal" } ], - "src": "3802:39:6" + "src": "3802:39:8" }, "payable": false, "returnParameters": { - "id": 885, + "id": 1014, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 884, + "id": 1013, "name": "success", "nodeType": "VariableDeclaration", - "scope": 888, - "src": "3876:12:6", + "scope": 1017, + "src": "3876:12:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8410,10 +8410,10 @@ "typeString": "bool" }, "typeName": { - "id": 883, + "id": 1012, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "3876:4:6", + "src": "3876:4:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -8423,59 +8423,59 @@ "visibility": "internal" } ], - "src": "3875:14:6" + "src": "3875:14:8" }, - "scope": 971, - "src": "3774:303:6", + "scope": 1100, + "src": "3774:303:8", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 896, + "id": 1025, "nodeType": "Block", - "src": "4177:167:6", + "src": "4177:167:8", "statements": [ { "externalReferences": [ { "newContract": { - "declaration": 893, + "declaration": 1022, "isOffset": false, "isSlot": false, - "src": "4274:11:6", + "src": "4274:11:8", "valueSize": 1 } }, { "data": { - "declaration": 890, + "declaration": 1019, "isOffset": false, "isSlot": false, - "src": "4303:4:6", + "src": "4303:4:8", "valueSize": 1 } }, { "data": { - "declaration": 890, + "declaration": 1019, "isOffset": false, "isSlot": false, - "src": "4322:4:6", + "src": "4322:4:8", "valueSize": 1 } } ], - "id": 895, + "id": 1024, "nodeType": "InlineAssembly", "operations": "{\n newContract := create(0, add(data, 0x20), mload(data))\n}", - "src": "4251:93:6" + "src": "4251:93:8" } ] }, "documentation": null, - "id": 897, + "id": 1026, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -8483,16 +8483,16 @@ "name": "executeCreate", "nodeType": "FunctionDefinition", "parameters": { - "id": 891, + "id": 1020, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 890, + "id": 1019, "name": "data", "nodeType": "VariableDeclaration", - "scope": 897, - "src": "4106:10:6", + "scope": 1026, + "src": "4106:10:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8500,10 +8500,10 @@ "typeString": "bytes" }, "typeName": { - "id": 889, + "id": 1018, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "4106:5:6", + "src": "4106:5:8", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -8513,20 +8513,20 @@ "visibility": "internal" } ], - "src": "4105:12:6" + "src": "4105:12:8" }, "payable": false, "returnParameters": { - "id": 894, + "id": 1023, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 893, + "id": 1022, "name": "newContract", "nodeType": "VariableDeclaration", - "scope": 897, - "src": "4152:19:6", + "scope": 1026, + "src": "4152:19:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8534,10 +8534,10 @@ "typeString": "address" }, "typeName": { - "id": 892, + "id": 1021, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4152:7:6", + "src": "4152:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8547,32 +8547,32 @@ "visibility": "internal" } ], - "src": "4151:21:6" + "src": "4151:21:8" }, - "scope": 971, - "src": "4083:261:6", + "scope": 1100, + "src": "4083:261:8", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 969, + "id": 1098, "nodeType": "Block", - "src": "4505:656:6", + "src": "4505:656:8", "statements": [ { "assignments": [ - 904 + 1033 ], "declarations": [ { "constant": false, - "id": 904, + "id": 1033, "name": "moduleCount", "nodeType": "VariableDeclaration", - "scope": 970, - "src": "4549:19:6", + "scope": 1099, + "src": "4549:19:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8580,10 +8580,10 @@ "typeString": "uint256" }, "typeName": { - "id": 903, + "id": 1032, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4549:7:6", + "src": "4549:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8593,18 +8593,18 @@ "visibility": "internal" } ], - "id": 906, + "id": 1035, "initialValue": { "argumentTypes": null, "hexValue": "30", - "id": 905, + "id": 1034, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4571:1:6", + "src": "4571:1:8", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -8613,20 +8613,20 @@ "value": "0" }, "nodeType": "VariableDeclarationStatement", - "src": "4549:23:6" + "src": "4549:23:8" }, { "assignments": [ - 908 + 1037 ], "declarations": [ { "constant": false, - "id": 908, + "id": 1037, "name": "currentModule", "nodeType": "VariableDeclaration", - "scope": 970, - "src": "4582:21:6", + "scope": 1099, + "src": "4582:21:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8634,10 +8634,10 @@ "typeString": "address" }, "typeName": { - "id": 907, + "id": 1036, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4582:7:6", + "src": "4582:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8647,31 +8647,31 @@ "visibility": "internal" } ], - "id": 912, + "id": 1041, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 909, + "id": 1038, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 647, - "src": "4606:7:6", + "referencedDeclaration": 776, + "src": "4606:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 911, + "id": 1040, "indexExpression": { "argumentTypes": null, - "id": 910, + "id": 1039, "name": "SENTINEL_MODULES", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 643, - "src": "4614:16:6", + "referencedDeclaration": 772, + "src": "4614:16:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8682,37 +8682,37 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4606:25:6", + "src": "4606:25:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", - "src": "4582:49:6" + "src": "4582:49:8" }, { "body": { - "id": 925, + "id": 1054, "nodeType": "Block", - "src": "4682:91:6", + "src": "4682:91:8", "statements": [ { "expression": { "argumentTypes": null, - "id": 920, + "id": 1049, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 916, + "id": 1045, "name": "currentModule", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 908, - "src": "4696:13:6", + "referencedDeclaration": 1037, + "src": "4696:13:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8724,26 +8724,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 917, + "id": 1046, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 647, - "src": "4712:7:6", + "referencedDeclaration": 776, + "src": "4712:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 919, + "id": 1048, "indexExpression": { "argumentTypes": null, - "id": 918, + "id": 1047, "name": "currentModule", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 908, - "src": "4720:13:6", + "referencedDeclaration": 1037, + "src": "4720:13:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8754,26 +8754,26 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4712:22:6", + "src": "4712:22:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "4696:38:6", + "src": "4696:38:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 921, + "id": 1050, "nodeType": "ExpressionStatement", - "src": "4696:38:6" + "src": "4696:38:8" }, { "expression": { "argumentTypes": null, - "id": 923, + "id": 1052, "isConstant": false, "isLValue": false, "isPure": false, @@ -8781,15 +8781,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "4748:14:6", + "src": "4748:14:8", "subExpression": { "argumentTypes": null, - "id": 922, + "id": 1051, "name": "moduleCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 904, - "src": "4748:11:6", + "referencedDeclaration": 1033, + "src": "4748:11:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8800,9 +8800,9 @@ "typeString": "uint256" } }, - "id": 924, + "id": 1053, "nodeType": "ExpressionStatement", - "src": "4748:14:6" + "src": "4748:14:8" } ] }, @@ -8812,19 +8812,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 915, + "id": 1044, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 913, + "id": 1042, "name": "currentModule", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 908, - "src": "4647:13:6", + "referencedDeclaration": 1037, + "src": "4647:13:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8834,39 +8834,39 @@ "operator": "!=", "rightExpression": { "argumentTypes": null, - "id": 914, + "id": 1043, "name": "SENTINEL_MODULES", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 643, - "src": "4664:16:6", + "referencedDeclaration": 772, + "src": "4664:16:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "4647:33:6", + "src": "4647:33:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 926, + "id": 1055, "nodeType": "WhileStatement", - "src": "4641:132:6" + "src": "4641:132:8" }, { "assignments": [ - 930 + 1059 ], "declarations": [ { "constant": false, - "id": 930, + "id": 1059, "name": "array", "nodeType": "VariableDeclaration", - "scope": 970, - "src": "4782:22:6", + "scope": 1099, + "src": "4782:22:8", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -8875,19 +8875,19 @@ }, "typeName": { "baseType": { - "id": 928, + "id": 1057, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4782:7:6", + "src": "4782:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 929, + "id": 1058, "length": null, "nodeType": "ArrayTypeName", - "src": "4782:9:6", + "src": "4782:9:8", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" @@ -8897,18 +8897,18 @@ "visibility": "internal" } ], - "id": 936, + "id": 1065, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 934, + "id": 1063, "name": "moduleCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 904, - "src": "4821:11:6", + "referencedDeclaration": 1033, + "src": "4821:11:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8922,39 +8922,39 @@ "typeString": "uint256" } ], - "id": 933, + "id": 1062, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "NewExpression", - "src": "4807:13:6", + "src": "4807:13:8", "typeDescriptions": { "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_$", "typeString": "function (uint256) pure returns (address[] memory)" }, "typeName": { "baseType": { - "id": 931, + "id": 1060, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4811:7:6", + "src": "4811:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 932, + "id": 1061, "length": null, "nodeType": "ArrayTypeName", - "src": "4811:9:6", + "src": "4811:9:8", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" } } }, - "id": 935, + "id": 1064, "isConstant": false, "isLValue": false, "isPure": false, @@ -8962,31 +8962,31 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4807:26:6", + "src": "4807:26:8", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory", "typeString": "address[] memory" } }, "nodeType": "VariableDeclarationStatement", - "src": "4782:51:6" + "src": "4782:51:8" }, { "expression": { "argumentTypes": null, - "id": 939, + "id": 1068, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 937, + "id": 1066, "name": "moduleCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 904, - "src": "4877:11:6", + "referencedDeclaration": 1033, + "src": "4877:11:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8997,14 +8997,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "30", - "id": 938, + "id": 1067, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4891:1:6", + "src": "4891:1:8", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -9012,32 +9012,32 @@ }, "value": "0" }, - "src": "4877:15:6", + "src": "4877:15:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 940, + "id": 1069, "nodeType": "ExpressionStatement", - "src": "4877:15:6" + "src": "4877:15:8" }, { "expression": { "argumentTypes": null, - "id": 945, + "id": 1074, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 941, + "id": 1070, "name": "currentModule", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 908, - "src": "4902:13:6", + "referencedDeclaration": 1037, + "src": "4902:13:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9049,26 +9049,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 942, + "id": 1071, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 647, - "src": "4918:7:6", + "referencedDeclaration": 776, + "src": "4918:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 944, + "id": 1073, "indexExpression": { "argumentTypes": null, - "id": 943, + "id": 1072, "name": "SENTINEL_MODULES", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 643, - "src": "4926:16:6", + "referencedDeclaration": 772, + "src": "4926:16:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9079,32 +9079,32 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4918:25:6", + "src": "4918:25:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "4902:41:6", + "src": "4902:41:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 946, + "id": 1075, "nodeType": "ExpressionStatement", - "src": "4902:41:6" + "src": "4902:41:8" }, { "body": { - "id": 965, + "id": 1094, "nodeType": "Block", - "src": "4994:139:6", + "src": "4994:139:8", "statements": [ { "expression": { "argumentTypes": null, - "id": 954, + "id": 1083, "isConstant": false, "isLValue": false, "isPure": false, @@ -9113,26 +9113,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 950, + "id": 1079, "name": "array", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 930, - "src": "5008:5:6", + "referencedDeclaration": 1059, + "src": "5008:5:8", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 952, + "id": 1081, "indexExpression": { "argumentTypes": null, - "id": 951, + "id": 1080, "name": "moduleCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 904, - "src": "5014:11:6", + "referencedDeclaration": 1033, + "src": "5014:11:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9143,7 +9143,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "5008:18:6", + "src": "5008:18:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9153,43 +9153,43 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 953, + "id": 1082, "name": "currentModule", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 908, - "src": "5029:13:6", + "referencedDeclaration": 1037, + "src": "5029:13:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "5008:34:6", + "src": "5008:34:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 955, + "id": 1084, "nodeType": "ExpressionStatement", - "src": "5008:34:6" + "src": "5008:34:8" }, { "expression": { "argumentTypes": null, - "id": 960, + "id": 1089, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 956, + "id": 1085, "name": "currentModule", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 908, - "src": "5056:13:6", + "referencedDeclaration": 1037, + "src": "5056:13:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9201,26 +9201,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 957, + "id": 1086, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 647, - "src": "5072:7:6", + "referencedDeclaration": 776, + "src": "5072:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 959, + "id": 1088, "indexExpression": { "argumentTypes": null, - "id": 958, + "id": 1087, "name": "currentModule", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 908, - "src": "5080:13:6", + "referencedDeclaration": 1037, + "src": "5080:13:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9231,26 +9231,26 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "5072:22:6", + "src": "5072:22:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "5056:38:6", + "src": "5056:38:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 961, + "id": 1090, "nodeType": "ExpressionStatement", - "src": "5056:38:6" + "src": "5056:38:8" }, { "expression": { "argumentTypes": null, - "id": 963, + "id": 1092, "isConstant": false, "isLValue": false, "isPure": false, @@ -9258,15 +9258,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "5108:14:6", + "src": "5108:14:8", "subExpression": { "argumentTypes": null, - "id": 962, + "id": 1091, "name": "moduleCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 904, - "src": "5108:11:6", + "referencedDeclaration": 1033, + "src": "5108:11:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9277,9 +9277,9 @@ "typeString": "uint256" } }, - "id": 964, + "id": 1093, "nodeType": "ExpressionStatement", - "src": "5108:14:6" + "src": "5108:14:8" } ] }, @@ -9289,19 +9289,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 949, + "id": 1078, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 947, + "id": 1076, "name": "currentModule", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 908, - "src": "4959:13:6", + "referencedDeclaration": 1037, + "src": "4959:13:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9311,50 +9311,50 @@ "operator": "!=", "rightExpression": { "argumentTypes": null, - "id": 948, + "id": 1077, "name": "SENTINEL_MODULES", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 643, - "src": "4976:16:6", + "referencedDeclaration": 772, + "src": "4976:16:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "4959:33:6", + "src": "4959:33:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 966, + "id": 1095, "nodeType": "WhileStatement", - "src": "4953:180:6" + "src": "4953:180:8" }, { "expression": { "argumentTypes": null, - "id": 967, + "id": 1096, "name": "array", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 930, - "src": "5149:5:6", + "referencedDeclaration": 1059, + "src": "5149:5:8", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "functionReturnParameters": 902, - "id": 968, + "functionReturnParameters": 1031, + "id": 1097, "nodeType": "Return", - "src": "5142:12:6" + "src": "5142:12:8" } ] }, "documentation": "@dev Returns array of modules.\n @return Array of modules.", - "id": 970, + "id": 1099, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -9362,23 +9362,23 @@ "name": "getModules", "nodeType": "FunctionDefinition", "parameters": { - "id": 898, + "id": 1027, "nodeType": "ParameterList", "parameters": [], - "src": "4442:2:6" + "src": "4442:2:8" }, "payable": false, "returnParameters": { - "id": 902, + "id": 1031, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 901, + "id": 1030, "name": "", "nodeType": "VariableDeclaration", - "scope": 970, - "src": "4490:9:6", + "scope": 1099, + "src": "4490:9:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9387,19 +9387,19 @@ }, "typeName": { "baseType": { - "id": 899, + "id": 1028, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4490:7:6", + "src": "4490:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 900, + "id": 1029, "length": null, "nodeType": "ArrayTypeName", - "src": "4490:9:6", + "src": "4490:9:8", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" @@ -9409,26 +9409,26 @@ "visibility": "internal" } ], - "src": "4489:11:6" + "src": "4489:11:8" }, - "scope": 971, - "src": "4423:738:6", + "scope": 1100, + "src": "4423:738:8", "stateMutability": "view", "superFunction": null, "visibility": "public" } ], - "scope": 972, - "src": "303:4860:6" + "scope": 1101, + "src": "303:4860:8" } ], - "src": "0:5164:6" + "src": "0:5164:8" }, "compiler": { "name": "solc", - "version": "0.4.23+commit.124ca40d.Emscripten.clang" + "version": "0.4.24+commit.e67f0147.Emscripten.clang" }, "networks": {}, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-16T10:51:14.748Z" + "updatedAt": "2018-05-27T11:12:45.579Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/MultiSend.json b/safe-contracts/build/contracts/MultiSend.json index 9d356f77..7e13b411 100644 --- a/safe-contracts/build/contracts/MultiSend.json +++ b/safe-contracts/build/contracts/MultiSend.json @@ -16,28 +16,28 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b5061013a806100206000396000f300608060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680638d80ff0a14610046575b600080fd5b34801561005257600080fd5b506100ad600480360381019080803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091929192905050506100af565b005b805160205b8181101561010957808301516020820184015160608301850151608084018601600080838386885af1600081146100ea576100ef565b600080fd5b5060208060208401040260800185019450505050506100b4565b5050505600a165627a7a7230582085c54bc0284c5004bee6b973aad924e63fe6628856cdf34c1eedabe70b1787fb0029", - "deployedBytecode": "0x608060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680638d80ff0a14610046575b600080fd5b34801561005257600080fd5b506100ad600480360381019080803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091929192905050506100af565b005b805160205b8181101561010957808301516020820184015160608301850151608084018601600080838386885af1600081146100ea576100ef565b600080fd5b5060208060208401040260800185019450505050506100b4565b5050505600a165627a7a7230582085c54bc0284c5004bee6b973aad924e63fe6628856cdf34c1eedabe70b1787fb0029", + "bytecode": "0x608060405234801561001057600080fd5b5061013a806100206000396000f300608060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680638d80ff0a14610046575b600080fd5b34801561005257600080fd5b506100ad600480360381019080803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091929192905050506100af565b005b805160205b8181101561010957808301516020820184015160608301850151608084018601600080838386885af1600081146100ea576100ef565b600080fd5b50602080601f8401040260800185019450505050506100b4565b5050505600a165627a7a72305820d762b9a26edc788e8139b309555c37a91970e3acfe5f209dff1eaf14345bdbe60029", + "deployedBytecode": "0x608060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680638d80ff0a14610046575b600080fd5b34801561005257600080fd5b506100ad600480360381019080803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091929192905050506100af565b005b805160205b8181101561010957808301516020820184015160608301850151608084018601600080838386885af1600081146100ea576100ef565b600080fd5b50602080601f8401040260800185019450505050506100b4565b5050505600a165627a7a72305820d762b9a26edc788e8139b309555c37a91970e3acfe5f209dff1eaf14345bdbe60029", "sourceMap": "253:1073:16:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;253:1073:16;;;;;;;", "deployedSourceMap": "253:1073:16:-;;;;;;;;;;;;;;;;;;;;;;;;593:731;;8:9:-1;5:2;;;30:1;27;20:12;5:2;593:731:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;768:12;762:19;803:4;820:488;834:6;831:1;828:13;820:488;;;898:1;884:12;880:20;874:27;962:4;959:1;955:12;941;937:31;931:38;1035:4;1032:1;1028:12;1014;1010:31;1004:38;1096:4;1093:1;1089:12;1075;1071:31;1168:1;1165;1153:10;1147:4;1140:5;1136:2;1131:3;1126:44;1192:1;1187:23;;;;1119:91;;1187:23;1206:1;1203;1196:12;1119:91;;1287:4;1280;1273;1261:10;1257:21;1253:32;1249:43;1243:4;1239:54;1236:1;1232:62;1227:67;;846:462;;;;820:488;;;734:584;;;:::o", - "source": "pragma solidity 0.4.23;\n\n\n/// @title Multi Send - Allows to batch multiple transactions into one.\n/// @author Nick Dodson - \n/// @author Gonçalo Sá - \n/// @author Stefan George - \ncontract MultiSend {\n\n /// @dev Sends multiple transactions and reverts all if one fails.\n /// @param transactions Encoded transactions. Each transaction is encoded as\n /// a tuple(address,uint256,bytes). The bytes of all\n /// encoded transactions are concatenated to form the input.\n function multiSend(bytes transactions)\n public\n {\n // solium-disable-next-line security/no-inline-assembly\n assembly {\n let length := mload(transactions)\n let i := 0x20\n for { } lt(i, length) { } {\n let to := mload(add(transactions, i))\n let value := mload(add(transactions, add(i, 0x20)))\n let dataLength := mload(add(transactions, add(i, 0x60)))\n let data := add(transactions, add(i, 0x80))\n switch call(gas, to, value, data, dataLength, 0, 0)\n case 0 { revert(0, 0) }\n i := add(i, add(0x80, mul(div(add(dataLength, 0x20), 0x20), 0x20)))\n }\n }\n }\n}\n", + "source": "pragma solidity 0.4.24;\n\n\n/// @title Multi Send - Allows to batch multiple transactions into one.\n/// @author Nick Dodson - \n/// @author Gonçalo Sá - \n/// @author Stefan George - \ncontract MultiSend {\n\n /// @dev Sends multiple transactions and reverts all if one fails.\n /// @param transactions Encoded transactions. Each transaction is encoded as\n /// a tuple(address,uint256,bytes). The bytes of all\n /// encoded transactions are concatenated to form the input.\n function multiSend(bytes transactions)\n public\n {\n // solium-disable-next-line security/no-inline-assembly\n assembly {\n let length := mload(transactions)\n let i := 0x20\n for { } lt(i, length) { } {\n let to := mload(add(transactions, i))\n let value := mload(add(transactions, add(i, 0x20)))\n let dataLength := mload(add(transactions, add(i, 0x60)))\n let data := add(transactions, add(i, 0x80))\n switch call(gas, to, value, data, dataLength, 0, 0)\n case 0 { revert(0, 0) }\n i := add(i, add(0x80, mul(div(add(dataLength, 0x1f), 0x20), 0x20)))\n }\n }\n }\n}\n", "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/libraries/MultiSend.sol", "ast": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/libraries/MultiSend.sol", "exportedSymbols": { "MultiSend": [ - 1614 + 1740 ] }, - "id": 1615, + "id": 1741, "nodeType": "SourceUnit", "nodes": [ { - "id": 1606, + "id": 1732, "literals": [ "solidity", "0.4", - ".23" + ".24" ], "nodeType": "PragmaDirective", "src": "0:23:16" @@ -48,16 +48,16 @@ "contractKind": "contract", "documentation": "@title Multi Send - Allows to batch multiple transactions into one.\n @author Nick Dodson - \n @author Gonçalo Sá - \n @author Stefan George - ", "fullyImplemented": true, - "id": 1614, + "id": 1740, "linearizedBaseContracts": [ - 1614 + 1740 ], "name": "MultiSend", "nodeType": "ContractDefinition", "nodes": [ { "body": { - "id": 1612, + "id": 1738, "nodeType": "Block", "src": "651:673:16", "statements": [ @@ -65,7 +65,7 @@ "externalReferences": [ { "transactions": { - "declaration": 1608, + "declaration": 1734, "isOffset": false, "isSlot": false, "src": "768:12:16", @@ -74,7 +74,7 @@ }, { "transactions": { - "declaration": 1608, + "declaration": 1734, "isOffset": false, "isSlot": false, "src": "884:12:16", @@ -83,7 +83,7 @@ }, { "transactions": { - "declaration": 1608, + "declaration": 1734, "isOffset": false, "isSlot": false, "src": "941:12:16", @@ -92,7 +92,7 @@ }, { "transactions": { - "declaration": 1608, + "declaration": 1734, "isOffset": false, "isSlot": false, "src": "1014:12:16", @@ -101,7 +101,7 @@ }, { "transactions": { - "declaration": 1608, + "declaration": 1734, "isOffset": false, "isSlot": false, "src": "1075:12:16", @@ -109,15 +109,15 @@ } } ], - "id": 1611, + "id": 1737, "nodeType": "InlineAssembly", - "operations": "{\n let length := mload(transactions)\n let i := 0x20\n for {\n }\n lt(i, length)\n {\n }\n {\n let to := mload(add(transactions, i))\n let value := mload(add(transactions, add(i, 0x20)))\n let dataLength := mload(add(transactions, add(i, 0x60)))\n let data := add(transactions, add(i, 0x80))\n switch call(gas(), to, value, data, dataLength, 0, 0)\n case 0 {\n revert(0, 0)\n }\n i := add(i, add(0x80, mul(div(add(dataLength, 0x20), 0x20), 0x20)))\n }\n}", + "operations": "{\n let length := mload(transactions)\n let i := 0x20\n for {\n }\n lt(i, length)\n {\n }\n {\n let to := mload(add(transactions, i))\n let value := mload(add(transactions, add(i, 0x20)))\n let dataLength := mload(add(transactions, add(i, 0x60)))\n let data := add(transactions, add(i, 0x80))\n switch call(gas(), to, value, data, dataLength, 0, 0)\n case 0 {\n revert(0, 0)\n }\n i := add(i, add(0x80, mul(div(add(dataLength, 0x1f), 0x20), 0x20)))\n }\n}", "src": "725:599:16" } ] }, "documentation": "@dev Sends multiple transactions and reverts all if one fails.\n @param transactions Encoded transactions. Each transaction is encoded as\n a tuple(address,uint256,bytes). The bytes of all\n encoded transactions are concatenated to form the input.", - "id": 1613, + "id": 1739, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -125,15 +125,15 @@ "name": "multiSend", "nodeType": "FunctionDefinition", "parameters": { - "id": 1609, + "id": 1735, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1608, + "id": 1734, "name": "transactions", "nodeType": "VariableDeclaration", - "scope": 1613, + "scope": 1739, "src": "612:18:16", "stateVariable": false, "storageLocation": "default", @@ -142,7 +142,7 @@ "typeString": "bytes" }, "typeName": { - "id": 1607, + "id": 1733, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "612:5:16", @@ -159,19 +159,19 @@ }, "payable": false, "returnParameters": { - "id": 1610, + "id": 1736, "nodeType": "ParameterList", "parameters": [], "src": "651:0:16" }, - "scope": 1614, + "scope": 1740, "src": "593:731:16", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" } ], - "scope": 1615, + "scope": 1741, "src": "253:1073:16" } ], @@ -181,18 +181,18 @@ "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/libraries/MultiSend.sol", "exportedSymbols": { "MultiSend": [ - 1614 + 1740 ] }, - "id": 1615, + "id": 1741, "nodeType": "SourceUnit", "nodes": [ { - "id": 1606, + "id": 1732, "literals": [ "solidity", "0.4", - ".23" + ".24" ], "nodeType": "PragmaDirective", "src": "0:23:16" @@ -203,16 +203,16 @@ "contractKind": "contract", "documentation": "@title Multi Send - Allows to batch multiple transactions into one.\n @author Nick Dodson - \n @author Gonçalo Sá - \n @author Stefan George - ", "fullyImplemented": true, - "id": 1614, + "id": 1740, "linearizedBaseContracts": [ - 1614 + 1740 ], "name": "MultiSend", "nodeType": "ContractDefinition", "nodes": [ { "body": { - "id": 1612, + "id": 1738, "nodeType": "Block", "src": "651:673:16", "statements": [ @@ -220,7 +220,7 @@ "externalReferences": [ { "transactions": { - "declaration": 1608, + "declaration": 1734, "isOffset": false, "isSlot": false, "src": "768:12:16", @@ -229,7 +229,7 @@ }, { "transactions": { - "declaration": 1608, + "declaration": 1734, "isOffset": false, "isSlot": false, "src": "884:12:16", @@ -238,7 +238,7 @@ }, { "transactions": { - "declaration": 1608, + "declaration": 1734, "isOffset": false, "isSlot": false, "src": "941:12:16", @@ -247,7 +247,7 @@ }, { "transactions": { - "declaration": 1608, + "declaration": 1734, "isOffset": false, "isSlot": false, "src": "1014:12:16", @@ -256,7 +256,7 @@ }, { "transactions": { - "declaration": 1608, + "declaration": 1734, "isOffset": false, "isSlot": false, "src": "1075:12:16", @@ -264,15 +264,15 @@ } } ], - "id": 1611, + "id": 1737, "nodeType": "InlineAssembly", - "operations": "{\n let length := mload(transactions)\n let i := 0x20\n for {\n }\n lt(i, length)\n {\n }\n {\n let to := mload(add(transactions, i))\n let value := mload(add(transactions, add(i, 0x20)))\n let dataLength := mload(add(transactions, add(i, 0x60)))\n let data := add(transactions, add(i, 0x80))\n switch call(gas(), to, value, data, dataLength, 0, 0)\n case 0 {\n revert(0, 0)\n }\n i := add(i, add(0x80, mul(div(add(dataLength, 0x20), 0x20), 0x20)))\n }\n}", + "operations": "{\n let length := mload(transactions)\n let i := 0x20\n for {\n }\n lt(i, length)\n {\n }\n {\n let to := mload(add(transactions, i))\n let value := mload(add(transactions, add(i, 0x20)))\n let dataLength := mload(add(transactions, add(i, 0x60)))\n let data := add(transactions, add(i, 0x80))\n switch call(gas(), to, value, data, dataLength, 0, 0)\n case 0 {\n revert(0, 0)\n }\n i := add(i, add(0x80, mul(div(add(dataLength, 0x1f), 0x20), 0x20)))\n }\n}", "src": "725:599:16" } ] }, "documentation": "@dev Sends multiple transactions and reverts all if one fails.\n @param transactions Encoded transactions. Each transaction is encoded as\n a tuple(address,uint256,bytes). The bytes of all\n encoded transactions are concatenated to form the input.", - "id": 1613, + "id": 1739, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -280,15 +280,15 @@ "name": "multiSend", "nodeType": "FunctionDefinition", "parameters": { - "id": 1609, + "id": 1735, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1608, + "id": 1734, "name": "transactions", "nodeType": "VariableDeclaration", - "scope": 1613, + "scope": 1739, "src": "612:18:16", "stateVariable": false, "storageLocation": "default", @@ -297,7 +297,7 @@ "typeString": "bytes" }, "typeName": { - "id": 1607, + "id": 1733, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "612:5:16", @@ -314,19 +314,19 @@ }, "payable": false, "returnParameters": { - "id": 1610, + "id": 1736, "nodeType": "ParameterList", "parameters": [], "src": "651:0:16" }, - "scope": 1614, + "scope": 1740, "src": "593:731:16", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" } ], - "scope": 1615, + "scope": 1741, "src": "253:1073:16" } ], @@ -334,46 +334,28 @@ }, "compiler": { "name": "solc", - "version": "0.4.23+commit.124ca40d.Emscripten.clang" + "version": "0.4.24+commit.e67f0147.Emscripten.clang" }, "networks": { "4": { "events": {}, "links": {}, - "address": "0xeb51df3ce4e31ee60ed86cc860e68a4f892960cc", - "transactionHash": "0x1a3baba678d7b4d4c2ae5d151176442d5306e7958e83cecf49a6256fdfd2f4cb" - }, - "1525950336085": { - "events": {}, - "links": {}, - "address": "0xa4604b882b2c10ce381c4e61ad9ac72ab32f350f", - "transactionHash": "0xf4586ae05ae02801de1759128e43658bb0439e622a5ba84ad6bb4b652d641f4f" - }, - "1526283540628": { - "events": {}, - "links": {}, - "address": "0xf5cfa4069271285402ba2585c521c6c627810963", - "transactionHash": "0xf4586ae05ae02801de1759128e43658bb0439e622a5ba84ad6bb4b652d641f4f" - }, - "1526478212260": { - "events": {}, - "links": {}, - "address": "0x20658014abeebf3f064bf4442a5cd160143b800e", - "transactionHash": "0xf4586ae05ae02801de1759128e43658bb0439e622a5ba84ad6bb4b652d641f4f" - }, - "1526973574996": { - "events": {}, - "links": {}, - "address": "0xf27293ee4c8876589b0e197d3bebb2402c798e1f", - "transactionHash": "0xf4586ae05ae02801de1759128e43658bb0439e622a5ba84ad6bb4b652d641f4f" + "address": "0x46ba31fce67f6e0cfdf767b2b24c8cfa56015334", + "transactionHash": "0x4d190832f77421880276d21d750264b5a465b1c38d09d44667ce6617a8dd6a2f" }, "1527316019334": { "events": {}, "links": {}, - "address": "0x0f72f565275c8985a41a0ea8346420a61004771d", - "transactionHash": "0xf4586ae05ae02801de1759128e43658bb0439e622a5ba84ad6bb4b652d641f4f" + "address": "0xb0945dc5aa1de7306033fe26a1bba93292ccf9b8", + "transactionHash": "0x09e43d5e80b83dd623f34456dac3db1c4a8610a5734a9b8bb210e0e97dfab47e" + }, + "1527420696956": { + "events": {}, + "links": {}, + "address": "0xf76104e6bd2085f236594bf61a3d818aa6eb6d8a", + "transactionHash": "0xd044f1662e339061a8cabf2b06ac94a9f86fcccf3f5d80ebd1bea2a7542d4021" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-26T06:28:28.360Z" + "updatedAt": "2018-05-27T11:31:46.257Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/MultiSendStruct.json b/safe-contracts/build/contracts/MultiSendStruct.json deleted file mode 100644 index d70c0251..00000000 --- a/safe-contracts/build/contracts/MultiSendStruct.json +++ /dev/null @@ -1,1688 +0,0 @@ -{ - "contractName": "MultiSendStruct", - "abi": [ - { - "constant": false, - "inputs": [ - { - "components": [ - { - "name": "to", - "type": "address" - }, - { - "name": "value", - "type": "uint256" - }, - { - "name": "data", - "type": "bytes" - } - ], - "name": "transactions", - "type": "tuple[]" - } - ], - "name": "multiSend", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - } - ], - "bytecode": "0x608060405234801561001057600080fd5b506103c6806100206000396000f300608060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632f6fda4a14610046575b600080fd5b34801561005257600080fd5b5061006d60048036036100689190810190610291565b61006f565b005b60006100796100ed565b600091505b82518210156100d057828281518110151561009557fe5b9060200190602002015190506100b88160000151826020015183604001516100d5565b15156100c357600080fd5b818060010192505061007e565b505050565b600080600083516020850186885af190509392505050565b606060405190810160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001606081525090565b60006101318235610353565b905092915050565b600082601f830112151561014c57600080fd5b813561015f61015a826102ff565b6102d2565b9150818183526020840193506020810190508360005b838110156101a5578135860161018b8882610205565b845260208401935060208301925050600181019050610175565b5050505092915050565b600082601f83011215156101c257600080fd5b81356101d56101d082610327565b6102d2565b915080825260208301602083018583830111156101f157600080fd5b6101fc83828461037d565b50505092915050565b60006060828403121561021757600080fd5b61022160606102d2565b9050600061023184828501610125565b60008301525060206102458482850161027d565b602083015250604082013567ffffffffffffffff81111561026557600080fd5b610271848285016101af565b60408301525092915050565b60006102898235610373565b905092915050565b6000602082840312156102a357600080fd5b600082013567ffffffffffffffff8111156102bd57600080fd5b6102c984828501610139565b91505092915050565b6000604051905081810181811067ffffffffffffffff821117156102f557600080fd5b8060405250919050565b600067ffffffffffffffff82111561031657600080fd5b602082029050602081019050919050565b600067ffffffffffffffff82111561033e57600080fd5b601f19601f8301169050602081019050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b828183376000838301525050505600a265627a7a7230582005384089695c7c77816220e122b3c45435a664207e3c979cd8b6653c05e379236c6578706572696d656e74616cf50037", - "deployedBytecode": "0x608060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632f6fda4a14610046575b600080fd5b34801561005257600080fd5b5061006d60048036036100689190810190610291565b61006f565b005b60006100796100ed565b600091505b82518210156100d057828281518110151561009557fe5b9060200190602002015190506100b88160000151826020015183604001516100d5565b15156100c357600080fd5b818060010192505061007e565b505050565b600080600083516020850186885af190509392505050565b606060405190810160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001606081525090565b60006101318235610353565b905092915050565b600082601f830112151561014c57600080fd5b813561015f61015a826102ff565b6102d2565b9150818183526020840193506020810190508360005b838110156101a5578135860161018b8882610205565b845260208401935060208301925050600181019050610175565b5050505092915050565b600082601f83011215156101c257600080fd5b81356101d56101d082610327565b6102d2565b915080825260208301602083018583830111156101f157600080fd5b6101fc83828461037d565b50505092915050565b60006060828403121561021757600080fd5b61022160606102d2565b9050600061023184828501610125565b60008301525060206102458482850161027d565b602083015250604082013567ffffffffffffffff81111561026557600080fd5b610271848285016101af565b60408301525092915050565b60006102898235610373565b905092915050565b6000602082840312156102a357600080fd5b600082013567ffffffffffffffff8111156102bd57600080fd5b6102c984828501610139565b91505092915050565b6000604051905081810181811067ffffffffffffffff821117156102f557600080fd5b8060405250919050565b600067ffffffffffffffff82111561031657600080fd5b602082029050602081019050919050565b600067ffffffffffffffff82111561033e57600080fd5b601f19601f8301169050602081019050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b828183376000838301525050505600a265627a7a7230582005384089695c7c77816220e122b3c45435a664207e3c979cd8b6653c05e379236c6578706572696d656e74616cf50037", - "sourceMap": "339:839:17:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;339:839:17;;;;;;;", - "deployedSourceMap": "339:839:17:-;;;;;;;;;;;;;;;;;;;;;;;;587:291;;8:9:-1;5:2;;;30:1;27;20:12;5:2;587:291:17;;;;;;;;;;;;;;;;;;;;667:9;726:30;;:::i;:::-;679:1;667:13;;663:209;686:12;:19;682:1;:23;663:209;;;759:12;772:1;759:15;;;;;;;;;;;;;;;;;;726:48;;796:64;808:11;:14;;;824:11;:17;;;843:11;:16;;;796:11;:64::i;:::-;788:73;;;;;;;;707:3;;;;;;;663:209;;;587:291;;;:::o;884:292::-;978:12;1158:1;1155;1148:4;1142:11;1135:4;1129;1125:15;1118:5;1114:2;1109:3;1104:56;1093:67;;1079:91;;;;;:::o;339:839::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5:118:-1:-;;72:46;110:6;97:20;72:46;;;63:55;;57:66;;;;;175:753;;317:3;310:4;302:6;298:17;294:27;287:35;284:2;;;335:1;332;325:12;284:2;372:6;359:20;394:105;409:89;491:6;409:89;;;394:105;;;385:114;;516:5;541:6;534:5;527:21;571:4;563:6;559:17;549:27;;593:4;588:3;584:14;577:21;;646:6;679:1;664:258;689:6;686:1;683:13;664:258;;;772:3;759:17;751:6;747:30;796:62;854:3;842:10;796:62;;;791:3;784:75;882:4;877:3;873:14;866:21;;910:4;905:3;901:14;894:21;;721:201;711:1;708;704:9;699:14;;664:258;;;668:14;277:651;;;;;;;;937:432;;1034:3;1027:4;1019:6;1015:17;1011:27;1004:35;1001:2;;;1052:1;1049;1042:12;1001:2;1089:6;1076:20;1111:60;1126:44;1163:6;1126:44;;;1111:60;;;1102:69;;1191:6;1184:5;1177:21;1227:4;1219:6;1215:17;1260:4;1253:5;1249:16;1295:3;1286:6;1281:3;1277:16;1274:25;1271:2;;;1312:1;1309;1302:12;1271:2;1322:41;1356:6;1351:3;1346;1322:41;;;994:375;;;;;;;;1418:700;;1532:4;1520:9;1515:3;1511:19;1507:30;1504:2;;;1550:1;1547;1540:12;1504:2;1568:20;1583:4;1568:20;;;1559:29;;1636:1;1667:49;1712:3;1703:6;1692:9;1688:22;1667:49;;;1661:3;1654:5;1650:15;1643:74;1598:130;1779:2;1812:49;1857:3;1848:6;1837:9;1833:22;1812:49;;;1805:4;1798:5;1794:16;1787:75;1738:135;1951:2;1940:9;1936:18;1923:32;1975:18;1967:6;1964:30;1961:2;;;2007:1;2004;1997:12;1961:2;2042:54;2092:3;2083:6;2072:9;2068:22;2042:54;;;2035:4;2028:5;2024:16;2017:80;1883:225;1498:620;;;;;2125:118;;2192:46;2230:6;2217:20;2192:46;;;2183:55;;2177:66;;;;;2250:427;;2404:2;2392:9;2383:7;2379:23;2375:32;2372:2;;;2420:1;2417;2410:12;2372:2;2483:1;2472:9;2468:17;2455:31;2506:18;2498:6;2495:30;2492:2;;;2538:1;2535;2528:12;2492:2;2558:103;2653:7;2644:6;2633:9;2629:22;2558:103;;;2548:113;;2434:233;2366:311;;;;;2684:256;;2746:2;2740:9;2730:19;;2784:4;2776:6;2772:17;2883:6;2871:10;2868:22;2847:18;2835:10;2832:34;2829:62;2826:2;;;2904:1;2901;2894:12;2826:2;2924:10;2920:2;2913:22;2724:216;;;;;2947:283;;3131:18;3123:6;3120:30;3117:2;;;3163:1;3160;3153:12;3117:2;3192:4;3184:6;3180:17;3172:25;;3220:4;3214;3210:15;3202:23;;3054:176;;;;3237:254;;3376:18;3368:6;3365:30;3362:2;;;3408:1;3405;3398:12;3362:2;3452:4;3448:9;3441:4;3433:6;3429:17;3425:33;3417:41;;3481:4;3475;3471:15;3463:23;;3299:192;;;;3498:128;;3578:42;3571:5;3567:54;3556:65;;3550:76;;;;3633:79;;3702:5;3691:16;;3685:27;;;;3720:145;3801:6;3796:3;3791;3778:30;3857:1;3848:6;3843:3;3839:16;3832:27;3771:94;;;", - "source": "pragma solidity ^0.4.23;\npragma experimental ABIEncoderV2;\n\n\n/// @title Multi Send - Allows to batch multiple transactions into one.\n/// @author Nick Dodson - \n/// @author Gonçalo Sá - \n/// @author Stefan George - \n/// @author Richard Meissner - \ncontract MultiSendStruct {\n\n struct Transaction {\n address to;\n uint256 value;\n bytes data;\n }\n\n /// @dev Sends multiple transactions and reverts all if one fails.\n /// @param transactions Encoded transactions.\n function multiSend(Transaction[] transactions)\n public\n {\n for(uint256 i = 0; i < transactions.length; i++) {\n Transaction memory transaction = transactions[i];\n require(executeCall(transaction.to, transaction.value, transaction.data));\n }\n }\n\n function executeCall(address to, uint256 value, bytes data)\n internal\n returns (bool success)\n {\n // solium-disable-next-line security/no-inline-assembly\n assembly {\n success := call(gas, to, value, add(data, 0x20), mload(data), 0, 0)\n }\n }\n}\n", - "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/libraries/MultiSendStruct.sol", - "ast": { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/libraries/MultiSendStruct.sol", - "exportedSymbols": { - "MultiSendStruct": [ - 1675 - ] - }, - "id": 1676, - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 1616, - "literals": [ - "solidity", - "^", - "0.4", - ".23" - ], - "nodeType": "PragmaDirective", - "src": "0:24:17" - }, - { - "id": 1617, - "literals": [ - "experimental", - "ABIEncoderV2" - ], - "nodeType": "PragmaDirective", - "src": "25:33:17" - }, - { - "baseContracts": [], - "contractDependencies": [], - "contractKind": "contract", - "documentation": "@title Multi Send - Allows to batch multiple transactions into one.\n @author Nick Dodson - \n @author Gonçalo Sá - \n @author Stefan George - \n @author Richard Meissner - ", - "fullyImplemented": true, - "id": 1675, - "linearizedBaseContracts": [ - 1675 - ], - "name": "MultiSendStruct", - "nodeType": "ContractDefinition", - "nodes": [ - { - "canonicalName": "MultiSendStruct.Transaction", - "id": 1624, - "members": [ - { - "constant": false, - "id": 1619, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 1624, - "src": "400:10:17", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1618, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "400:7:17", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1621, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 1624, - "src": "420:13:17", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1620, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "420:7:17", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1623, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 1624, - "src": "443:10:17", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 1622, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "443:5:17", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "value": null, - "visibility": "internal" - } - ], - "name": "Transaction", - "nodeType": "StructDefinition", - "scope": 1675, - "src": "371:89:17", - "visibility": "public" - }, - { - "body": { - "id": 1660, - "nodeType": "Block", - "src": "653:225:17", - "statements": [ - { - "body": { - "id": 1658, - "nodeType": "Block", - "src": "712:160:17", - "statements": [ - { - "assignments": [ - 1642 - ], - "declarations": [ - { - "constant": false, - "id": 1642, - "name": "transaction", - "nodeType": "VariableDeclaration", - "scope": 1661, - "src": "726:30:17", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Transaction_$1624_memory_ptr", - "typeString": "struct MultiSendStruct.Transaction" - }, - "typeName": { - "contractScope": null, - "id": 1641, - "name": "Transaction", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1624, - "src": "726:11:17", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Transaction_$1624_storage_ptr", - "typeString": "struct MultiSendStruct.Transaction" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1646, - "initialValue": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1643, - "name": "transactions", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1627, - "src": "759:12:17", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Transaction_$1624_memory_$dyn_memory_ptr", - "typeString": "struct MultiSendStruct.Transaction memory[] memory" - } - }, - "id": 1645, - "indexExpression": { - "argumentTypes": null, - "id": 1644, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1631, - "src": "772:1:17", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "759:15:17", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Transaction_$1624_memory", - "typeString": "struct MultiSendStruct.Transaction memory" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "726:48:17" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1649, - "name": "transaction", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1642, - "src": "808:11:17", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Transaction_$1624_memory_ptr", - "typeString": "struct MultiSendStruct.Transaction memory" - } - }, - "id": 1650, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "to", - "nodeType": "MemberAccess", - "referencedDeclaration": 1619, - "src": "808:14:17", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1651, - "name": "transaction", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1642, - "src": "824:11:17", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Transaction_$1624_memory_ptr", - "typeString": "struct MultiSendStruct.Transaction memory" - } - }, - "id": 1652, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "value", - "nodeType": "MemberAccess", - "referencedDeclaration": 1621, - "src": "824:17:17", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1653, - "name": "transaction", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1642, - "src": "843:11:17", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Transaction_$1624_memory_ptr", - "typeString": "struct MultiSendStruct.Transaction memory" - } - }, - "id": 1654, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "data", - "nodeType": "MemberAccess", - "referencedDeclaration": 1623, - "src": "843:16:17", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bytes_memory", - "typeString": "bytes memory" - } - ], - "id": 1648, - "name": "executeCall", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1674, - "src": "796:11:17", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$", - "typeString": "function (address,uint256,bytes memory) returns (bool)" - } - }, - "id": 1655, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "796:64:17", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1647, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 2468, - 2469 - ], - "referencedDeclaration": 2468, - "src": "788:7:17", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1656, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "788:73:17", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1657, - "nodeType": "ExpressionStatement", - "src": "788:73:17" - } - ] - }, - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1637, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1634, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1631, - "src": "682:1:17", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1635, - "name": "transactions", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1627, - "src": "686:12:17", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Transaction_$1624_memory_$dyn_memory_ptr", - "typeString": "struct MultiSendStruct.Transaction memory[] memory" - } - }, - "id": 1636, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "686:19:17", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "682:23:17", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 1659, - "initializationExpression": { - "assignments": [ - 1631 - ], - "declarations": [ - { - "constant": false, - "id": 1631, - "name": "i", - "nodeType": "VariableDeclaration", - "scope": 1661, - "src": "667:9:17", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1630, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "667:7:17", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1633, - "initialValue": { - "argumentTypes": null, - "hexValue": "30", - "id": 1632, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "679:1:17", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "nodeType": "VariableDeclarationStatement", - "src": "667:13:17" - }, - "loopExpression": { - "expression": { - "argumentTypes": null, - "id": 1639, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "707:3:17", - "subExpression": { - "argumentTypes": null, - "id": 1638, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1631, - "src": "707:1:17", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1640, - "nodeType": "ExpressionStatement", - "src": "707:3:17" - }, - "nodeType": "ForStatement", - "src": "663:209:17" - } - ] - }, - "documentation": "@dev Sends multiple transactions and reverts all if one fails.\n @param transactions Encoded transactions.", - "id": 1661, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "multiSend", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1628, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1627, - "name": "transactions", - "nodeType": "VariableDeclaration", - "scope": 1661, - "src": "606:26:17", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Transaction_$1624_memory_$dyn_memory_ptr", - "typeString": "struct MultiSendStruct.Transaction[]" - }, - "typeName": { - "baseType": { - "contractScope": null, - "id": 1625, - "name": "Transaction", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1624, - "src": "606:11:17", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Transaction_$1624_storage_ptr", - "typeString": "struct MultiSendStruct.Transaction" - } - }, - "id": 1626, - "length": null, - "nodeType": "ArrayTypeName", - "src": "606:13:17", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Transaction_$1624_storage_$dyn_storage_ptr", - "typeString": "struct MultiSendStruct.Transaction[]" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "605:28:17" - }, - "payable": false, - "returnParameters": { - "id": 1629, - "nodeType": "ParameterList", - "parameters": [], - "src": "653:0:17" - }, - "scope": 1675, - "src": "587:291:17", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 1673, - "nodeType": "Block", - "src": "996:180:17", - "statements": [ - { - "externalReferences": [ - { - "data": { - "declaration": 1667, - "isOffset": false, - "isSlot": false, - "src": "1148:4:17", - "valueSize": 1 - } - }, - { - "data": { - "declaration": 1667, - "isOffset": false, - "isSlot": false, - "src": "1129:4:17", - "valueSize": 1 - } - }, - { - "success": { - "declaration": 1670, - "isOffset": false, - "isSlot": false, - "src": "1093:7:17", - "valueSize": 1 - } - }, - { - "to": { - "declaration": 1663, - "isOffset": false, - "isSlot": false, - "src": "1114:2:17", - "valueSize": 1 - } - }, - { - "value": { - "declaration": 1665, - "isOffset": false, - "isSlot": false, - "src": "1118:5:17", - "valueSize": 1 - } - } - ], - "id": 1672, - "nodeType": "InlineAssembly", - "operations": "{\n success := call(gas(), to, value, add(data, 0x20), mload(data), 0, 0)\n}", - "src": "1070:106:17" - } - ] - }, - "documentation": null, - "id": 1674, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "executeCall", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1668, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1663, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 1674, - "src": "905:10:17", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1662, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "905:7:17", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1665, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 1674, - "src": "917:13:17", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1664, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "917:7:17", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1667, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 1674, - "src": "932:10:17", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 1666, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "932:5:17", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "904:39:17" - }, - "payable": false, - "returnParameters": { - "id": 1671, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1670, - "name": "success", - "nodeType": "VariableDeclaration", - "scope": 1674, - "src": "978:12:17", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 1669, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "978:4:17", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "977:14:17" - }, - "scope": 1675, - "src": "884:292:17", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "internal" - } - ], - "scope": 1676, - "src": "339:839:17" - } - ], - "src": "0:1179:17" - }, - "legacyAST": { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/libraries/MultiSendStruct.sol", - "exportedSymbols": { - "MultiSendStruct": [ - 1675 - ] - }, - "id": 1676, - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 1616, - "literals": [ - "solidity", - "^", - "0.4", - ".23" - ], - "nodeType": "PragmaDirective", - "src": "0:24:17" - }, - { - "id": 1617, - "literals": [ - "experimental", - "ABIEncoderV2" - ], - "nodeType": "PragmaDirective", - "src": "25:33:17" - }, - { - "baseContracts": [], - "contractDependencies": [], - "contractKind": "contract", - "documentation": "@title Multi Send - Allows to batch multiple transactions into one.\n @author Nick Dodson - \n @author Gonçalo Sá - \n @author Stefan George - \n @author Richard Meissner - ", - "fullyImplemented": true, - "id": 1675, - "linearizedBaseContracts": [ - 1675 - ], - "name": "MultiSendStruct", - "nodeType": "ContractDefinition", - "nodes": [ - { - "canonicalName": "MultiSendStruct.Transaction", - "id": 1624, - "members": [ - { - "constant": false, - "id": 1619, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 1624, - "src": "400:10:17", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1618, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "400:7:17", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1621, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 1624, - "src": "420:13:17", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1620, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "420:7:17", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1623, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 1624, - "src": "443:10:17", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 1622, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "443:5:17", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "value": null, - "visibility": "internal" - } - ], - "name": "Transaction", - "nodeType": "StructDefinition", - "scope": 1675, - "src": "371:89:17", - "visibility": "public" - }, - { - "body": { - "id": 1660, - "nodeType": "Block", - "src": "653:225:17", - "statements": [ - { - "body": { - "id": 1658, - "nodeType": "Block", - "src": "712:160:17", - "statements": [ - { - "assignments": [ - 1642 - ], - "declarations": [ - { - "constant": false, - "id": 1642, - "name": "transaction", - "nodeType": "VariableDeclaration", - "scope": 1661, - "src": "726:30:17", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Transaction_$1624_memory_ptr", - "typeString": "struct MultiSendStruct.Transaction" - }, - "typeName": { - "contractScope": null, - "id": 1641, - "name": "Transaction", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1624, - "src": "726:11:17", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Transaction_$1624_storage_ptr", - "typeString": "struct MultiSendStruct.Transaction" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1646, - "initialValue": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1643, - "name": "transactions", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1627, - "src": "759:12:17", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Transaction_$1624_memory_$dyn_memory_ptr", - "typeString": "struct MultiSendStruct.Transaction memory[] memory" - } - }, - "id": 1645, - "indexExpression": { - "argumentTypes": null, - "id": 1644, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1631, - "src": "772:1:17", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "759:15:17", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Transaction_$1624_memory", - "typeString": "struct MultiSendStruct.Transaction memory" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "726:48:17" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1649, - "name": "transaction", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1642, - "src": "808:11:17", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Transaction_$1624_memory_ptr", - "typeString": "struct MultiSendStruct.Transaction memory" - } - }, - "id": 1650, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "to", - "nodeType": "MemberAccess", - "referencedDeclaration": 1619, - "src": "808:14:17", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1651, - "name": "transaction", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1642, - "src": "824:11:17", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Transaction_$1624_memory_ptr", - "typeString": "struct MultiSendStruct.Transaction memory" - } - }, - "id": 1652, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "value", - "nodeType": "MemberAccess", - "referencedDeclaration": 1621, - "src": "824:17:17", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1653, - "name": "transaction", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1642, - "src": "843:11:17", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Transaction_$1624_memory_ptr", - "typeString": "struct MultiSendStruct.Transaction memory" - } - }, - "id": 1654, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "data", - "nodeType": "MemberAccess", - "referencedDeclaration": 1623, - "src": "843:16:17", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bytes_memory", - "typeString": "bytes memory" - } - ], - "id": 1648, - "name": "executeCall", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1674, - "src": "796:11:17", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$", - "typeString": "function (address,uint256,bytes memory) returns (bool)" - } - }, - "id": 1655, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "796:64:17", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1647, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 2468, - 2469 - ], - "referencedDeclaration": 2468, - "src": "788:7:17", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1656, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "788:73:17", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1657, - "nodeType": "ExpressionStatement", - "src": "788:73:17" - } - ] - }, - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1637, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1634, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1631, - "src": "682:1:17", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1635, - "name": "transactions", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1627, - "src": "686:12:17", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Transaction_$1624_memory_$dyn_memory_ptr", - "typeString": "struct MultiSendStruct.Transaction memory[] memory" - } - }, - "id": 1636, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "686:19:17", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "682:23:17", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 1659, - "initializationExpression": { - "assignments": [ - 1631 - ], - "declarations": [ - { - "constant": false, - "id": 1631, - "name": "i", - "nodeType": "VariableDeclaration", - "scope": 1661, - "src": "667:9:17", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1630, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "667:7:17", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1633, - "initialValue": { - "argumentTypes": null, - "hexValue": "30", - "id": 1632, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "679:1:17", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "nodeType": "VariableDeclarationStatement", - "src": "667:13:17" - }, - "loopExpression": { - "expression": { - "argumentTypes": null, - "id": 1639, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "707:3:17", - "subExpression": { - "argumentTypes": null, - "id": 1638, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1631, - "src": "707:1:17", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1640, - "nodeType": "ExpressionStatement", - "src": "707:3:17" - }, - "nodeType": "ForStatement", - "src": "663:209:17" - } - ] - }, - "documentation": "@dev Sends multiple transactions and reverts all if one fails.\n @param transactions Encoded transactions.", - "id": 1661, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "multiSend", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1628, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1627, - "name": "transactions", - "nodeType": "VariableDeclaration", - "scope": 1661, - "src": "606:26:17", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Transaction_$1624_memory_$dyn_memory_ptr", - "typeString": "struct MultiSendStruct.Transaction[]" - }, - "typeName": { - "baseType": { - "contractScope": null, - "id": 1625, - "name": "Transaction", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1624, - "src": "606:11:17", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Transaction_$1624_storage_ptr", - "typeString": "struct MultiSendStruct.Transaction" - } - }, - "id": 1626, - "length": null, - "nodeType": "ArrayTypeName", - "src": "606:13:17", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Transaction_$1624_storage_$dyn_storage_ptr", - "typeString": "struct MultiSendStruct.Transaction[]" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "605:28:17" - }, - "payable": false, - "returnParameters": { - "id": 1629, - "nodeType": "ParameterList", - "parameters": [], - "src": "653:0:17" - }, - "scope": 1675, - "src": "587:291:17", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 1673, - "nodeType": "Block", - "src": "996:180:17", - "statements": [ - { - "externalReferences": [ - { - "data": { - "declaration": 1667, - "isOffset": false, - "isSlot": false, - "src": "1148:4:17", - "valueSize": 1 - } - }, - { - "data": { - "declaration": 1667, - "isOffset": false, - "isSlot": false, - "src": "1129:4:17", - "valueSize": 1 - } - }, - { - "success": { - "declaration": 1670, - "isOffset": false, - "isSlot": false, - "src": "1093:7:17", - "valueSize": 1 - } - }, - { - "to": { - "declaration": 1663, - "isOffset": false, - "isSlot": false, - "src": "1114:2:17", - "valueSize": 1 - } - }, - { - "value": { - "declaration": 1665, - "isOffset": false, - "isSlot": false, - "src": "1118:5:17", - "valueSize": 1 - } - } - ], - "id": 1672, - "nodeType": "InlineAssembly", - "operations": "{\n success := call(gas(), to, value, add(data, 0x20), mload(data), 0, 0)\n}", - "src": "1070:106:17" - } - ] - }, - "documentation": null, - "id": 1674, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "executeCall", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1668, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1663, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 1674, - "src": "905:10:17", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1662, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "905:7:17", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1665, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 1674, - "src": "917:13:17", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1664, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "917:7:17", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1667, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 1674, - "src": "932:10:17", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 1666, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "932:5:17", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "904:39:17" - }, - "payable": false, - "returnParameters": { - "id": 1671, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1670, - "name": "success", - "nodeType": "VariableDeclaration", - "scope": 1674, - "src": "978:12:17", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 1669, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "978:4:17", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "977:14:17" - }, - "scope": 1675, - "src": "884:292:17", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "internal" - } - ], - "scope": 1676, - "src": "339:839:17" - } - ], - "src": "0:1179:17" - }, - "compiler": { - "name": "solc", - "version": "0.4.23+commit.124ca40d.Emscripten.clang" - }, - "networks": {}, - "schemaVersion": "2.0.0", - "updatedAt": "2018-05-10T10:43:07.902Z" -} \ No newline at end of file diff --git a/safe-contracts/build/contracts/OwnerManager.json b/safe-contracts/build/contracts/OwnerManager.json index cf8b0653..e929f63a 100644 --- a/safe-contracts/build/contracts/OwnerManager.json +++ b/safe-contracts/build/contracts/OwnerManager.json @@ -139,40 +139,40 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50610efa806100206000396000f30060806040526004361061008e576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632f54bf6e1461009357806386040aa9146100ee5780638cff63551461015e578063a0e67e2b146101b5578063b7f3358d14610221578063b91a667f14610251578063e318b52b146102a1578063e75235b814610324575b600080fd5b34801561009f57600080fd5b506100d4600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610355565b604051808215151515815260200191505060405180910390f35b3480156100fa57600080fd5b5061015c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff1690602001909291905050506103d6565b005b34801561016a57600080fd5b50610173610657565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101c157600080fd5b506101ca61065c565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561020d5780820151818401526020810190506101f2565b505050509050019250505060405180910390f35b34801561022d57600080fd5b5061024f600480360381019080803560ff1690602001909291905050506107f5565b005b34801561025d57600080fd5b5061029f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050610874565b005b3480156102ad57600080fd5b50610322600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b28565b005b34801561033057600080fd5b50610339610eb7565b604051808260ff1660ff16815260200191505060405180910390f35b6000806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561041057600080fd5b8060ff1660018054031015151561042657600080fd5b8173ffffffffffffffffffffffffffffffffffffffff166000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156104be57600080fd5b6000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160008154809291906001900391905055508060ff16600260009054906101000a900460ff1660ff1614151561065257610651816107f5565b5b505050565b600181565b6060806000806001546040519080825280602002602001820160405280156106935781602001602082028038833980820191505090505b50925060009150600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415156107ec5780838381518110151561074257fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081806001019250506106fd565b82935050505090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561082f57600080fd5b6001548160ff161115151561084357600080fd5b60018160ff161015151561085657600080fd5b80600260006101000a81548160ff021916908360ff16021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156108ae57600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff16141580156109025750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b151561090d57600080fd5b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561099057600080fd5b600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600081548092919060010191905055508060ff16600260009054906101000a900460ff1660ff16141515610b2457610b23816107f5565b5b5050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610b6257600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614158015610bb65750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1515610bc157600080fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610c4457600080fd5b8173ffffffffffffffffffffffffffffffffffffffff166000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610cdc57600080fd5b6000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b6000600260009054906101000a900460ff169050905600a165627a7a72305820372e97755cf66d7d4dedc8cf9b71ad26a96c66a3db678bac90c5e04bea67c8ab0029", - "deployedBytecode": "0x60806040526004361061008e576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632f54bf6e1461009357806386040aa9146100ee5780638cff63551461015e578063a0e67e2b146101b5578063b7f3358d14610221578063b91a667f14610251578063e318b52b146102a1578063e75235b814610324575b600080fd5b34801561009f57600080fd5b506100d4600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610355565b604051808215151515815260200191505060405180910390f35b3480156100fa57600080fd5b5061015c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff1690602001909291905050506103d6565b005b34801561016a57600080fd5b50610173610657565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101c157600080fd5b506101ca61065c565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561020d5780820151818401526020810190506101f2565b505050509050019250505060405180910390f35b34801561022d57600080fd5b5061024f600480360381019080803560ff1690602001909291905050506107f5565b005b34801561025d57600080fd5b5061029f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050610874565b005b3480156102ad57600080fd5b50610322600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b28565b005b34801561033057600080fd5b50610339610eb7565b604051808260ff1660ff16815260200191505060405180910390f35b6000806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561041057600080fd5b8060ff1660018054031015151561042657600080fd5b8173ffffffffffffffffffffffffffffffffffffffff166000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156104be57600080fd5b6000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160008154809291906001900391905055508060ff16600260009054906101000a900460ff1660ff1614151561065257610651816107f5565b5b505050565b600181565b6060806000806001546040519080825280602002602001820160405280156106935781602001602082028038833980820191505090505b50925060009150600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415156107ec5780838381518110151561074257fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081806001019250506106fd565b82935050505090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561082f57600080fd5b6001548160ff161115151561084357600080fd5b60018160ff161015151561085657600080fd5b80600260006101000a81548160ff021916908360ff16021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156108ae57600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff16141580156109025750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b151561090d57600080fd5b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561099057600080fd5b600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600081548092919060010191905055508060ff16600260009054906101000a900460ff1660ff16141515610b2457610b23816107f5565b5b5050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610b6257600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614158015610bb65750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1515610bc157600080fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610c4457600080fd5b8173ffffffffffffffffffffffffffffffffffffffff166000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610cdc57600080fd5b6000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b6000600260009054906101000a900460ff169050905600a165627a7a72305820372e97755cf66d7d4dedc8cf9b71ad26a96c66a3db678bac90c5e04bea67c8ab0029", - "sourceMap": "240:5272:7:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;240:5272:7;;;;;;;", - "deployedSourceMap": "240:5272:7:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4841:129;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4841:129:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2776:573;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2776:573:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;287:54;;8:9:-1;5:2;;;30:1;27;20:12;5:2;287:54:7;;;;;;;;;;;;;;;;;;;;;;;;;;;5052:458;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5052:458:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;5052:458:7;;;;;;;;;;;;;;;;;4398:318;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4398:318:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;1906:528;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1906:528:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3683:526;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3683:526:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4722:113;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4722:113:7;;;;;;;;;;;;;;;;;;;;;;;;;;;4841:129;4918:4;4962:1;4945:6;:13;4952:5;4945:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;;4938:25;;4841:129;;;:::o;2776:573::-;244:4:8;222:27;;:10;:27;;;214:36;;;;;;;;3000:10:7;2982:28;;2995:1;2982:10;;:14;:28;;2974:37;;;;;;;;3112:5;3091:26;;:6;:17;3098:9;3091:17;;;;;;;;;;;;;;;;;;;;;;;;;:26;;;3083:35;;;;;;;;3148:6;:13;3155:5;3148:13;;;;;;;;;;;;;;;;;;;;;;;;;3128:6;:17;3135:9;3128:17;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;3187:1;3171:6;:13;3178:5;3171:13;;;;;;;;;;;;;;;;:17;;;;;;;;;;;;;;;;;;3198:10;;:12;;;;;;;;;;;;;;3291:10;3278:23;;:9;;;;;;;;;;;:23;;;;3274:68;;;3315:27;3331:10;3315:15;:27::i;:::-;3274:68;2776:573;;;:::o;287:54::-;337:3;287:54;:::o;5052:458::-;5118:9;5143:22;5237:13;5264:20;5182:10;;5168:25;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;5168:25:7;;;;5143:50;;5253:1;5237:17;;5287:6;:23;337:3;5287:23;;;;;;;;;;;;;;;;;;;;;;;;;5264:46;;5320:162;337:3;5326:31;;:12;:31;;;;5320:162;;;5388:12;5373:5;5379;5373:12;;;;;;;;;;;;;;;;;:27;;;;;;;;;;;5429:6;:20;5436:12;5429:20;;;;;;;;;;;;;;;;;;;;;;;;;5414:35;;5463:8;;;;;;;5320:162;;;5498:5;5491:12;;5052:458;;;;:::o;4398:318::-;244:4:8;222:27;;:10;:27;;;214:36;;;;;;;;4580:10:7;;4566;:24;;;;4558:33;;;;;;;;4675:1;4661:10;:15;;;;4653:24;;;;;;;;4699:10;4687:9;;:22;;;;;;;;;;;;;;;;;;4398:318;:::o;1906:528::-;244:4:8;222:27;;:10;:27;;;214:36;;;;;;;;2076:1:7;2067:5;:10;;;;:38;;;;;337:3;2081:24;;:5;:24;;;;2067:38;2059:47;;;;;;;;2181:1;2164:6;:13;2171:5;2164:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;2156:27;;;;;;;;2209:6;:23;337:3;2209:23;;;;;;;;;;;;;;;;;;;;;;;;;2193:6;:13;2200:5;2193:13;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;2268:5;2242:6;:23;337:3;2242:23;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;2283:10;;:12;;;;;;;;;;;;;2376:10;2363:23;;:9;;;;;;;;;;;:23;;;;2359:68;;;2400:27;2416:10;2400:15;:27::i;:::-;2359:68;1906:528;;:::o;3683:526::-;244:4:8;222:27;;:10;:27;;;214:36;;;;;;;;3866:1:7;3854:8;:13;;;;:44;;;;;337:3;3871:27;;:8;:27;;;;3854:44;3846:53;;;;;;;;3977:1;3957:6;:16;3964:8;3957:16;;;;;;;;;;;;;;;;;;;;;;;;;:21;;;3949:30;;;;;;;;4080:8;4059:29;;:6;:17;4066:9;4059:17;;;;;;;;;;;;;;;;;;;;;;;;;:29;;;4051:38;;;;;;;;4118:6;:16;4125:8;4118:16;;;;;;;;;;;;;;;;;;;;;;;;;4099:6;:16;4106:8;4099:16;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;4164:8;4144:6;:17;4151:9;4144:17;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;4201:1;4182:6;:16;4189:8;4182:16;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;3683:526;;;:::o;4722:113::-;4791:5;4819:9;;;;;;;;;;;4812:16;;4722:113;:::o", - "source": "pragma solidity 0.4.23;\nimport \"./SelfAuthorized.sol\";\n\n/// @title OwnerManager - Manages a set of owners and a threshold to perform actions.\n/// @author Stefan George - \n/// @author Richard Meissner - \ncontract OwnerManager is SelfAuthorized {\n\n address public constant SENTINEL_OWNERS = address(0x1);\n\n mapping(address => address) internal owners;\n uint256 ownerCount;\n uint8 internal threshold;\n\n /// @dev Setup function sets initial storage of contract.\n /// @param _owners List of Safe owners.\n /// @param _threshold Number of required confirmations for a Safe transaction.\n function setupOwners(address[] _owners, uint8 _threshold)\n internal\n {\n // Threshold can only be 0 at initialization.\n // Check ensures that setup function can only be called once.\n require(threshold == 0);\n // Validate that threshold is smaller than number of added owners.\n require(_threshold <= _owners.length);\n // There has to be at least one Safe owner.\n require(_threshold >= 1);\n // Initializing Safe owners.\n address currentOwner = SENTINEL_OWNERS;\n for (uint256 i = 0; i < _owners.length; i++) {\n // Owner address cannot be null.\n address owner = _owners[i];\n require(owner != 0 && owner != SENTINEL_OWNERS);\n // No duplicate owners allowed.\n require(owners[owner] == 0);\n owners[currentOwner] = owner;\n currentOwner = owner;\n }\n owners[currentOwner] = SENTINEL_OWNERS;\n ownerCount = _owners.length;\n threshold = _threshold;\n }\n\n /// @dev Allows to add a new owner to the Safe and update the threshold at the same time.\n /// This can only be done via a Safe transaction.\n /// @param owner New owner address.\n /// @param _threshold New threshold.\n function addOwnerWithThreshold(address owner, uint8 _threshold)\n public\n authorized\n {\n // Owner address cannot be null.\n require(owner != 0 && owner != SENTINEL_OWNERS);\n // No duplicate owners allowed.\n require(owners[owner] == 0);\n owners[owner] = owners[SENTINEL_OWNERS];\n owners[SENTINEL_OWNERS] = owner;\n ownerCount++;\n // Change threshold if threshold was changed.\n if (threshold != _threshold)\n changeThreshold(_threshold);\n }\n\n /// @dev Allows to remove an owner from the Safe and update the threshold at the same time.\n /// This can only be done via a Safe transaction.\n /// @param prevOwner Owner that pointed to the owner to be removed in the linked list\n /// @param owner Owner address to be removed.\n /// @param _threshold New threshold.\n function removeOwner(address prevOwner, address owner, uint8 _threshold)\n public\n authorized\n {\n // Only allow to remove an owner, if threshold can still be reached.\n require(ownerCount - 1 >= _threshold);\n // Validate owner address corresponds to owner index.\n require(owners[prevOwner] == owner);\n owners[prevOwner] = owners[owner];\n owners[owner] = 0;\n ownerCount--;\n // Change threshold if threshold was changed.\n if (threshold != _threshold)\n changeThreshold(_threshold);\n }\n\n /// @dev Allows to swap/replace an owner from the Safe with another address.\n /// This can only be done via a Safe transaction.\n /// @param prevOwner Owner that pointed to the owner to be replaced in the linked list\n /// @param oldOwner Owner address to be replaced.\n /// @param newOwner New owner address.\n function swapOwner(address prevOwner, address oldOwner, address newOwner)\n public\n authorized\n {\n // Owner address cannot be null.\n require(newOwner != 0 && newOwner != SENTINEL_OWNERS);\n // No duplicate owners allowed.\n require(owners[newOwner] == 0);\n // Validate owner address corresponds to owner index.\n require(owners[prevOwner] == oldOwner);\n owners[newOwner] = owners[oldOwner];\n owners[prevOwner] = newOwner;\n owners[oldOwner] = 0;\n }\n\n /// @dev Allows to update the number of required confirmations by Safe owners.\n /// This can only be done via a Safe transaction.\n /// @param _threshold New threshold.\n function changeThreshold(uint8 _threshold)\n public\n authorized\n {\n // Validate that threshold is smaller than number of owners.\n require(_threshold <= ownerCount);\n // There has to be at least one Safe owner.\n require(_threshold >= 1);\n threshold = _threshold;\n }\n\n function getThreshold()\n public\n view\n returns (uint8)\n {\n return threshold;\n }\n\n function isOwner(address owner)\n public\n view\n returns (bool)\n {\n return owners[owner] != 0;\n }\n\n /// @dev Returns array of owners.\n /// @return Array of Safe owners.\n function getOwners()\n public\n view\n returns (address[])\n {\n address[] memory array = new address[](ownerCount);\n\n // populate return array\n uint256 index = 0;\n address currentOwner = owners[SENTINEL_OWNERS];\n while(currentOwner != SENTINEL_OWNERS) {\n array[index] = currentOwner;\n currentOwner = owners[currentOwner];\n index ++;\n }\n return array;\n }\n}\n", + "bytecode": "0x608060405234801561001057600080fd5b50610efa806100206000396000f30060806040526004361061008e576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632f54bf6e1461009357806386040aa9146100ee5780638cff63551461015e578063a0e67e2b146101b5578063b7f3358d14610221578063b91a667f14610251578063e318b52b146102a1578063e75235b814610324575b600080fd5b34801561009f57600080fd5b506100d4600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610355565b604051808215151515815260200191505060405180910390f35b3480156100fa57600080fd5b5061015c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff1690602001909291905050506103d6565b005b34801561016a57600080fd5b50610173610657565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101c157600080fd5b506101ca61065c565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561020d5780820151818401526020810190506101f2565b505050509050019250505060405180910390f35b34801561022d57600080fd5b5061024f600480360381019080803560ff1690602001909291905050506107f5565b005b34801561025d57600080fd5b5061029f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050610874565b005b3480156102ad57600080fd5b50610322600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b28565b005b34801561033057600080fd5b50610339610eb7565b604051808260ff1660ff16815260200191505060405180910390f35b6000806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561041057600080fd5b8060ff1660018054031015151561042657600080fd5b8173ffffffffffffffffffffffffffffffffffffffff166000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156104be57600080fd5b6000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160008154809291906001900391905055508060ff16600260009054906101000a900460ff1660ff1614151561065257610651816107f5565b5b505050565b600181565b6060806000806001546040519080825280602002602001820160405280156106935781602001602082028038833980820191505090505b50925060009150600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415156107ec5780838381518110151561074257fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081806001019250506106fd565b82935050505090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561082f57600080fd5b6001548160ff161115151561084357600080fd5b60018160ff161015151561085657600080fd5b80600260006101000a81548160ff021916908360ff16021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156108ae57600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff16141580156109025750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b151561090d57600080fd5b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561099057600080fd5b600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600081548092919060010191905055508060ff16600260009054906101000a900460ff1660ff16141515610b2457610b23816107f5565b5b5050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610b6257600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614158015610bb65750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1515610bc157600080fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610c4457600080fd5b8173ffffffffffffffffffffffffffffffffffffffff166000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610cdc57600080fd5b6000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b6000600260009054906101000a900460ff169050905600a165627a7a723058207162ce7887c437c5aff253c6ee66707c5dd406c4fefdd37babe3c37d937512df0029", + "deployedBytecode": "0x60806040526004361061008e576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632f54bf6e1461009357806386040aa9146100ee5780638cff63551461015e578063a0e67e2b146101b5578063b7f3358d14610221578063b91a667f14610251578063e318b52b146102a1578063e75235b814610324575b600080fd5b34801561009f57600080fd5b506100d4600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610355565b604051808215151515815260200191505060405180910390f35b3480156100fa57600080fd5b5061015c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff1690602001909291905050506103d6565b005b34801561016a57600080fd5b50610173610657565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101c157600080fd5b506101ca61065c565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561020d5780820151818401526020810190506101f2565b505050509050019250505060405180910390f35b34801561022d57600080fd5b5061024f600480360381019080803560ff1690602001909291905050506107f5565b005b34801561025d57600080fd5b5061029f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050610874565b005b3480156102ad57600080fd5b50610322600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b28565b005b34801561033057600080fd5b50610339610eb7565b604051808260ff1660ff16815260200191505060405180910390f35b6000806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561041057600080fd5b8060ff1660018054031015151561042657600080fd5b8173ffffffffffffffffffffffffffffffffffffffff166000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156104be57600080fd5b6000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160008154809291906001900391905055508060ff16600260009054906101000a900460ff1660ff1614151561065257610651816107f5565b5b505050565b600181565b6060806000806001546040519080825280602002602001820160405280156106935781602001602082028038833980820191505090505b50925060009150600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415156107ec5780838381518110151561074257fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081806001019250506106fd565b82935050505090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561082f57600080fd5b6001548160ff161115151561084357600080fd5b60018160ff161015151561085657600080fd5b80600260006101000a81548160ff021916908360ff16021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156108ae57600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff16141580156109025750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b151561090d57600080fd5b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561099057600080fd5b600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600081548092919060010191905055508060ff16600260009054906101000a900460ff1660ff16141515610b2457610b23816107f5565b5b5050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610b6257600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614158015610bb65750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1515610bc157600080fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610c4457600080fd5b8173ffffffffffffffffffffffffffffffffffffffff166000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610cdc57600080fd5b6000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b6000600260009054906101000a900460ff169050905600a165627a7a723058207162ce7887c437c5aff253c6ee66707c5dd406c4fefdd37babe3c37d937512df0029", + "sourceMap": "240:5272:9:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;240:5272:9;;;;;;;", + "deployedSourceMap": "240:5272:9:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4841:129;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4841:129:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2776:573;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2776:573:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;287:54;;8:9:-1;5:2;;;30:1;27;20:12;5:2;287:54:9;;;;;;;;;;;;;;;;;;;;;;;;;;;5052:458;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5052:458:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;5052:458:9;;;;;;;;;;;;;;;;;4398:318;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4398:318:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;1906:528;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1906:528:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3683:526;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3683:526:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4722:113;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4722:113:9;;;;;;;;;;;;;;;;;;;;;;;;;;;4841:129;4918:4;4962:1;4945:6;:13;4952:5;4945:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;;4938:25;;4841:129;;;:::o;2776:573::-;244:4:13;222:27;;:10;:27;;;214:36;;;;;;;;3000:10:9;2982:28;;2995:1;2982:10;;:14;:28;;2974:37;;;;;;;;3112:5;3091:26;;:6;:17;3098:9;3091:17;;;;;;;;;;;;;;;;;;;;;;;;;:26;;;3083:35;;;;;;;;3148:6;:13;3155:5;3148:13;;;;;;;;;;;;;;;;;;;;;;;;;3128:6;:17;3135:9;3128:17;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;3187:1;3171:6;:13;3178:5;3171:13;;;;;;;;;;;;;;;;:17;;;;;;;;;;;;;;;;;;3198:10;;:12;;;;;;;;;;;;;;3291:10;3278:23;;:9;;;;;;;;;;;:23;;;;3274:68;;;3315:27;3331:10;3315:15;:27::i;:::-;3274:68;2776:573;;;:::o;287:54::-;337:3;287:54;:::o;5052:458::-;5118:9;5143:22;5237:13;5264:20;5182:10;;5168:25;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;5168:25:9;;;;5143:50;;5253:1;5237:17;;5287:6;:23;337:3;5287:23;;;;;;;;;;;;;;;;;;;;;;;;;5264:46;;5320:162;337:3;5326:31;;:12;:31;;;;5320:162;;;5388:12;5373:5;5379;5373:12;;;;;;;;;;;;;;;;;:27;;;;;;;;;;;5429:6;:20;5436:12;5429:20;;;;;;;;;;;;;;;;;;;;;;;;;5414:35;;5463:8;;;;;;;5320:162;;;5498:5;5491:12;;5052:458;;;;:::o;4398:318::-;244:4:13;222:27;;:10;:27;;;214:36;;;;;;;;4580:10:9;;4566;:24;;;;4558:33;;;;;;;;4675:1;4661:10;:15;;;;4653:24;;;;;;;;4699:10;4687:9;;:22;;;;;;;;;;;;;;;;;;4398:318;:::o;1906:528::-;244:4:13;222:27;;:10;:27;;;214:36;;;;;;;;2076:1:9;2067:5;:10;;;;:38;;;;;337:3;2081:24;;:5;:24;;;;2067:38;2059:47;;;;;;;;2181:1;2164:6;:13;2171:5;2164:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;2156:27;;;;;;;;2209:6;:23;337:3;2209:23;;;;;;;;;;;;;;;;;;;;;;;;;2193:6;:13;2200:5;2193:13;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;2268:5;2242:6;:23;337:3;2242:23;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;2283:10;;:12;;;;;;;;;;;;;2376:10;2363:23;;:9;;;;;;;;;;;:23;;;;2359:68;;;2400:27;2416:10;2400:15;:27::i;:::-;2359:68;1906:528;;:::o;3683:526::-;244:4:13;222:27;;:10;:27;;;214:36;;;;;;;;3866:1:9;3854:8;:13;;;;:44;;;;;337:3;3871:27;;:8;:27;;;;3854:44;3846:53;;;;;;;;3977:1;3957:6;:16;3964:8;3957:16;;;;;;;;;;;;;;;;;;;;;;;;;:21;;;3949:30;;;;;;;;4080:8;4059:29;;:6;:17;4066:9;4059:17;;;;;;;;;;;;;;;;;;;;;;;;;:29;;;4051:38;;;;;;;;4118:6;:16;4125:8;4118:16;;;;;;;;;;;;;;;;;;;;;;;;;4099:6;:16;4106:8;4099:16;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;4164:8;4144:6;:17;4151:9;4144:17;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;4201:1;4182:6;:16;4189:8;4182:16;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;3683:526;;;:::o;4722:113::-;4791:5;4819:9;;;;;;;;;;;4812:16;;4722:113;:::o", + "source": "pragma solidity 0.4.24;\nimport \"./SelfAuthorized.sol\";\n\n/// @title OwnerManager - Manages a set of owners and a threshold to perform actions.\n/// @author Stefan George - \n/// @author Richard Meissner - \ncontract OwnerManager is SelfAuthorized {\n\n address public constant SENTINEL_OWNERS = address(0x1);\n\n mapping(address => address) internal owners;\n uint256 ownerCount;\n uint8 internal threshold;\n\n /// @dev Setup function sets initial storage of contract.\n /// @param _owners List of Safe owners.\n /// @param _threshold Number of required confirmations for a Safe transaction.\n function setupOwners(address[] _owners, uint8 _threshold)\n internal\n {\n // Threshold can only be 0 at initialization.\n // Check ensures that setup function can only be called once.\n require(threshold == 0);\n // Validate that threshold is smaller than number of added owners.\n require(_threshold <= _owners.length);\n // There has to be at least one Safe owner.\n require(_threshold >= 1);\n // Initializing Safe owners.\n address currentOwner = SENTINEL_OWNERS;\n for (uint256 i = 0; i < _owners.length; i++) {\n // Owner address cannot be null.\n address owner = _owners[i];\n require(owner != 0 && owner != SENTINEL_OWNERS);\n // No duplicate owners allowed.\n require(owners[owner] == 0);\n owners[currentOwner] = owner;\n currentOwner = owner;\n }\n owners[currentOwner] = SENTINEL_OWNERS;\n ownerCount = _owners.length;\n threshold = _threshold;\n }\n\n /// @dev Allows to add a new owner to the Safe and update the threshold at the same time.\n /// This can only be done via a Safe transaction.\n /// @param owner New owner address.\n /// @param _threshold New threshold.\n function addOwnerWithThreshold(address owner, uint8 _threshold)\n public\n authorized\n {\n // Owner address cannot be null.\n require(owner != 0 && owner != SENTINEL_OWNERS);\n // No duplicate owners allowed.\n require(owners[owner] == 0);\n owners[owner] = owners[SENTINEL_OWNERS];\n owners[SENTINEL_OWNERS] = owner;\n ownerCount++;\n // Change threshold if threshold was changed.\n if (threshold != _threshold)\n changeThreshold(_threshold);\n }\n\n /// @dev Allows to remove an owner from the Safe and update the threshold at the same time.\n /// This can only be done via a Safe transaction.\n /// @param prevOwner Owner that pointed to the owner to be removed in the linked list\n /// @param owner Owner address to be removed.\n /// @param _threshold New threshold.\n function removeOwner(address prevOwner, address owner, uint8 _threshold)\n public\n authorized\n {\n // Only allow to remove an owner, if threshold can still be reached.\n require(ownerCount - 1 >= _threshold);\n // Validate owner address corresponds to owner index.\n require(owners[prevOwner] == owner);\n owners[prevOwner] = owners[owner];\n owners[owner] = 0;\n ownerCount--;\n // Change threshold if threshold was changed.\n if (threshold != _threshold)\n changeThreshold(_threshold);\n }\n\n /// @dev Allows to swap/replace an owner from the Safe with another address.\n /// This can only be done via a Safe transaction.\n /// @param prevOwner Owner that pointed to the owner to be replaced in the linked list\n /// @param oldOwner Owner address to be replaced.\n /// @param newOwner New owner address.\n function swapOwner(address prevOwner, address oldOwner, address newOwner)\n public\n authorized\n {\n // Owner address cannot be null.\n require(newOwner != 0 && newOwner != SENTINEL_OWNERS);\n // No duplicate owners allowed.\n require(owners[newOwner] == 0);\n // Validate owner address corresponds to owner index.\n require(owners[prevOwner] == oldOwner);\n owners[newOwner] = owners[oldOwner];\n owners[prevOwner] = newOwner;\n owners[oldOwner] = 0;\n }\n\n /// @dev Allows to update the number of required confirmations by Safe owners.\n /// This can only be done via a Safe transaction.\n /// @param _threshold New threshold.\n function changeThreshold(uint8 _threshold)\n public\n authorized\n {\n // Validate that threshold is smaller than number of owners.\n require(_threshold <= ownerCount);\n // There has to be at least one Safe owner.\n require(_threshold >= 1);\n threshold = _threshold;\n }\n\n function getThreshold()\n public\n view\n returns (uint8)\n {\n return threshold;\n }\n\n function isOwner(address owner)\n public\n view\n returns (bool)\n {\n return owners[owner] != 0;\n }\n\n /// @dev Returns array of owners.\n /// @return Array of Safe owners.\n function getOwners()\n public\n view\n returns (address[])\n {\n address[] memory array = new address[](ownerCount);\n\n // populate return array\n uint256 index = 0;\n address currentOwner = owners[SENTINEL_OWNERS];\n while(currentOwner != SENTINEL_OWNERS) {\n array[index] = currentOwner;\n currentOwner = owners[currentOwner];\n index ++;\n }\n return array;\n }\n}\n", "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/OwnerManager.sol", "ast": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/OwnerManager.sol", "exportedSymbols": { "OwnerManager": [ - 1343 + 1472 ] }, - "id": 1344, + "id": 1473, "nodeType": "SourceUnit", "nodes": [ { - "id": 973, + "id": 1102, "literals": [ "solidity", "0.4", - ".23" + ".24" ], "nodeType": "PragmaDirective", - "src": "0:23:7" + "src": "0:23:9" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/SelfAuthorized.sol", "file": "./SelfAuthorized.sol", - "id": 974, + "id": 1103, "nodeType": "ImportDirective", - "scope": 1344, - "sourceUnit": 1360, - "src": "24:30:7", + "scope": 1473, + "sourceUnit": 1620, + "src": "24:30:9", "symbolAliases": [], "unitAlias": "" }, @@ -182,42 +182,42 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 975, + "id": 1104, "name": "SelfAuthorized", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1359, - "src": "265:14:7", + "referencedDeclaration": 1619, + "src": "265:14:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_SelfAuthorized_$1359", + "typeIdentifier": "t_contract$_SelfAuthorized_$1619", "typeString": "contract SelfAuthorized" } }, - "id": 976, + "id": 1105, "nodeType": "InheritanceSpecifier", - "src": "265:14:7" + "src": "265:14:9" } ], "contractDependencies": [ - 1359 + 1619 ], "contractKind": "contract", "documentation": "@title OwnerManager - Manages a set of owners and a threshold to perform actions.\n @author Stefan George - \n @author Richard Meissner - ", "fullyImplemented": true, - "id": 1343, + "id": 1472, "linearizedBaseContracts": [ - 1343, - 1359 + 1472, + 1619 ], "name": "OwnerManager", "nodeType": "ContractDefinition", "nodes": [ { "constant": true, - "id": 981, + "id": 1110, "name": "SENTINEL_OWNERS", "nodeType": "VariableDeclaration", - "scope": 1343, - "src": "287:54:7", + "scope": 1472, + "src": "287:54:9", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -225,10 +225,10 @@ "typeString": "address" }, "typeName": { - "id": 977, + "id": 1106, "name": "address", "nodeType": "ElementaryTypeName", - "src": "287:7:7", + "src": "287:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -240,14 +240,14 @@ { "argumentTypes": null, "hexValue": "307831", - "id": 979, + "id": 1108, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "337:3:7", + "src": "337:3:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -263,20 +263,20 @@ "typeString": "int_const 1" } ], - "id": 978, + "id": 1107, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "329:7:7", + "src": "329:7:9", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 980, + "id": 1109, "isConstant": false, "isLValue": false, "isPure": true, @@ -284,7 +284,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "329:12:7", + "src": "329:12:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -294,11 +294,11 @@ }, { "constant": false, - "id": 985, + "id": 1114, "name": "owners", "nodeType": "VariableDeclaration", - "scope": 1343, - "src": "348:43:7", + "scope": 1472, + "src": "348:43:9", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -306,28 +306,28 @@ "typeString": "mapping(address => address)" }, "typeName": { - "id": 984, + "id": 1113, "keyType": { - "id": 982, + "id": 1111, "name": "address", "nodeType": "ElementaryTypeName", - "src": "356:7:7", + "src": "356:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", - "src": "348:27:7", + "src": "348:27:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" }, "valueType": { - "id": 983, + "id": 1112, "name": "address", "nodeType": "ElementaryTypeName", - "src": "367:7:7", + "src": "367:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -339,11 +339,11 @@ }, { "constant": false, - "id": 987, + "id": 1116, "name": "ownerCount", "nodeType": "VariableDeclaration", - "scope": 1343, - "src": "397:18:7", + "scope": 1472, + "src": "397:18:9", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -351,10 +351,10 @@ "typeString": "uint256" }, "typeName": { - "id": 986, + "id": 1115, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "397:7:7", + "src": "397:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -365,11 +365,11 @@ }, { "constant": false, - "id": 989, + "id": 1118, "name": "threshold", "nodeType": "VariableDeclaration", - "scope": 1343, - "src": "421:24:7", + "scope": 1472, + "src": "421:24:9", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -377,10 +377,10 @@ "typeString": "uint8" }, "typeName": { - "id": 988, + "id": 1117, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "421:5:7", + "src": "421:5:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -391,9 +391,9 @@ }, { "body": { - "id": 1082, + "id": 1211, "nodeType": "Block", - "src": "720:946:7", + "src": "720:946:9", "statements": [ { "expression": { @@ -405,19 +405,19 @@ "typeIdentifier": "t_uint8", "typeString": "uint8" }, - "id": 1000, + "id": 1129, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 998, + "id": 1127, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 989, - "src": "862:9:7", + "referencedDeclaration": 1118, + "src": "862:9:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -428,14 +428,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 999, + "id": 1128, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "875:1:7", + "src": "875:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -443,7 +443,7 @@ }, "value": "0" }, - "src": "862:14:7", + "src": "862:14:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -457,21 +457,21 @@ "typeString": "bool" } ], - "id": 997, + "id": 1126, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "854:7:7", + "referencedDeclaration": 2601, + "src": "854:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1001, + "id": 1130, "isConstant": false, "isLValue": false, "isPure": false, @@ -479,15 +479,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "854:23:7", + "src": "854:23:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1002, + "id": 1131, "nodeType": "ExpressionStatement", - "src": "854:23:7" + "src": "854:23:9" }, { "expression": { @@ -499,19 +499,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1007, + "id": 1136, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1004, + "id": 1133, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 994, - "src": "970:10:7", + "referencedDeclaration": 1123, + "src": "970:10:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -523,18 +523,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1005, + "id": 1134, "name": "_owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 992, - "src": "984:7:7", + "referencedDeclaration": 1121, + "src": "984:7:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 1006, + "id": 1135, "isConstant": false, "isLValue": false, "isPure": false, @@ -542,13 +542,13 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "984:14:7", + "src": "984:14:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "970:28:7", + "src": "970:28:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -562,21 +562,21 @@ "typeString": "bool" } ], - "id": 1003, + "id": 1132, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "962:7:7", + "referencedDeclaration": 2601, + "src": "962:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1008, + "id": 1137, "isConstant": false, "isLValue": false, "isPure": false, @@ -584,15 +584,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "962:37:7", + "src": "962:37:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1009, + "id": 1138, "nodeType": "ExpressionStatement", - "src": "962:37:7" + "src": "962:37:9" }, { "expression": { @@ -604,19 +604,19 @@ "typeIdentifier": "t_uint8", "typeString": "uint8" }, - "id": 1013, + "id": 1142, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1011, + "id": 1140, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 994, - "src": "1069:10:7", + "referencedDeclaration": 1123, + "src": "1069:10:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -627,14 +627,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "31", - "id": 1012, + "id": 1141, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1083:1:7", + "src": "1083:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -642,7 +642,7 @@ }, "value": "1" }, - "src": "1069:15:7", + "src": "1069:15:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -656,21 +656,21 @@ "typeString": "bool" } ], - "id": 1010, + "id": 1139, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "1061:7:7", + "referencedDeclaration": 2601, + "src": "1061:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1014, + "id": 1143, "isConstant": false, "isLValue": false, "isPure": false, @@ -678,28 +678,28 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1061:24:7", + "src": "1061:24:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1015, + "id": 1144, "nodeType": "ExpressionStatement", - "src": "1061:24:7" + "src": "1061:24:9" }, { "assignments": [ - 1017 + 1146 ], "declarations": [ { "constant": false, - "id": 1017, + "id": 1146, "name": "currentOwner", "nodeType": "VariableDeclaration", - "scope": 1083, - "src": "1132:20:7", + "scope": 1212, + "src": "1132:20:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -707,10 +707,10 @@ "typeString": "address" }, "typeName": { - "id": 1016, + "id": 1145, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1132:7:7", + "src": "1132:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -720,41 +720,41 @@ "visibility": "internal" } ], - "id": 1019, + "id": 1148, "initialValue": { "argumentTypes": null, - "id": 1018, + "id": 1147, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 981, - "src": "1155:15:7", + "referencedDeclaration": 1110, + "src": "1155:15:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", - "src": "1132:38:7" + "src": "1132:38:9" }, { "body": { - "id": 1065, + "id": 1194, "nodeType": "Block", - "src": "1225:318:7", + "src": "1225:318:9", "statements": [ { "assignments": [ - 1032 + 1161 ], "declarations": [ { "constant": false, - "id": 1032, + "id": 1161, "name": "owner", "nodeType": "VariableDeclaration", - "scope": 1083, - "src": "1284:13:7", + "scope": 1212, + "src": "1284:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -762,10 +762,10 @@ "typeString": "address" }, "typeName": { - "id": 1031, + "id": 1160, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1284:7:7", + "src": "1284:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -775,31 +775,31 @@ "visibility": "internal" } ], - "id": 1036, + "id": 1165, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1033, + "id": 1162, "name": "_owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 992, - "src": "1300:7:7", + "referencedDeclaration": 1121, + "src": "1300:7:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 1035, + "id": 1164, "indexExpression": { "argumentTypes": null, - "id": 1034, + "id": 1163, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1021, - "src": "1308:1:7", + "referencedDeclaration": 1150, + "src": "1308:1:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -810,14 +810,14 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1300:10:7", + "src": "1300:10:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", - "src": "1284:26:7" + "src": "1284:26:9" }, { "expression": { @@ -829,7 +829,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 1044, + "id": 1173, "isConstant": false, "isLValue": false, "isPure": false, @@ -840,19 +840,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1040, + "id": 1169, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1038, + "id": 1167, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1032, - "src": "1332:5:7", + "referencedDeclaration": 1161, + "src": "1332:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -863,14 +863,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1039, + "id": 1168, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1341:1:7", + "src": "1341:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -878,7 +878,7 @@ }, "value": "0" }, - "src": "1332:10:7", + "src": "1332:10:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -892,19 +892,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1043, + "id": 1172, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1041, + "id": 1170, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1032, - "src": "1346:5:7", + "referencedDeclaration": 1161, + "src": "1346:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -914,24 +914,24 @@ "operator": "!=", "rightExpression": { "argumentTypes": null, - "id": 1042, + "id": 1171, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 981, - "src": "1355:15:7", + "referencedDeclaration": 1110, + "src": "1355:15:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "1346:24:7", + "src": "1346:24:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "1332:38:7", + "src": "1332:38:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -945,21 +945,21 @@ "typeString": "bool" } ], - "id": 1037, + "id": 1166, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "1324:7:7", + "referencedDeclaration": 2601, + "src": "1324:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1045, + "id": 1174, "isConstant": false, "isLValue": false, "isPure": false, @@ -967,15 +967,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1324:47:7", + "src": "1324:47:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1046, + "id": 1175, "nodeType": "ExpressionStatement", - "src": "1324:47:7" + "src": "1324:47:9" }, { "expression": { @@ -987,7 +987,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1052, + "id": 1181, "isConstant": false, "isLValue": false, "isPure": false, @@ -996,26 +996,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1048, + "id": 1177, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 985, - "src": "1437:6:7", + "referencedDeclaration": 1114, + "src": "1437:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1050, + "id": 1179, "indexExpression": { "argumentTypes": null, - "id": 1049, + "id": 1178, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1032, - "src": "1444:5:7", + "referencedDeclaration": 1161, + "src": "1444:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1026,7 +1026,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1437:13:7", + "src": "1437:13:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1037,14 +1037,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1051, + "id": 1180, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1454:1:7", + "src": "1454:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -1052,7 +1052,7 @@ }, "value": "0" }, - "src": "1437:18:7", + "src": "1437:18:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1066,21 +1066,21 @@ "typeString": "bool" } ], - "id": 1047, + "id": 1176, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "1429:7:7", + "referencedDeclaration": 2601, + "src": "1429:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1053, + "id": 1182, "isConstant": false, "isLValue": false, "isPure": false, @@ -1088,20 +1088,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1429:27:7", + "src": "1429:27:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1054, + "id": 1183, "nodeType": "ExpressionStatement", - "src": "1429:27:7" + "src": "1429:27:9" }, { "expression": { "argumentTypes": null, - "id": 1059, + "id": 1188, "isConstant": false, "isLValue": false, "isPure": false, @@ -1110,26 +1110,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1055, + "id": 1184, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 985, - "src": "1470:6:7", + "referencedDeclaration": 1114, + "src": "1470:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1057, + "id": 1186, "indexExpression": { "argumentTypes": null, - "id": 1056, + "id": 1185, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1017, - "src": "1477:12:7", + "referencedDeclaration": 1146, + "src": "1477:12:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1140,7 +1140,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1470:20:7", + "src": "1470:20:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1150,43 +1150,43 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1058, + "id": 1187, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1032, - "src": "1493:5:7", + "referencedDeclaration": 1161, + "src": "1493:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "1470:28:7", + "src": "1470:28:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1060, + "id": 1189, "nodeType": "ExpressionStatement", - "src": "1470:28:7" + "src": "1470:28:9" }, { "expression": { "argumentTypes": null, - "id": 1063, + "id": 1192, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1061, + "id": 1190, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1017, - "src": "1512:12:7", + "referencedDeclaration": 1146, + "src": "1512:12:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1196,26 +1196,26 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1062, + "id": 1191, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1032, - "src": "1527:5:7", + "referencedDeclaration": 1161, + "src": "1527:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "1512:20:7", + "src": "1512:20:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1064, + "id": 1193, "nodeType": "ExpressionStatement", - "src": "1512:20:7" + "src": "1512:20:9" } ] }, @@ -1225,19 +1225,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1027, + "id": 1156, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1024, + "id": 1153, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1021, - "src": "1200:1:7", + "referencedDeclaration": 1150, + "src": "1200:1:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1249,18 +1249,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1025, + "id": 1154, "name": "_owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 992, - "src": "1204:7:7", + "referencedDeclaration": 1121, + "src": "1204:7:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 1026, + "id": 1155, "isConstant": false, "isLValue": false, "isPure": false, @@ -1268,31 +1268,31 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1204:14:7", + "src": "1204:14:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1200:18:7", + "src": "1200:18:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 1066, + "id": 1195, "initializationExpression": { "assignments": [ - 1021 + 1150 ], "declarations": [ { "constant": false, - "id": 1021, + "id": 1150, "name": "i", "nodeType": "VariableDeclaration", - "scope": 1083, - "src": "1185:9:7", + "scope": 1212, + "src": "1185:9:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1300,10 +1300,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1020, + "id": 1149, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1185:7:7", + "src": "1185:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1313,18 +1313,18 @@ "visibility": "internal" } ], - "id": 1023, + "id": 1152, "initialValue": { "argumentTypes": null, "hexValue": "30", - "id": 1022, + "id": 1151, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1197:1:7", + "src": "1197:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -1333,12 +1333,12 @@ "value": "0" }, "nodeType": "VariableDeclarationStatement", - "src": "1185:13:7" + "src": "1185:13:9" }, "loopExpression": { "expression": { "argumentTypes": null, - "id": 1029, + "id": 1158, "isConstant": false, "isLValue": false, "isPure": false, @@ -1346,15 +1346,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "1220:3:7", + "src": "1220:3:9", "subExpression": { "argumentTypes": null, - "id": 1028, + "id": 1157, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1021, - "src": "1220:1:7", + "referencedDeclaration": 1150, + "src": "1220:1:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1365,17 +1365,17 @@ "typeString": "uint256" } }, - "id": 1030, + "id": 1159, "nodeType": "ExpressionStatement", - "src": "1220:3:7" + "src": "1220:3:9" }, "nodeType": "ForStatement", - "src": "1180:363:7" + "src": "1180:363:9" }, { "expression": { "argumentTypes": null, - "id": 1071, + "id": 1200, "isConstant": false, "isLValue": false, "isPure": false, @@ -1384,26 +1384,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1067, + "id": 1196, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 985, - "src": "1552:6:7", + "referencedDeclaration": 1114, + "src": "1552:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1069, + "id": 1198, "indexExpression": { "argumentTypes": null, - "id": 1068, + "id": 1197, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1017, - "src": "1559:12:7", + "referencedDeclaration": 1146, + "src": "1559:12:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1414,7 +1414,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1552:20:7", + "src": "1552:20:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1424,43 +1424,43 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1070, + "id": 1199, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 981, - "src": "1575:15:7", + "referencedDeclaration": 1110, + "src": "1575:15:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "1552:38:7", + "src": "1552:38:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1072, + "id": 1201, "nodeType": "ExpressionStatement", - "src": "1552:38:7" + "src": "1552:38:9" }, { "expression": { "argumentTypes": null, - "id": 1076, + "id": 1205, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1073, + "id": 1202, "name": "ownerCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 987, - "src": "1600:10:7", + "referencedDeclaration": 1116, + "src": "1600:10:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1472,18 +1472,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1074, + "id": 1203, "name": "_owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 992, - "src": "1613:7:7", + "referencedDeclaration": 1121, + "src": "1613:7:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 1075, + "id": 1204, "isConstant": false, "isLValue": false, "isPure": false, @@ -1491,38 +1491,38 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1613:14:7", + "src": "1613:14:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1600:27:7", + "src": "1600:27:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 1077, + "id": 1206, "nodeType": "ExpressionStatement", - "src": "1600:27:7" + "src": "1600:27:9" }, { "expression": { "argumentTypes": null, - "id": 1080, + "id": 1209, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1078, + "id": 1207, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 989, - "src": "1637:9:7", + "referencedDeclaration": 1118, + "src": "1637:9:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -1532,31 +1532,31 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1079, + "id": 1208, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 994, - "src": "1649:10:7", + "referencedDeclaration": 1123, + "src": "1649:10:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "src": "1637:22:7", + "src": "1637:22:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "id": 1081, + "id": 1210, "nodeType": "ExpressionStatement", - "src": "1637:22:7" + "src": "1637:22:9" } ] }, "documentation": "@dev Setup function sets initial storage of contract.\n @param _owners List of Safe owners.\n @param _threshold Number of required confirmations for a Safe transaction.", - "id": 1083, + "id": 1212, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -1564,16 +1564,16 @@ "name": "setupOwners", "nodeType": "FunctionDefinition", "parameters": { - "id": 995, + "id": 1124, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 992, + "id": 1121, "name": "_owners", "nodeType": "VariableDeclaration", - "scope": 1083, - "src": "662:17:7", + "scope": 1212, + "src": "662:17:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1582,19 +1582,19 @@ }, "typeName": { "baseType": { - "id": 990, + "id": 1119, "name": "address", "nodeType": "ElementaryTypeName", - "src": "662:7:7", + "src": "662:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 991, + "id": 1120, "length": null, "nodeType": "ArrayTypeName", - "src": "662:9:7", + "src": "662:9:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" @@ -1605,11 +1605,11 @@ }, { "constant": false, - "id": 994, + "id": 1123, "name": "_threshold", "nodeType": "VariableDeclaration", - "scope": 1083, - "src": "681:16:7", + "scope": 1212, + "src": "681:16:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1617,10 +1617,10 @@ "typeString": "uint8" }, "typeName": { - "id": 993, + "id": 1122, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "681:5:7", + "src": "681:5:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -1630,26 +1630,26 @@ "visibility": "internal" } ], - "src": "661:37:7" + "src": "661:37:9" }, "payable": false, "returnParameters": { - "id": 996, + "id": 1125, "nodeType": "ParameterList", "parameters": [], - "src": "720:0:7" + "src": "720:0:9" }, - "scope": 1343, - "src": "641:1025:7", + "scope": 1472, + "src": "641:1025:9", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 1135, + "id": 1264, "nodeType": "Block", - "src": "2008:426:7", + "src": "2008:426:9", "statements": [ { "expression": { @@ -1661,7 +1661,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 1099, + "id": 1228, "isConstant": false, "isLValue": false, "isPure": false, @@ -1672,19 +1672,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1095, + "id": 1224, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1093, + "id": 1222, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1085, - "src": "2067:5:7", + "referencedDeclaration": 1214, + "src": "2067:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1695,14 +1695,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1094, + "id": 1223, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2076:1:7", + "src": "2076:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -1710,7 +1710,7 @@ }, "value": "0" }, - "src": "2067:10:7", + "src": "2067:10:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1724,19 +1724,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1098, + "id": 1227, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1096, + "id": 1225, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1085, - "src": "2081:5:7", + "referencedDeclaration": 1214, + "src": "2081:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1746,24 +1746,24 @@ "operator": "!=", "rightExpression": { "argumentTypes": null, - "id": 1097, + "id": 1226, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 981, - "src": "2090:15:7", + "referencedDeclaration": 1110, + "src": "2090:15:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2081:24:7", + "src": "2081:24:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "2067:38:7", + "src": "2067:38:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1777,21 +1777,21 @@ "typeString": "bool" } ], - "id": 1092, + "id": 1221, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "2059:7:7", + "referencedDeclaration": 2601, + "src": "2059:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1100, + "id": 1229, "isConstant": false, "isLValue": false, "isPure": false, @@ -1799,15 +1799,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2059:47:7", + "src": "2059:47:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1101, + "id": 1230, "nodeType": "ExpressionStatement", - "src": "2059:47:7" + "src": "2059:47:9" }, { "expression": { @@ -1819,7 +1819,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1107, + "id": 1236, "isConstant": false, "isLValue": false, "isPure": false, @@ -1828,26 +1828,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1103, + "id": 1232, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 985, - "src": "2164:6:7", + "referencedDeclaration": 1114, + "src": "2164:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1105, + "id": 1234, "indexExpression": { "argumentTypes": null, - "id": 1104, + "id": 1233, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1085, - "src": "2171:5:7", + "referencedDeclaration": 1214, + "src": "2171:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1858,7 +1858,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2164:13:7", + "src": "2164:13:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1869,14 +1869,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1106, + "id": 1235, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2181:1:7", + "src": "2181:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -1884,7 +1884,7 @@ }, "value": "0" }, - "src": "2164:18:7", + "src": "2164:18:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1898,21 +1898,21 @@ "typeString": "bool" } ], - "id": 1102, + "id": 1231, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "2156:7:7", + "referencedDeclaration": 2601, + "src": "2156:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1108, + "id": 1237, "isConstant": false, "isLValue": false, "isPure": false, @@ -1920,20 +1920,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2156:27:7", + "src": "2156:27:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1109, + "id": 1238, "nodeType": "ExpressionStatement", - "src": "2156:27:7" + "src": "2156:27:9" }, { "expression": { "argumentTypes": null, - "id": 1116, + "id": 1245, "isConstant": false, "isLValue": false, "isPure": false, @@ -1942,26 +1942,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1110, + "id": 1239, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 985, - "src": "2193:6:7", + "referencedDeclaration": 1114, + "src": "2193:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1112, + "id": 1241, "indexExpression": { "argumentTypes": null, - "id": 1111, + "id": 1240, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1085, - "src": "2200:5:7", + "referencedDeclaration": 1214, + "src": "2200:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1972,7 +1972,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "2193:13:7", + "src": "2193:13:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1984,26 +1984,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1113, + "id": 1242, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 985, - "src": "2209:6:7", + "referencedDeclaration": 1114, + "src": "2209:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1115, + "id": 1244, "indexExpression": { "argumentTypes": null, - "id": 1114, + "id": 1243, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 981, - "src": "2216:15:7", + "referencedDeclaration": 1110, + "src": "2216:15:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2014,26 +2014,26 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2209:23:7", + "src": "2209:23:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2193:39:7", + "src": "2193:39:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1117, + "id": 1246, "nodeType": "ExpressionStatement", - "src": "2193:39:7" + "src": "2193:39:9" }, { "expression": { "argumentTypes": null, - "id": 1122, + "id": 1251, "isConstant": false, "isLValue": false, "isPure": false, @@ -2042,26 +2042,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1118, + "id": 1247, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 985, - "src": "2242:6:7", + "referencedDeclaration": 1114, + "src": "2242:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1120, + "id": 1249, "indexExpression": { "argumentTypes": null, - "id": 1119, + "id": 1248, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 981, - "src": "2249:15:7", + "referencedDeclaration": 1110, + "src": "2249:15:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2072,7 +2072,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "2242:23:7", + "src": "2242:23:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2082,31 +2082,31 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1121, + "id": 1250, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1085, - "src": "2268:5:7", + "referencedDeclaration": 1214, + "src": "2268:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2242:31:7", + "src": "2242:31:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1123, + "id": 1252, "nodeType": "ExpressionStatement", - "src": "2242:31:7" + "src": "2242:31:9" }, { "expression": { "argumentTypes": null, - "id": 1125, + "id": 1254, "isConstant": false, "isLValue": false, "isPure": false, @@ -2114,15 +2114,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "2283:12:7", + "src": "2283:12:9", "subExpression": { "argumentTypes": null, - "id": 1124, + "id": 1253, "name": "ownerCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 987, - "src": "2283:10:7", + "referencedDeclaration": 1116, + "src": "2283:10:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2133,9 +2133,9 @@ "typeString": "uint256" } }, - "id": 1126, + "id": 1255, "nodeType": "ExpressionStatement", - "src": "2283:12:7" + "src": "2283:12:9" }, { "condition": { @@ -2144,19 +2144,19 @@ "typeIdentifier": "t_uint8", "typeString": "uint8" }, - "id": 1129, + "id": 1258, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1127, + "id": 1256, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 989, - "src": "2363:9:7", + "referencedDeclaration": 1118, + "src": "2363:9:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -2166,39 +2166,39 @@ "operator": "!=", "rightExpression": { "argumentTypes": null, - "id": 1128, + "id": 1257, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1087, - "src": "2376:10:7", + "referencedDeclaration": 1216, + "src": "2376:10:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "src": "2363:23:7", + "src": "2363:23:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 1134, + "id": 1263, "nodeType": "IfStatement", - "src": "2359:68:7", + "src": "2359:68:9", "trueBody": { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 1131, + "id": 1260, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1087, - "src": "2416:10:7", + "referencedDeclaration": 1216, + "src": "2416:10:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -2212,18 +2212,18 @@ "typeString": "uint8" } ], - "id": 1130, + "id": 1259, "name": "changeThreshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1271, - "src": "2400:15:7", + "referencedDeclaration": 1400, + "src": "2400:15:9", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_uint8_$returns$__$", "typeString": "function (uint8)" } }, - "id": 1132, + "id": 1261, "isConstant": false, "isLValue": false, "isPure": false, @@ -2231,58 +2231,58 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2400:27:7", + "src": "2400:27:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1133, + "id": 1262, "nodeType": "ExpressionStatement", - "src": "2400:27:7" + "src": "2400:27:9" } } ] }, "documentation": "@dev Allows to add a new owner to the Safe and update the threshold at the same time.\n This can only be done via a Safe transaction.\n @param owner New owner address.\n @param _threshold New threshold.", - "id": 1136, + "id": 1265, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 1090, + "id": 1219, "modifierName": { "argumentTypes": null, - "id": 1089, + "id": 1218, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1358, - "src": "1993:10:7", + "referencedDeclaration": 1618, + "src": "1993:10:9", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "1993:10:7" + "src": "1993:10:9" } ], "name": "addOwnerWithThreshold", "nodeType": "FunctionDefinition", "parameters": { - "id": 1088, + "id": 1217, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1085, + "id": 1214, "name": "owner", "nodeType": "VariableDeclaration", - "scope": 1136, - "src": "1937:13:7", + "scope": 1265, + "src": "1937:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2290,10 +2290,10 @@ "typeString": "address" }, "typeName": { - "id": 1084, + "id": 1213, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1937:7:7", + "src": "1937:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2304,11 +2304,11 @@ }, { "constant": false, - "id": 1087, + "id": 1216, "name": "_threshold", "nodeType": "VariableDeclaration", - "scope": 1136, - "src": "1952:16:7", + "scope": 1265, + "src": "1952:16:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2316,10 +2316,10 @@ "typeString": "uint8" }, "typeName": { - "id": 1086, + "id": 1215, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "1952:5:7", + "src": "1952:5:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -2329,26 +2329,26 @@ "visibility": "internal" } ], - "src": "1936:33:7" + "src": "1936:33:9" }, "payable": false, "returnParameters": { - "id": 1091, + "id": 1220, "nodeType": "ParameterList", "parameters": [], - "src": "2008:0:7" + "src": "2008:0:9" }, - "scope": 1343, - "src": "1906:528:7", + "scope": 1472, + "src": "1906:528:9", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1188, + "id": 1317, "nodeType": "Block", - "src": "2887:462:7", + "src": "2887:462:9", "statements": [ { "expression": { @@ -2360,7 +2360,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1152, + "id": 1281, "isConstant": false, "isLValue": false, "isPure": false, @@ -2371,19 +2371,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1150, + "id": 1279, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1148, + "id": 1277, "name": "ownerCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 987, - "src": "2982:10:7", + "referencedDeclaration": 1116, + "src": "2982:10:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2394,14 +2394,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "31", - "id": 1149, + "id": 1278, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2995:1:7", + "src": "2995:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -2409,7 +2409,7 @@ }, "value": "1" }, - "src": "2982:14:7", + "src": "2982:14:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2419,18 +2419,18 @@ "operator": ">=", "rightExpression": { "argumentTypes": null, - "id": 1151, + "id": 1280, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1142, - "src": "3000:10:7", + "referencedDeclaration": 1271, + "src": "3000:10:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "src": "2982:28:7", + "src": "2982:28:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2444,21 +2444,21 @@ "typeString": "bool" } ], - "id": 1147, + "id": 1276, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "2974:7:7", + "referencedDeclaration": 2601, + "src": "2974:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1153, + "id": 1282, "isConstant": false, "isLValue": false, "isPure": false, @@ -2466,15 +2466,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2974:37:7", + "src": "2974:37:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1154, + "id": 1283, "nodeType": "ExpressionStatement", - "src": "2974:37:7" + "src": "2974:37:9" }, { "expression": { @@ -2486,7 +2486,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1160, + "id": 1289, "isConstant": false, "isLValue": false, "isPure": false, @@ -2495,26 +2495,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1156, + "id": 1285, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 985, - "src": "3091:6:7", + "referencedDeclaration": 1114, + "src": "3091:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1158, + "id": 1287, "indexExpression": { "argumentTypes": null, - "id": 1157, + "id": 1286, "name": "prevOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1138, - "src": "3098:9:7", + "referencedDeclaration": 1267, + "src": "3098:9:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2525,7 +2525,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3091:17:7", + "src": "3091:17:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2535,18 +2535,18 @@ "operator": "==", "rightExpression": { "argumentTypes": null, - "id": 1159, + "id": 1288, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1140, - "src": "3112:5:7", + "referencedDeclaration": 1269, + "src": "3112:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "3091:26:7", + "src": "3091:26:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2560,21 +2560,21 @@ "typeString": "bool" } ], - "id": 1155, + "id": 1284, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "3083:7:7", + "referencedDeclaration": 2601, + "src": "3083:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1161, + "id": 1290, "isConstant": false, "isLValue": false, "isPure": false, @@ -2582,20 +2582,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3083:35:7", + "src": "3083:35:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1162, + "id": 1291, "nodeType": "ExpressionStatement", - "src": "3083:35:7" + "src": "3083:35:9" }, { "expression": { "argumentTypes": null, - "id": 1169, + "id": 1298, "isConstant": false, "isLValue": false, "isPure": false, @@ -2604,26 +2604,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1163, + "id": 1292, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 985, - "src": "3128:6:7", + "referencedDeclaration": 1114, + "src": "3128:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1165, + "id": 1294, "indexExpression": { "argumentTypes": null, - "id": 1164, + "id": 1293, "name": "prevOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1138, - "src": "3135:9:7", + "referencedDeclaration": 1267, + "src": "3135:9:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2634,7 +2634,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "3128:17:7", + "src": "3128:17:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2646,26 +2646,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1166, + "id": 1295, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 985, - "src": "3148:6:7", + "referencedDeclaration": 1114, + "src": "3148:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1168, + "id": 1297, "indexExpression": { "argumentTypes": null, - "id": 1167, + "id": 1296, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1140, - "src": "3155:5:7", + "referencedDeclaration": 1269, + "src": "3155:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2676,26 +2676,26 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3148:13:7", + "src": "3148:13:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "3128:33:7", + "src": "3128:33:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1170, + "id": 1299, "nodeType": "ExpressionStatement", - "src": "3128:33:7" + "src": "3128:33:9" }, { "expression": { "argumentTypes": null, - "id": 1175, + "id": 1304, "isConstant": false, "isLValue": false, "isPure": false, @@ -2704,26 +2704,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1171, + "id": 1300, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 985, - "src": "3171:6:7", + "referencedDeclaration": 1114, + "src": "3171:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1173, + "id": 1302, "indexExpression": { "argumentTypes": null, - "id": 1172, + "id": 1301, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1140, - "src": "3178:5:7", + "referencedDeclaration": 1269, + "src": "3178:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2734,7 +2734,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "3171:13:7", + "src": "3171:13:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2745,14 +2745,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "30", - "id": 1174, + "id": 1303, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3187:1:7", + "src": "3187:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -2760,20 +2760,20 @@ }, "value": "0" }, - "src": "3171:17:7", + "src": "3171:17:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1176, + "id": 1305, "nodeType": "ExpressionStatement", - "src": "3171:17:7" + "src": "3171:17:9" }, { "expression": { "argumentTypes": null, - "id": 1178, + "id": 1307, "isConstant": false, "isLValue": false, "isPure": false, @@ -2781,15 +2781,15 @@ "nodeType": "UnaryOperation", "operator": "--", "prefix": false, - "src": "3198:12:7", + "src": "3198:12:9", "subExpression": { "argumentTypes": null, - "id": 1177, + "id": 1306, "name": "ownerCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 987, - "src": "3198:10:7", + "referencedDeclaration": 1116, + "src": "3198:10:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2800,9 +2800,9 @@ "typeString": "uint256" } }, - "id": 1179, + "id": 1308, "nodeType": "ExpressionStatement", - "src": "3198:12:7" + "src": "3198:12:9" }, { "condition": { @@ -2811,19 +2811,19 @@ "typeIdentifier": "t_uint8", "typeString": "uint8" }, - "id": 1182, + "id": 1311, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1180, + "id": 1309, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 989, - "src": "3278:9:7", + "referencedDeclaration": 1118, + "src": "3278:9:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -2833,39 +2833,39 @@ "operator": "!=", "rightExpression": { "argumentTypes": null, - "id": 1181, + "id": 1310, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1142, - "src": "3291:10:7", + "referencedDeclaration": 1271, + "src": "3291:10:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "src": "3278:23:7", + "src": "3278:23:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 1187, + "id": 1316, "nodeType": "IfStatement", - "src": "3274:68:7", + "src": "3274:68:9", "trueBody": { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 1184, + "id": 1313, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1142, - "src": "3331:10:7", + "referencedDeclaration": 1271, + "src": "3331:10:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -2879,18 +2879,18 @@ "typeString": "uint8" } ], - "id": 1183, + "id": 1312, "name": "changeThreshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1271, - "src": "3315:15:7", + "referencedDeclaration": 1400, + "src": "3315:15:9", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_uint8_$returns$__$", "typeString": "function (uint8)" } }, - "id": 1185, + "id": 1314, "isConstant": false, "isLValue": false, "isPure": false, @@ -2898,58 +2898,58 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3315:27:7", + "src": "3315:27:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1186, + "id": 1315, "nodeType": "ExpressionStatement", - "src": "3315:27:7" + "src": "3315:27:9" } } ] }, "documentation": "@dev Allows to remove an owner from the Safe and update the threshold at the same time.\n This can only be done via a Safe transaction.\n @param prevOwner Owner that pointed to the owner to be removed in the linked list\n @param owner Owner address to be removed.\n @param _threshold New threshold.", - "id": 1189, + "id": 1318, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 1145, + "id": 1274, "modifierName": { "argumentTypes": null, - "id": 1144, + "id": 1273, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1358, - "src": "2872:10:7", + "referencedDeclaration": 1618, + "src": "2872:10:9", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "2872:10:7" + "src": "2872:10:9" } ], "name": "removeOwner", "nodeType": "FunctionDefinition", "parameters": { - "id": 1143, + "id": 1272, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1138, + "id": 1267, "name": "prevOwner", "nodeType": "VariableDeclaration", - "scope": 1189, - "src": "2797:17:7", + "scope": 1318, + "src": "2797:17:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2957,10 +2957,10 @@ "typeString": "address" }, "typeName": { - "id": 1137, + "id": 1266, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2797:7:7", + "src": "2797:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2971,11 +2971,11 @@ }, { "constant": false, - "id": 1140, + "id": 1269, "name": "owner", "nodeType": "VariableDeclaration", - "scope": 1189, - "src": "2816:13:7", + "scope": 1318, + "src": "2816:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2983,10 +2983,10 @@ "typeString": "address" }, "typeName": { - "id": 1139, + "id": 1268, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2816:7:7", + "src": "2816:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2997,11 +2997,11 @@ }, { "constant": false, - "id": 1142, + "id": 1271, "name": "_threshold", "nodeType": "VariableDeclaration", - "scope": 1189, - "src": "2831:16:7", + "scope": 1318, + "src": "2831:16:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3009,10 +3009,10 @@ "typeString": "uint8" }, "typeName": { - "id": 1141, + "id": 1270, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "2831:5:7", + "src": "2831:5:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -3022,26 +3022,26 @@ "visibility": "internal" } ], - "src": "2796:52:7" + "src": "2796:52:9" }, "payable": false, "returnParameters": { - "id": 1146, + "id": 1275, "nodeType": "ParameterList", "parameters": [], - "src": "2887:0:7" + "src": "2887:0:9" }, - "scope": 1343, - "src": "2776:573:7", + "scope": 1472, + "src": "2776:573:9", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1246, + "id": 1375, "nodeType": "Block", - "src": "3795:414:7", + "src": "3795:414:9", "statements": [ { "expression": { @@ -3053,7 +3053,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 1207, + "id": 1336, "isConstant": false, "isLValue": false, "isPure": false, @@ -3064,19 +3064,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1203, + "id": 1332, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1201, + "id": 1330, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1195, - "src": "3854:8:7", + "referencedDeclaration": 1324, + "src": "3854:8:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3087,14 +3087,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1202, + "id": 1331, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3866:1:7", + "src": "3866:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -3102,7 +3102,7 @@ }, "value": "0" }, - "src": "3854:13:7", + "src": "3854:13:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3116,19 +3116,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1206, + "id": 1335, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1204, + "id": 1333, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1195, - "src": "3871:8:7", + "referencedDeclaration": 1324, + "src": "3871:8:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3138,24 +3138,24 @@ "operator": "!=", "rightExpression": { "argumentTypes": null, - "id": 1205, + "id": 1334, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 981, - "src": "3883:15:7", + "referencedDeclaration": 1110, + "src": "3883:15:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "3871:27:7", + "src": "3871:27:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "3854:44:7", + "src": "3854:44:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3169,21 +3169,21 @@ "typeString": "bool" } ], - "id": 1200, + "id": 1329, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "3846:7:7", + "referencedDeclaration": 2601, + "src": "3846:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1208, + "id": 1337, "isConstant": false, "isLValue": false, "isPure": false, @@ -3191,15 +3191,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3846:53:7", + "src": "3846:53:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1209, + "id": 1338, "nodeType": "ExpressionStatement", - "src": "3846:53:7" + "src": "3846:53:9" }, { "expression": { @@ -3211,7 +3211,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1215, + "id": 1344, "isConstant": false, "isLValue": false, "isPure": false, @@ -3220,26 +3220,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1211, + "id": 1340, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 985, - "src": "3957:6:7", + "referencedDeclaration": 1114, + "src": "3957:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1213, + "id": 1342, "indexExpression": { "argumentTypes": null, - "id": 1212, + "id": 1341, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1195, - "src": "3964:8:7", + "referencedDeclaration": 1324, + "src": "3964:8:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3250,7 +3250,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3957:16:7", + "src": "3957:16:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3261,14 +3261,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1214, + "id": 1343, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3977:1:7", + "src": "3977:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -3276,7 +3276,7 @@ }, "value": "0" }, - "src": "3957:21:7", + "src": "3957:21:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3290,21 +3290,21 @@ "typeString": "bool" } ], - "id": 1210, + "id": 1339, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "3949:7:7", + "referencedDeclaration": 2601, + "src": "3949:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1216, + "id": 1345, "isConstant": false, "isLValue": false, "isPure": false, @@ -3312,15 +3312,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3949:30:7", + "src": "3949:30:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1217, + "id": 1346, "nodeType": "ExpressionStatement", - "src": "3949:30:7" + "src": "3949:30:9" }, { "expression": { @@ -3332,7 +3332,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1223, + "id": 1352, "isConstant": false, "isLValue": false, "isPure": false, @@ -3341,26 +3341,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1219, + "id": 1348, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 985, - "src": "4059:6:7", + "referencedDeclaration": 1114, + "src": "4059:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1221, + "id": 1350, "indexExpression": { "argumentTypes": null, - "id": 1220, + "id": 1349, "name": "prevOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1191, - "src": "4066:9:7", + "referencedDeclaration": 1320, + "src": "4066:9:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3371,7 +3371,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4059:17:7", + "src": "4059:17:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3381,18 +3381,18 @@ "operator": "==", "rightExpression": { "argumentTypes": null, - "id": 1222, + "id": 1351, "name": "oldOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1193, - "src": "4080:8:7", + "referencedDeclaration": 1322, + "src": "4080:8:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "4059:29:7", + "src": "4059:29:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3406,21 +3406,21 @@ "typeString": "bool" } ], - "id": 1218, + "id": 1347, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "4051:7:7", + "referencedDeclaration": 2601, + "src": "4051:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1224, + "id": 1353, "isConstant": false, "isLValue": false, "isPure": false, @@ -3428,20 +3428,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4051:38:7", + "src": "4051:38:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1225, + "id": 1354, "nodeType": "ExpressionStatement", - "src": "4051:38:7" + "src": "4051:38:9" }, { "expression": { "argumentTypes": null, - "id": 1232, + "id": 1361, "isConstant": false, "isLValue": false, "isPure": false, @@ -3450,26 +3450,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1226, + "id": 1355, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 985, - "src": "4099:6:7", + "referencedDeclaration": 1114, + "src": "4099:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1228, + "id": 1357, "indexExpression": { "argumentTypes": null, - "id": 1227, + "id": 1356, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1195, - "src": "4106:8:7", + "referencedDeclaration": 1324, + "src": "4106:8:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3480,7 +3480,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "4099:16:7", + "src": "4099:16:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3492,26 +3492,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1229, + "id": 1358, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 985, - "src": "4118:6:7", + "referencedDeclaration": 1114, + "src": "4118:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1231, + "id": 1360, "indexExpression": { "argumentTypes": null, - "id": 1230, + "id": 1359, "name": "oldOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1193, - "src": "4125:8:7", + "referencedDeclaration": 1322, + "src": "4125:8:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3522,26 +3522,26 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4118:16:7", + "src": "4118:16:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "4099:35:7", + "src": "4099:35:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1233, + "id": 1362, "nodeType": "ExpressionStatement", - "src": "4099:35:7" + "src": "4099:35:9" }, { "expression": { "argumentTypes": null, - "id": 1238, + "id": 1367, "isConstant": false, "isLValue": false, "isPure": false, @@ -3550,26 +3550,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1234, + "id": 1363, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 985, - "src": "4144:6:7", + "referencedDeclaration": 1114, + "src": "4144:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1236, + "id": 1365, "indexExpression": { "argumentTypes": null, - "id": 1235, + "id": 1364, "name": "prevOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1191, - "src": "4151:9:7", + "referencedDeclaration": 1320, + "src": "4151:9:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3580,7 +3580,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "4144:17:7", + "src": "4144:17:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3590,31 +3590,31 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1237, + "id": 1366, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1195, - "src": "4164:8:7", + "referencedDeclaration": 1324, + "src": "4164:8:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "4144:28:7", + "src": "4144:28:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1239, + "id": 1368, "nodeType": "ExpressionStatement", - "src": "4144:28:7" + "src": "4144:28:9" }, { "expression": { "argumentTypes": null, - "id": 1244, + "id": 1373, "isConstant": false, "isLValue": false, "isPure": false, @@ -3623,26 +3623,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1240, + "id": 1369, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 985, - "src": "4182:6:7", + "referencedDeclaration": 1114, + "src": "4182:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1242, + "id": 1371, "indexExpression": { "argumentTypes": null, - "id": 1241, + "id": 1370, "name": "oldOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1193, - "src": "4189:8:7", + "referencedDeclaration": 1322, + "src": "4189:8:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3653,7 +3653,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "4182:16:7", + "src": "4182:16:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3664,14 +3664,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "30", - "id": 1243, + "id": 1372, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4201:1:7", + "src": "4201:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -3679,57 +3679,57 @@ }, "value": "0" }, - "src": "4182:20:7", + "src": "4182:20:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1245, + "id": 1374, "nodeType": "ExpressionStatement", - "src": "4182:20:7" + "src": "4182:20:9" } ] }, "documentation": "@dev Allows to swap/replace an owner from the Safe with another address.\n This can only be done via a Safe transaction.\n @param prevOwner Owner that pointed to the owner to be replaced in the linked list\n @param oldOwner Owner address to be replaced.\n @param newOwner New owner address.", - "id": 1247, + "id": 1376, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 1198, + "id": 1327, "modifierName": { "argumentTypes": null, - "id": 1197, + "id": 1326, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1358, - "src": "3780:10:7", + "referencedDeclaration": 1618, + "src": "3780:10:9", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "3780:10:7" + "src": "3780:10:9" } ], "name": "swapOwner", "nodeType": "FunctionDefinition", "parameters": { - "id": 1196, + "id": 1325, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1191, + "id": 1320, "name": "prevOwner", "nodeType": "VariableDeclaration", - "scope": 1247, - "src": "3702:17:7", + "scope": 1376, + "src": "3702:17:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3737,10 +3737,10 @@ "typeString": "address" }, "typeName": { - "id": 1190, + "id": 1319, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3702:7:7", + "src": "3702:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3751,11 +3751,11 @@ }, { "constant": false, - "id": 1193, + "id": 1322, "name": "oldOwner", "nodeType": "VariableDeclaration", - "scope": 1247, - "src": "3721:16:7", + "scope": 1376, + "src": "3721:16:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3763,10 +3763,10 @@ "typeString": "address" }, "typeName": { - "id": 1192, + "id": 1321, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3721:7:7", + "src": "3721:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3777,11 +3777,11 @@ }, { "constant": false, - "id": 1195, + "id": 1324, "name": "newOwner", "nodeType": "VariableDeclaration", - "scope": 1247, - "src": "3739:16:7", + "scope": 1376, + "src": "3739:16:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3789,10 +3789,10 @@ "typeString": "address" }, "typeName": { - "id": 1194, + "id": 1323, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3739:7:7", + "src": "3739:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3802,26 +3802,26 @@ "visibility": "internal" } ], - "src": "3701:55:7" + "src": "3701:55:9" }, "payable": false, "returnParameters": { - "id": 1199, + "id": 1328, "nodeType": "ParameterList", "parameters": [], - "src": "3795:0:7" + "src": "3795:0:9" }, - "scope": 1343, - "src": "3683:526:7", + "scope": 1472, + "src": "3683:526:9", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1270, + "id": 1399, "nodeType": "Block", - "src": "4479:237:7", + "src": "4479:237:9", "statements": [ { "expression": { @@ -3833,19 +3833,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1257, + "id": 1386, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1255, + "id": 1384, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1249, - "src": "4566:10:7", + "referencedDeclaration": 1378, + "src": "4566:10:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -3855,18 +3855,18 @@ "operator": "<=", "rightExpression": { "argumentTypes": null, - "id": 1256, + "id": 1385, "name": "ownerCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 987, - "src": "4580:10:7", + "referencedDeclaration": 1116, + "src": "4580:10:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4566:24:7", + "src": "4566:24:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3880,21 +3880,21 @@ "typeString": "bool" } ], - "id": 1254, + "id": 1383, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "4558:7:7", + "referencedDeclaration": 2601, + "src": "4558:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1258, + "id": 1387, "isConstant": false, "isLValue": false, "isPure": false, @@ -3902,15 +3902,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4558:33:7", + "src": "4558:33:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1259, + "id": 1388, "nodeType": "ExpressionStatement", - "src": "4558:33:7" + "src": "4558:33:9" }, { "expression": { @@ -3922,19 +3922,19 @@ "typeIdentifier": "t_uint8", "typeString": "uint8" }, - "id": 1263, + "id": 1392, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1261, + "id": 1390, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1249, - "src": "4661:10:7", + "referencedDeclaration": 1378, + "src": "4661:10:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -3945,14 +3945,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "31", - "id": 1262, + "id": 1391, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4675:1:7", + "src": "4675:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -3960,7 +3960,7 @@ }, "value": "1" }, - "src": "4661:15:7", + "src": "4661:15:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3974,21 +3974,21 @@ "typeString": "bool" } ], - "id": 1260, + "id": 1389, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "4653:7:7", + "referencedDeclaration": 2601, + "src": "4653:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1264, + "id": 1393, "isConstant": false, "isLValue": false, "isPure": false, @@ -3996,32 +3996,32 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4653:24:7", + "src": "4653:24:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1265, + "id": 1394, "nodeType": "ExpressionStatement", - "src": "4653:24:7" + "src": "4653:24:9" }, { "expression": { "argumentTypes": null, - "id": 1268, + "id": 1397, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1266, + "id": 1395, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 989, - "src": "4687:9:7", + "referencedDeclaration": 1118, + "src": "4687:9:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -4031,68 +4031,68 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1267, + "id": 1396, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1249, - "src": "4699:10:7", + "referencedDeclaration": 1378, + "src": "4699:10:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "src": "4687:22:7", + "src": "4687:22:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "id": 1269, + "id": 1398, "nodeType": "ExpressionStatement", - "src": "4687:22:7" + "src": "4687:22:9" } ] }, "documentation": "@dev Allows to update the number of required confirmations by Safe owners.\n This can only be done via a Safe transaction.\n @param _threshold New threshold.", - "id": 1271, + "id": 1400, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 1252, + "id": 1381, "modifierName": { "argumentTypes": null, - "id": 1251, + "id": 1380, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1358, - "src": "4464:10:7", + "referencedDeclaration": 1618, + "src": "4464:10:9", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "4464:10:7" + "src": "4464:10:9" } ], "name": "changeThreshold", "nodeType": "FunctionDefinition", "parameters": { - "id": 1250, + "id": 1379, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1249, + "id": 1378, "name": "_threshold", "nodeType": "VariableDeclaration", - "scope": 1271, - "src": "4423:16:7", + "scope": 1400, + "src": "4423:16:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4100,10 +4100,10 @@ "typeString": "uint8" }, "typeName": { - "id": 1248, + "id": 1377, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "4423:5:7", + "src": "4423:5:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -4113,50 +4113,50 @@ "visibility": "internal" } ], - "src": "4422:18:7" + "src": "4422:18:9" }, "payable": false, "returnParameters": { - "id": 1253, + "id": 1382, "nodeType": "ParameterList", "parameters": [], - "src": "4479:0:7" + "src": "4479:0:9" }, - "scope": 1343, - "src": "4398:318:7", + "scope": 1472, + "src": "4398:318:9", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1278, + "id": 1407, "nodeType": "Block", - "src": "4802:33:7", + "src": "4802:33:9", "statements": [ { "expression": { "argumentTypes": null, - "id": 1276, + "id": 1405, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 989, - "src": "4819:9:7", + "referencedDeclaration": 1118, + "src": "4819:9:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "functionReturnParameters": 1275, - "id": 1277, + "functionReturnParameters": 1404, + "id": 1406, "nodeType": "Return", - "src": "4812:16:7" + "src": "4812:16:9" } ] }, "documentation": null, - "id": 1279, + "id": 1408, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -4164,23 +4164,23 @@ "name": "getThreshold", "nodeType": "FunctionDefinition", "parameters": { - "id": 1272, + "id": 1401, "nodeType": "ParameterList", "parameters": [], - "src": "4743:2:7" + "src": "4743:2:9" }, "payable": false, "returnParameters": { - "id": 1275, + "id": 1404, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1274, + "id": 1403, "name": "", "nodeType": "VariableDeclaration", - "scope": 1279, - "src": "4791:5:7", + "scope": 1408, + "src": "4791:5:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4188,10 +4188,10 @@ "typeString": "uint8" }, "typeName": { - "id": 1273, + "id": 1402, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "4791:5:7", + "src": "4791:5:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -4201,19 +4201,19 @@ "visibility": "internal" } ], - "src": "4790:7:7" + "src": "4790:7:9" }, - "scope": 1343, - "src": "4722:113:7", + "scope": 1472, + "src": "4722:113:9", "stateMutability": "view", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1292, + "id": 1421, "nodeType": "Block", - "src": "4928:42:7", + "src": "4928:42:9", "statements": [ { "expression": { @@ -4222,7 +4222,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1290, + "id": 1419, "isConstant": false, "isLValue": false, "isPure": false, @@ -4231,26 +4231,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1286, + "id": 1415, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 985, - "src": "4945:6:7", + "referencedDeclaration": 1114, + "src": "4945:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1288, + "id": 1417, "indexExpression": { "argumentTypes": null, - "id": 1287, + "id": 1416, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1281, - "src": "4952:5:7", + "referencedDeclaration": 1410, + "src": "4952:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4261,7 +4261,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4945:13:7", + "src": "4945:13:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4272,14 +4272,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1289, + "id": 1418, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4962:1:7", + "src": "4962:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -4287,21 +4287,21 @@ }, "value": "0" }, - "src": "4945:18:7", + "src": "4945:18:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "functionReturnParameters": 1285, - "id": 1291, + "functionReturnParameters": 1414, + "id": 1420, "nodeType": "Return", - "src": "4938:25:7" + "src": "4938:25:9" } ] }, "documentation": null, - "id": 1293, + "id": 1422, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -4309,16 +4309,16 @@ "name": "isOwner", "nodeType": "FunctionDefinition", "parameters": { - "id": 1282, + "id": 1411, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1281, + "id": 1410, "name": "owner", "nodeType": "VariableDeclaration", - "scope": 1293, - "src": "4858:13:7", + "scope": 1422, + "src": "4858:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4326,10 +4326,10 @@ "typeString": "address" }, "typeName": { - "id": 1280, + "id": 1409, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4858:7:7", + "src": "4858:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4339,20 +4339,20 @@ "visibility": "internal" } ], - "src": "4857:15:7" + "src": "4857:15:9" }, "payable": false, "returnParameters": { - "id": 1285, + "id": 1414, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1284, + "id": 1413, "name": "", "nodeType": "VariableDeclaration", - "scope": 1293, - "src": "4918:4:7", + "scope": 1422, + "src": "4918:4:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4360,10 +4360,10 @@ "typeString": "bool" }, "typeName": { - "id": 1283, + "id": 1412, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "4918:4:7", + "src": "4918:4:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4373,32 +4373,32 @@ "visibility": "internal" } ], - "src": "4917:6:7" + "src": "4917:6:9" }, - "scope": 1343, - "src": "4841:129:7", + "scope": 1472, + "src": "4841:129:9", "stateMutability": "view", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1341, + "id": 1470, "nodeType": "Block", - "src": "5133:377:7", + "src": "5133:377:9", "statements": [ { "assignments": [ - 1302 + 1431 ], "declarations": [ { "constant": false, - "id": 1302, + "id": 1431, "name": "array", "nodeType": "VariableDeclaration", - "scope": 1342, - "src": "5143:22:7", + "scope": 1471, + "src": "5143:22:9", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -4407,19 +4407,19 @@ }, "typeName": { "baseType": { - "id": 1300, + "id": 1429, "name": "address", "nodeType": "ElementaryTypeName", - "src": "5143:7:7", + "src": "5143:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1301, + "id": 1430, "length": null, "nodeType": "ArrayTypeName", - "src": "5143:9:7", + "src": "5143:9:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" @@ -4429,18 +4429,18 @@ "visibility": "internal" } ], - "id": 1308, + "id": 1437, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 1306, + "id": 1435, "name": "ownerCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 987, - "src": "5182:10:7", + "referencedDeclaration": 1116, + "src": "5182:10:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4454,39 +4454,39 @@ "typeString": "uint256" } ], - "id": 1305, + "id": 1434, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "NewExpression", - "src": "5168:13:7", + "src": "5168:13:9", "typeDescriptions": { "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_$", "typeString": "function (uint256) pure returns (address[] memory)" }, "typeName": { "baseType": { - "id": 1303, + "id": 1432, "name": "address", "nodeType": "ElementaryTypeName", - "src": "5172:7:7", + "src": "5172:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1304, + "id": 1433, "length": null, "nodeType": "ArrayTypeName", - "src": "5172:9:7", + "src": "5172:9:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" } } }, - "id": 1307, + "id": 1436, "isConstant": false, "isLValue": false, "isPure": false, @@ -4494,27 +4494,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5168:25:7", + "src": "5168:25:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory", "typeString": "address[] memory" } }, "nodeType": "VariableDeclarationStatement", - "src": "5143:50:7" + "src": "5143:50:9" }, { "assignments": [ - 1310 + 1439 ], "declarations": [ { "constant": false, - "id": 1310, + "id": 1439, "name": "index", "nodeType": "VariableDeclaration", - "scope": 1342, - "src": "5237:13:7", + "scope": 1471, + "src": "5237:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4522,10 +4522,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1309, + "id": 1438, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "5237:7:7", + "src": "5237:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4535,18 +4535,18 @@ "visibility": "internal" } ], - "id": 1312, + "id": 1441, "initialValue": { "argumentTypes": null, "hexValue": "30", - "id": 1311, + "id": 1440, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "5253:1:7", + "src": "5253:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -4555,20 +4555,20 @@ "value": "0" }, "nodeType": "VariableDeclarationStatement", - "src": "5237:17:7" + "src": "5237:17:9" }, { "assignments": [ - 1314 + 1443 ], "declarations": [ { "constant": false, - "id": 1314, + "id": 1443, "name": "currentOwner", "nodeType": "VariableDeclaration", - "scope": 1342, - "src": "5264:20:7", + "scope": 1471, + "src": "5264:20:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4576,10 +4576,10 @@ "typeString": "address" }, "typeName": { - "id": 1313, + "id": 1442, "name": "address", "nodeType": "ElementaryTypeName", - "src": "5264:7:7", + "src": "5264:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4589,31 +4589,31 @@ "visibility": "internal" } ], - "id": 1318, + "id": 1447, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1315, + "id": 1444, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 985, - "src": "5287:6:7", + "referencedDeclaration": 1114, + "src": "5287:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1317, + "id": 1446, "indexExpression": { "argumentTypes": null, - "id": 1316, + "id": 1445, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 981, - "src": "5294:15:7", + "referencedDeclaration": 1110, + "src": "5294:15:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4624,25 +4624,25 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "5287:23:7", + "src": "5287:23:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", - "src": "5264:46:7" + "src": "5264:46:9" }, { "body": { - "id": 1337, + "id": 1466, "nodeType": "Block", - "src": "5359:123:7", + "src": "5359:123:9", "statements": [ { "expression": { "argumentTypes": null, - "id": 1326, + "id": 1455, "isConstant": false, "isLValue": false, "isPure": false, @@ -4651,26 +4651,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1322, + "id": 1451, "name": "array", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1302, - "src": "5373:5:7", + "referencedDeclaration": 1431, + "src": "5373:5:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 1324, + "id": 1453, "indexExpression": { "argumentTypes": null, - "id": 1323, + "id": 1452, "name": "index", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1310, - "src": "5379:5:7", + "referencedDeclaration": 1439, + "src": "5379:5:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4681,7 +4681,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "5373:12:7", + "src": "5373:12:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4691,43 +4691,43 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1325, + "id": 1454, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1314, - "src": "5388:12:7", + "referencedDeclaration": 1443, + "src": "5388:12:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "5373:27:7", + "src": "5373:27:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1327, + "id": 1456, "nodeType": "ExpressionStatement", - "src": "5373:27:7" + "src": "5373:27:9" }, { "expression": { "argumentTypes": null, - "id": 1332, + "id": 1461, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1328, + "id": 1457, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1314, - "src": "5414:12:7", + "referencedDeclaration": 1443, + "src": "5414:12:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4739,26 +4739,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1329, + "id": 1458, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 985, - "src": "5429:6:7", + "referencedDeclaration": 1114, + "src": "5429:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1331, + "id": 1460, "indexExpression": { "argumentTypes": null, - "id": 1330, + "id": 1459, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1314, - "src": "5436:12:7", + "referencedDeclaration": 1443, + "src": "5436:12:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4769,26 +4769,26 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "5429:20:7", + "src": "5429:20:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "5414:35:7", + "src": "5414:35:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1333, + "id": 1462, "nodeType": "ExpressionStatement", - "src": "5414:35:7" + "src": "5414:35:9" }, { "expression": { "argumentTypes": null, - "id": 1335, + "id": 1464, "isConstant": false, "isLValue": false, "isPure": false, @@ -4796,15 +4796,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "5463:8:7", + "src": "5463:8:9", "subExpression": { "argumentTypes": null, - "id": 1334, + "id": 1463, "name": "index", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1310, - "src": "5463:5:7", + "referencedDeclaration": 1439, + "src": "5463:5:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4815,9 +4815,9 @@ "typeString": "uint256" } }, - "id": 1336, + "id": 1465, "nodeType": "ExpressionStatement", - "src": "5463:8:7" + "src": "5463:8:9" } ] }, @@ -4827,19 +4827,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1321, + "id": 1450, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1319, + "id": 1448, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1314, - "src": "5326:12:7", + "referencedDeclaration": 1443, + "src": "5326:12:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4849,50 +4849,50 @@ "operator": "!=", "rightExpression": { "argumentTypes": null, - "id": 1320, + "id": 1449, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 981, - "src": "5342:15:7", + "referencedDeclaration": 1110, + "src": "5342:15:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "5326:31:7", + "src": "5326:31:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 1338, + "id": 1467, "nodeType": "WhileStatement", - "src": "5320:162:7" + "src": "5320:162:9" }, { "expression": { "argumentTypes": null, - "id": 1339, + "id": 1468, "name": "array", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1302, - "src": "5498:5:7", + "referencedDeclaration": 1431, + "src": "5498:5:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "functionReturnParameters": 1298, - "id": 1340, + "functionReturnParameters": 1427, + "id": 1469, "nodeType": "Return", - "src": "5491:12:7" + "src": "5491:12:9" } ] }, "documentation": "@dev Returns array of owners.\n @return Array of Safe owners.", - "id": 1342, + "id": 1471, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -4900,23 +4900,23 @@ "name": "getOwners", "nodeType": "FunctionDefinition", "parameters": { - "id": 1294, + "id": 1423, "nodeType": "ParameterList", "parameters": [], - "src": "5070:2:7" + "src": "5070:2:9" }, "payable": false, "returnParameters": { - "id": 1298, + "id": 1427, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1297, + "id": 1426, "name": "", "nodeType": "VariableDeclaration", - "scope": 1342, - "src": "5118:9:7", + "scope": 1471, + "src": "5118:9:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4925,19 +4925,19 @@ }, "typeName": { "baseType": { - "id": 1295, + "id": 1424, "name": "address", "nodeType": "ElementaryTypeName", - "src": "5118:7:7", + "src": "5118:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1296, + "id": 1425, "length": null, "nodeType": "ArrayTypeName", - "src": "5118:9:7", + "src": "5118:9:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" @@ -4947,49 +4947,49 @@ "visibility": "internal" } ], - "src": "5117:11:7" + "src": "5117:11:9" }, - "scope": 1343, - "src": "5052:458:7", + "scope": 1472, + "src": "5052:458:9", "stateMutability": "view", "superFunction": null, "visibility": "public" } ], - "scope": 1344, - "src": "240:5272:7" + "scope": 1473, + "src": "240:5272:9" } ], - "src": "0:5513:7" + "src": "0:5513:9" }, "legacyAST": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/OwnerManager.sol", "exportedSymbols": { "OwnerManager": [ - 1343 + 1472 ] }, - "id": 1344, + "id": 1473, "nodeType": "SourceUnit", "nodes": [ { - "id": 973, + "id": 1102, "literals": [ "solidity", "0.4", - ".23" + ".24" ], "nodeType": "PragmaDirective", - "src": "0:23:7" + "src": "0:23:9" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/SelfAuthorized.sol", "file": "./SelfAuthorized.sol", - "id": 974, + "id": 1103, "nodeType": "ImportDirective", - "scope": 1344, - "sourceUnit": 1360, - "src": "24:30:7", + "scope": 1473, + "sourceUnit": 1620, + "src": "24:30:9", "symbolAliases": [], "unitAlias": "" }, @@ -4999,42 +4999,42 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 975, + "id": 1104, "name": "SelfAuthorized", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1359, - "src": "265:14:7", + "referencedDeclaration": 1619, + "src": "265:14:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_SelfAuthorized_$1359", + "typeIdentifier": "t_contract$_SelfAuthorized_$1619", "typeString": "contract SelfAuthorized" } }, - "id": 976, + "id": 1105, "nodeType": "InheritanceSpecifier", - "src": "265:14:7" + "src": "265:14:9" } ], "contractDependencies": [ - 1359 + 1619 ], "contractKind": "contract", "documentation": "@title OwnerManager - Manages a set of owners and a threshold to perform actions.\n @author Stefan George - \n @author Richard Meissner - ", "fullyImplemented": true, - "id": 1343, + "id": 1472, "linearizedBaseContracts": [ - 1343, - 1359 + 1472, + 1619 ], "name": "OwnerManager", "nodeType": "ContractDefinition", "nodes": [ { "constant": true, - "id": 981, + "id": 1110, "name": "SENTINEL_OWNERS", "nodeType": "VariableDeclaration", - "scope": 1343, - "src": "287:54:7", + "scope": 1472, + "src": "287:54:9", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -5042,10 +5042,10 @@ "typeString": "address" }, "typeName": { - "id": 977, + "id": 1106, "name": "address", "nodeType": "ElementaryTypeName", - "src": "287:7:7", + "src": "287:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5057,14 +5057,14 @@ { "argumentTypes": null, "hexValue": "307831", - "id": 979, + "id": 1108, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "337:3:7", + "src": "337:3:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -5080,20 +5080,20 @@ "typeString": "int_const 1" } ], - "id": 978, + "id": 1107, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "329:7:7", + "src": "329:7:9", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 980, + "id": 1109, "isConstant": false, "isLValue": false, "isPure": true, @@ -5101,7 +5101,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "329:12:7", + "src": "329:12:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5111,11 +5111,11 @@ }, { "constant": false, - "id": 985, + "id": 1114, "name": "owners", "nodeType": "VariableDeclaration", - "scope": 1343, - "src": "348:43:7", + "scope": 1472, + "src": "348:43:9", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -5123,28 +5123,28 @@ "typeString": "mapping(address => address)" }, "typeName": { - "id": 984, + "id": 1113, "keyType": { - "id": 982, + "id": 1111, "name": "address", "nodeType": "ElementaryTypeName", - "src": "356:7:7", + "src": "356:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", - "src": "348:27:7", + "src": "348:27:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" }, "valueType": { - "id": 983, + "id": 1112, "name": "address", "nodeType": "ElementaryTypeName", - "src": "367:7:7", + "src": "367:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5156,11 +5156,11 @@ }, { "constant": false, - "id": 987, + "id": 1116, "name": "ownerCount", "nodeType": "VariableDeclaration", - "scope": 1343, - "src": "397:18:7", + "scope": 1472, + "src": "397:18:9", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -5168,10 +5168,10 @@ "typeString": "uint256" }, "typeName": { - "id": 986, + "id": 1115, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "397:7:7", + "src": "397:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5182,11 +5182,11 @@ }, { "constant": false, - "id": 989, + "id": 1118, "name": "threshold", "nodeType": "VariableDeclaration", - "scope": 1343, - "src": "421:24:7", + "scope": 1472, + "src": "421:24:9", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -5194,10 +5194,10 @@ "typeString": "uint8" }, "typeName": { - "id": 988, + "id": 1117, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "421:5:7", + "src": "421:5:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -5208,9 +5208,9 @@ }, { "body": { - "id": 1082, + "id": 1211, "nodeType": "Block", - "src": "720:946:7", + "src": "720:946:9", "statements": [ { "expression": { @@ -5222,19 +5222,19 @@ "typeIdentifier": "t_uint8", "typeString": "uint8" }, - "id": 1000, + "id": 1129, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 998, + "id": 1127, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 989, - "src": "862:9:7", + "referencedDeclaration": 1118, + "src": "862:9:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -5245,14 +5245,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 999, + "id": 1128, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "875:1:7", + "src": "875:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -5260,7 +5260,7 @@ }, "value": "0" }, - "src": "862:14:7", + "src": "862:14:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5274,21 +5274,21 @@ "typeString": "bool" } ], - "id": 997, + "id": 1126, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "854:7:7", + "referencedDeclaration": 2601, + "src": "854:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1001, + "id": 1130, "isConstant": false, "isLValue": false, "isPure": false, @@ -5296,15 +5296,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "854:23:7", + "src": "854:23:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1002, + "id": 1131, "nodeType": "ExpressionStatement", - "src": "854:23:7" + "src": "854:23:9" }, { "expression": { @@ -5316,19 +5316,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1007, + "id": 1136, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1004, + "id": 1133, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 994, - "src": "970:10:7", + "referencedDeclaration": 1123, + "src": "970:10:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -5340,18 +5340,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1005, + "id": 1134, "name": "_owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 992, - "src": "984:7:7", + "referencedDeclaration": 1121, + "src": "984:7:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 1006, + "id": 1135, "isConstant": false, "isLValue": false, "isPure": false, @@ -5359,13 +5359,13 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "984:14:7", + "src": "984:14:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "970:28:7", + "src": "970:28:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5379,21 +5379,21 @@ "typeString": "bool" } ], - "id": 1003, + "id": 1132, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "962:7:7", + "referencedDeclaration": 2601, + "src": "962:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1008, + "id": 1137, "isConstant": false, "isLValue": false, "isPure": false, @@ -5401,15 +5401,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "962:37:7", + "src": "962:37:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1009, + "id": 1138, "nodeType": "ExpressionStatement", - "src": "962:37:7" + "src": "962:37:9" }, { "expression": { @@ -5421,19 +5421,19 @@ "typeIdentifier": "t_uint8", "typeString": "uint8" }, - "id": 1013, + "id": 1142, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1011, + "id": 1140, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 994, - "src": "1069:10:7", + "referencedDeclaration": 1123, + "src": "1069:10:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -5444,14 +5444,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "31", - "id": 1012, + "id": 1141, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1083:1:7", + "src": "1083:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -5459,7 +5459,7 @@ }, "value": "1" }, - "src": "1069:15:7", + "src": "1069:15:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5473,21 +5473,21 @@ "typeString": "bool" } ], - "id": 1010, + "id": 1139, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "1061:7:7", + "referencedDeclaration": 2601, + "src": "1061:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1014, + "id": 1143, "isConstant": false, "isLValue": false, "isPure": false, @@ -5495,28 +5495,28 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1061:24:7", + "src": "1061:24:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1015, + "id": 1144, "nodeType": "ExpressionStatement", - "src": "1061:24:7" + "src": "1061:24:9" }, { "assignments": [ - 1017 + 1146 ], "declarations": [ { "constant": false, - "id": 1017, + "id": 1146, "name": "currentOwner", "nodeType": "VariableDeclaration", - "scope": 1083, - "src": "1132:20:7", + "scope": 1212, + "src": "1132:20:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5524,10 +5524,10 @@ "typeString": "address" }, "typeName": { - "id": 1016, + "id": 1145, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1132:7:7", + "src": "1132:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5537,41 +5537,41 @@ "visibility": "internal" } ], - "id": 1019, + "id": 1148, "initialValue": { "argumentTypes": null, - "id": 1018, + "id": 1147, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 981, - "src": "1155:15:7", + "referencedDeclaration": 1110, + "src": "1155:15:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", - "src": "1132:38:7" + "src": "1132:38:9" }, { "body": { - "id": 1065, + "id": 1194, "nodeType": "Block", - "src": "1225:318:7", + "src": "1225:318:9", "statements": [ { "assignments": [ - 1032 + 1161 ], "declarations": [ { "constant": false, - "id": 1032, + "id": 1161, "name": "owner", "nodeType": "VariableDeclaration", - "scope": 1083, - "src": "1284:13:7", + "scope": 1212, + "src": "1284:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5579,10 +5579,10 @@ "typeString": "address" }, "typeName": { - "id": 1031, + "id": 1160, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1284:7:7", + "src": "1284:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5592,31 +5592,31 @@ "visibility": "internal" } ], - "id": 1036, + "id": 1165, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1033, + "id": 1162, "name": "_owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 992, - "src": "1300:7:7", + "referencedDeclaration": 1121, + "src": "1300:7:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 1035, + "id": 1164, "indexExpression": { "argumentTypes": null, - "id": 1034, + "id": 1163, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1021, - "src": "1308:1:7", + "referencedDeclaration": 1150, + "src": "1308:1:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5627,14 +5627,14 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1300:10:7", + "src": "1300:10:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", - "src": "1284:26:7" + "src": "1284:26:9" }, { "expression": { @@ -5646,7 +5646,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 1044, + "id": 1173, "isConstant": false, "isLValue": false, "isPure": false, @@ -5657,19 +5657,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1040, + "id": 1169, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1038, + "id": 1167, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1032, - "src": "1332:5:7", + "referencedDeclaration": 1161, + "src": "1332:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5680,14 +5680,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1039, + "id": 1168, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1341:1:7", + "src": "1341:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -5695,7 +5695,7 @@ }, "value": "0" }, - "src": "1332:10:7", + "src": "1332:10:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5709,19 +5709,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1043, + "id": 1172, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1041, + "id": 1170, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1032, - "src": "1346:5:7", + "referencedDeclaration": 1161, + "src": "1346:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5731,24 +5731,24 @@ "operator": "!=", "rightExpression": { "argumentTypes": null, - "id": 1042, + "id": 1171, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 981, - "src": "1355:15:7", + "referencedDeclaration": 1110, + "src": "1355:15:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "1346:24:7", + "src": "1346:24:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "1332:38:7", + "src": "1332:38:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5762,21 +5762,21 @@ "typeString": "bool" } ], - "id": 1037, + "id": 1166, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "1324:7:7", + "referencedDeclaration": 2601, + "src": "1324:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1045, + "id": 1174, "isConstant": false, "isLValue": false, "isPure": false, @@ -5784,15 +5784,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1324:47:7", + "src": "1324:47:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1046, + "id": 1175, "nodeType": "ExpressionStatement", - "src": "1324:47:7" + "src": "1324:47:9" }, { "expression": { @@ -5804,7 +5804,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1052, + "id": 1181, "isConstant": false, "isLValue": false, "isPure": false, @@ -5813,26 +5813,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1048, + "id": 1177, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 985, - "src": "1437:6:7", + "referencedDeclaration": 1114, + "src": "1437:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1050, + "id": 1179, "indexExpression": { "argumentTypes": null, - "id": 1049, + "id": 1178, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1032, - "src": "1444:5:7", + "referencedDeclaration": 1161, + "src": "1444:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5843,7 +5843,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1437:13:7", + "src": "1437:13:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5854,14 +5854,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1051, + "id": 1180, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1454:1:7", + "src": "1454:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -5869,7 +5869,7 @@ }, "value": "0" }, - "src": "1437:18:7", + "src": "1437:18:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5883,21 +5883,21 @@ "typeString": "bool" } ], - "id": 1047, + "id": 1176, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "1429:7:7", + "referencedDeclaration": 2601, + "src": "1429:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1053, + "id": 1182, "isConstant": false, "isLValue": false, "isPure": false, @@ -5905,20 +5905,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1429:27:7", + "src": "1429:27:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1054, + "id": 1183, "nodeType": "ExpressionStatement", - "src": "1429:27:7" + "src": "1429:27:9" }, { "expression": { "argumentTypes": null, - "id": 1059, + "id": 1188, "isConstant": false, "isLValue": false, "isPure": false, @@ -5927,26 +5927,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1055, + "id": 1184, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 985, - "src": "1470:6:7", + "referencedDeclaration": 1114, + "src": "1470:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1057, + "id": 1186, "indexExpression": { "argumentTypes": null, - "id": 1056, + "id": 1185, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1017, - "src": "1477:12:7", + "referencedDeclaration": 1146, + "src": "1477:12:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5957,7 +5957,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1470:20:7", + "src": "1470:20:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5967,43 +5967,43 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1058, + "id": 1187, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1032, - "src": "1493:5:7", + "referencedDeclaration": 1161, + "src": "1493:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "1470:28:7", + "src": "1470:28:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1060, + "id": 1189, "nodeType": "ExpressionStatement", - "src": "1470:28:7" + "src": "1470:28:9" }, { "expression": { "argumentTypes": null, - "id": 1063, + "id": 1192, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1061, + "id": 1190, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1017, - "src": "1512:12:7", + "referencedDeclaration": 1146, + "src": "1512:12:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6013,26 +6013,26 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1062, + "id": 1191, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1032, - "src": "1527:5:7", + "referencedDeclaration": 1161, + "src": "1527:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "1512:20:7", + "src": "1512:20:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1064, + "id": 1193, "nodeType": "ExpressionStatement", - "src": "1512:20:7" + "src": "1512:20:9" } ] }, @@ -6042,19 +6042,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1027, + "id": 1156, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1024, + "id": 1153, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1021, - "src": "1200:1:7", + "referencedDeclaration": 1150, + "src": "1200:1:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6066,18 +6066,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1025, + "id": 1154, "name": "_owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 992, - "src": "1204:7:7", + "referencedDeclaration": 1121, + "src": "1204:7:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 1026, + "id": 1155, "isConstant": false, "isLValue": false, "isPure": false, @@ -6085,31 +6085,31 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1204:14:7", + "src": "1204:14:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1200:18:7", + "src": "1200:18:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 1066, + "id": 1195, "initializationExpression": { "assignments": [ - 1021 + 1150 ], "declarations": [ { "constant": false, - "id": 1021, + "id": 1150, "name": "i", "nodeType": "VariableDeclaration", - "scope": 1083, - "src": "1185:9:7", + "scope": 1212, + "src": "1185:9:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6117,10 +6117,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1020, + "id": 1149, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1185:7:7", + "src": "1185:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6130,18 +6130,18 @@ "visibility": "internal" } ], - "id": 1023, + "id": 1152, "initialValue": { "argumentTypes": null, "hexValue": "30", - "id": 1022, + "id": 1151, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1197:1:7", + "src": "1197:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -6150,12 +6150,12 @@ "value": "0" }, "nodeType": "VariableDeclarationStatement", - "src": "1185:13:7" + "src": "1185:13:9" }, "loopExpression": { "expression": { "argumentTypes": null, - "id": 1029, + "id": 1158, "isConstant": false, "isLValue": false, "isPure": false, @@ -6163,15 +6163,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "1220:3:7", + "src": "1220:3:9", "subExpression": { "argumentTypes": null, - "id": 1028, + "id": 1157, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1021, - "src": "1220:1:7", + "referencedDeclaration": 1150, + "src": "1220:1:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6182,17 +6182,17 @@ "typeString": "uint256" } }, - "id": 1030, + "id": 1159, "nodeType": "ExpressionStatement", - "src": "1220:3:7" + "src": "1220:3:9" }, "nodeType": "ForStatement", - "src": "1180:363:7" + "src": "1180:363:9" }, { "expression": { "argumentTypes": null, - "id": 1071, + "id": 1200, "isConstant": false, "isLValue": false, "isPure": false, @@ -6201,26 +6201,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1067, + "id": 1196, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 985, - "src": "1552:6:7", + "referencedDeclaration": 1114, + "src": "1552:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1069, + "id": 1198, "indexExpression": { "argumentTypes": null, - "id": 1068, + "id": 1197, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1017, - "src": "1559:12:7", + "referencedDeclaration": 1146, + "src": "1559:12:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6231,7 +6231,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1552:20:7", + "src": "1552:20:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6241,43 +6241,43 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1070, + "id": 1199, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 981, - "src": "1575:15:7", + "referencedDeclaration": 1110, + "src": "1575:15:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "1552:38:7", + "src": "1552:38:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1072, + "id": 1201, "nodeType": "ExpressionStatement", - "src": "1552:38:7" + "src": "1552:38:9" }, { "expression": { "argumentTypes": null, - "id": 1076, + "id": 1205, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1073, + "id": 1202, "name": "ownerCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 987, - "src": "1600:10:7", + "referencedDeclaration": 1116, + "src": "1600:10:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6289,18 +6289,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1074, + "id": 1203, "name": "_owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 992, - "src": "1613:7:7", + "referencedDeclaration": 1121, + "src": "1613:7:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 1075, + "id": 1204, "isConstant": false, "isLValue": false, "isPure": false, @@ -6308,38 +6308,38 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1613:14:7", + "src": "1613:14:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1600:27:7", + "src": "1600:27:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 1077, + "id": 1206, "nodeType": "ExpressionStatement", - "src": "1600:27:7" + "src": "1600:27:9" }, { "expression": { "argumentTypes": null, - "id": 1080, + "id": 1209, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1078, + "id": 1207, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 989, - "src": "1637:9:7", + "referencedDeclaration": 1118, + "src": "1637:9:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -6349,31 +6349,31 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1079, + "id": 1208, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 994, - "src": "1649:10:7", + "referencedDeclaration": 1123, + "src": "1649:10:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "src": "1637:22:7", + "src": "1637:22:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "id": 1081, + "id": 1210, "nodeType": "ExpressionStatement", - "src": "1637:22:7" + "src": "1637:22:9" } ] }, "documentation": "@dev Setup function sets initial storage of contract.\n @param _owners List of Safe owners.\n @param _threshold Number of required confirmations for a Safe transaction.", - "id": 1083, + "id": 1212, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -6381,16 +6381,16 @@ "name": "setupOwners", "nodeType": "FunctionDefinition", "parameters": { - "id": 995, + "id": 1124, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 992, + "id": 1121, "name": "_owners", "nodeType": "VariableDeclaration", - "scope": 1083, - "src": "662:17:7", + "scope": 1212, + "src": "662:17:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6399,19 +6399,19 @@ }, "typeName": { "baseType": { - "id": 990, + "id": 1119, "name": "address", "nodeType": "ElementaryTypeName", - "src": "662:7:7", + "src": "662:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 991, + "id": 1120, "length": null, "nodeType": "ArrayTypeName", - "src": "662:9:7", + "src": "662:9:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" @@ -6422,11 +6422,11 @@ }, { "constant": false, - "id": 994, + "id": 1123, "name": "_threshold", "nodeType": "VariableDeclaration", - "scope": 1083, - "src": "681:16:7", + "scope": 1212, + "src": "681:16:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6434,10 +6434,10 @@ "typeString": "uint8" }, "typeName": { - "id": 993, + "id": 1122, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "681:5:7", + "src": "681:5:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -6447,26 +6447,26 @@ "visibility": "internal" } ], - "src": "661:37:7" + "src": "661:37:9" }, "payable": false, "returnParameters": { - "id": 996, + "id": 1125, "nodeType": "ParameterList", "parameters": [], - "src": "720:0:7" + "src": "720:0:9" }, - "scope": 1343, - "src": "641:1025:7", + "scope": 1472, + "src": "641:1025:9", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 1135, + "id": 1264, "nodeType": "Block", - "src": "2008:426:7", + "src": "2008:426:9", "statements": [ { "expression": { @@ -6478,7 +6478,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 1099, + "id": 1228, "isConstant": false, "isLValue": false, "isPure": false, @@ -6489,19 +6489,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1095, + "id": 1224, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1093, + "id": 1222, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1085, - "src": "2067:5:7", + "referencedDeclaration": 1214, + "src": "2067:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6512,14 +6512,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1094, + "id": 1223, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2076:1:7", + "src": "2076:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -6527,7 +6527,7 @@ }, "value": "0" }, - "src": "2067:10:7", + "src": "2067:10:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6541,19 +6541,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1098, + "id": 1227, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1096, + "id": 1225, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1085, - "src": "2081:5:7", + "referencedDeclaration": 1214, + "src": "2081:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6563,24 +6563,24 @@ "operator": "!=", "rightExpression": { "argumentTypes": null, - "id": 1097, + "id": 1226, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 981, - "src": "2090:15:7", + "referencedDeclaration": 1110, + "src": "2090:15:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2081:24:7", + "src": "2081:24:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "2067:38:7", + "src": "2067:38:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6594,21 +6594,21 @@ "typeString": "bool" } ], - "id": 1092, + "id": 1221, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "2059:7:7", + "referencedDeclaration": 2601, + "src": "2059:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1100, + "id": 1229, "isConstant": false, "isLValue": false, "isPure": false, @@ -6616,15 +6616,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2059:47:7", + "src": "2059:47:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1101, + "id": 1230, "nodeType": "ExpressionStatement", - "src": "2059:47:7" + "src": "2059:47:9" }, { "expression": { @@ -6636,7 +6636,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1107, + "id": 1236, "isConstant": false, "isLValue": false, "isPure": false, @@ -6645,26 +6645,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1103, + "id": 1232, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 985, - "src": "2164:6:7", + "referencedDeclaration": 1114, + "src": "2164:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1105, + "id": 1234, "indexExpression": { "argumentTypes": null, - "id": 1104, + "id": 1233, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1085, - "src": "2171:5:7", + "referencedDeclaration": 1214, + "src": "2171:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6675,7 +6675,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2164:13:7", + "src": "2164:13:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6686,14 +6686,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1106, + "id": 1235, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2181:1:7", + "src": "2181:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -6701,7 +6701,7 @@ }, "value": "0" }, - "src": "2164:18:7", + "src": "2164:18:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6715,21 +6715,21 @@ "typeString": "bool" } ], - "id": 1102, + "id": 1231, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "2156:7:7", + "referencedDeclaration": 2601, + "src": "2156:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1108, + "id": 1237, "isConstant": false, "isLValue": false, "isPure": false, @@ -6737,20 +6737,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2156:27:7", + "src": "2156:27:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1109, + "id": 1238, "nodeType": "ExpressionStatement", - "src": "2156:27:7" + "src": "2156:27:9" }, { "expression": { "argumentTypes": null, - "id": 1116, + "id": 1245, "isConstant": false, "isLValue": false, "isPure": false, @@ -6759,26 +6759,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1110, + "id": 1239, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 985, - "src": "2193:6:7", + "referencedDeclaration": 1114, + "src": "2193:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1112, + "id": 1241, "indexExpression": { "argumentTypes": null, - "id": 1111, + "id": 1240, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1085, - "src": "2200:5:7", + "referencedDeclaration": 1214, + "src": "2200:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6789,7 +6789,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "2193:13:7", + "src": "2193:13:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6801,26 +6801,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1113, + "id": 1242, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 985, - "src": "2209:6:7", + "referencedDeclaration": 1114, + "src": "2209:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1115, + "id": 1244, "indexExpression": { "argumentTypes": null, - "id": 1114, + "id": 1243, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 981, - "src": "2216:15:7", + "referencedDeclaration": 1110, + "src": "2216:15:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6831,26 +6831,26 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2209:23:7", + "src": "2209:23:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2193:39:7", + "src": "2193:39:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1117, + "id": 1246, "nodeType": "ExpressionStatement", - "src": "2193:39:7" + "src": "2193:39:9" }, { "expression": { "argumentTypes": null, - "id": 1122, + "id": 1251, "isConstant": false, "isLValue": false, "isPure": false, @@ -6859,26 +6859,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1118, + "id": 1247, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 985, - "src": "2242:6:7", + "referencedDeclaration": 1114, + "src": "2242:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1120, + "id": 1249, "indexExpression": { "argumentTypes": null, - "id": 1119, + "id": 1248, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 981, - "src": "2249:15:7", + "referencedDeclaration": 1110, + "src": "2249:15:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6889,7 +6889,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "2242:23:7", + "src": "2242:23:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6899,31 +6899,31 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1121, + "id": 1250, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1085, - "src": "2268:5:7", + "referencedDeclaration": 1214, + "src": "2268:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2242:31:7", + "src": "2242:31:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1123, + "id": 1252, "nodeType": "ExpressionStatement", - "src": "2242:31:7" + "src": "2242:31:9" }, { "expression": { "argumentTypes": null, - "id": 1125, + "id": 1254, "isConstant": false, "isLValue": false, "isPure": false, @@ -6931,15 +6931,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "2283:12:7", + "src": "2283:12:9", "subExpression": { "argumentTypes": null, - "id": 1124, + "id": 1253, "name": "ownerCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 987, - "src": "2283:10:7", + "referencedDeclaration": 1116, + "src": "2283:10:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6950,9 +6950,9 @@ "typeString": "uint256" } }, - "id": 1126, + "id": 1255, "nodeType": "ExpressionStatement", - "src": "2283:12:7" + "src": "2283:12:9" }, { "condition": { @@ -6961,19 +6961,19 @@ "typeIdentifier": "t_uint8", "typeString": "uint8" }, - "id": 1129, + "id": 1258, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1127, + "id": 1256, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 989, - "src": "2363:9:7", + "referencedDeclaration": 1118, + "src": "2363:9:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -6983,39 +6983,39 @@ "operator": "!=", "rightExpression": { "argumentTypes": null, - "id": 1128, + "id": 1257, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1087, - "src": "2376:10:7", + "referencedDeclaration": 1216, + "src": "2376:10:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "src": "2363:23:7", + "src": "2363:23:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 1134, + "id": 1263, "nodeType": "IfStatement", - "src": "2359:68:7", + "src": "2359:68:9", "trueBody": { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 1131, + "id": 1260, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1087, - "src": "2416:10:7", + "referencedDeclaration": 1216, + "src": "2416:10:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -7029,18 +7029,18 @@ "typeString": "uint8" } ], - "id": 1130, + "id": 1259, "name": "changeThreshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1271, - "src": "2400:15:7", + "referencedDeclaration": 1400, + "src": "2400:15:9", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_uint8_$returns$__$", "typeString": "function (uint8)" } }, - "id": 1132, + "id": 1261, "isConstant": false, "isLValue": false, "isPure": false, @@ -7048,58 +7048,58 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2400:27:7", + "src": "2400:27:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1133, + "id": 1262, "nodeType": "ExpressionStatement", - "src": "2400:27:7" + "src": "2400:27:9" } } ] }, "documentation": "@dev Allows to add a new owner to the Safe and update the threshold at the same time.\n This can only be done via a Safe transaction.\n @param owner New owner address.\n @param _threshold New threshold.", - "id": 1136, + "id": 1265, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 1090, + "id": 1219, "modifierName": { "argumentTypes": null, - "id": 1089, + "id": 1218, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1358, - "src": "1993:10:7", + "referencedDeclaration": 1618, + "src": "1993:10:9", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "1993:10:7" + "src": "1993:10:9" } ], "name": "addOwnerWithThreshold", "nodeType": "FunctionDefinition", "parameters": { - "id": 1088, + "id": 1217, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1085, + "id": 1214, "name": "owner", "nodeType": "VariableDeclaration", - "scope": 1136, - "src": "1937:13:7", + "scope": 1265, + "src": "1937:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7107,10 +7107,10 @@ "typeString": "address" }, "typeName": { - "id": 1084, + "id": 1213, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1937:7:7", + "src": "1937:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7121,11 +7121,11 @@ }, { "constant": false, - "id": 1087, + "id": 1216, "name": "_threshold", "nodeType": "VariableDeclaration", - "scope": 1136, - "src": "1952:16:7", + "scope": 1265, + "src": "1952:16:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7133,10 +7133,10 @@ "typeString": "uint8" }, "typeName": { - "id": 1086, + "id": 1215, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "1952:5:7", + "src": "1952:5:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -7146,26 +7146,26 @@ "visibility": "internal" } ], - "src": "1936:33:7" + "src": "1936:33:9" }, "payable": false, "returnParameters": { - "id": 1091, + "id": 1220, "nodeType": "ParameterList", "parameters": [], - "src": "2008:0:7" + "src": "2008:0:9" }, - "scope": 1343, - "src": "1906:528:7", + "scope": 1472, + "src": "1906:528:9", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1188, + "id": 1317, "nodeType": "Block", - "src": "2887:462:7", + "src": "2887:462:9", "statements": [ { "expression": { @@ -7177,7 +7177,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1152, + "id": 1281, "isConstant": false, "isLValue": false, "isPure": false, @@ -7188,19 +7188,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1150, + "id": 1279, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1148, + "id": 1277, "name": "ownerCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 987, - "src": "2982:10:7", + "referencedDeclaration": 1116, + "src": "2982:10:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7211,14 +7211,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "31", - "id": 1149, + "id": 1278, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2995:1:7", + "src": "2995:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -7226,7 +7226,7 @@ }, "value": "1" }, - "src": "2982:14:7", + "src": "2982:14:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7236,18 +7236,18 @@ "operator": ">=", "rightExpression": { "argumentTypes": null, - "id": 1151, + "id": 1280, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1142, - "src": "3000:10:7", + "referencedDeclaration": 1271, + "src": "3000:10:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "src": "2982:28:7", + "src": "2982:28:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -7261,21 +7261,21 @@ "typeString": "bool" } ], - "id": 1147, + "id": 1276, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "2974:7:7", + "referencedDeclaration": 2601, + "src": "2974:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1153, + "id": 1282, "isConstant": false, "isLValue": false, "isPure": false, @@ -7283,15 +7283,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2974:37:7", + "src": "2974:37:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1154, + "id": 1283, "nodeType": "ExpressionStatement", - "src": "2974:37:7" + "src": "2974:37:9" }, { "expression": { @@ -7303,7 +7303,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1160, + "id": 1289, "isConstant": false, "isLValue": false, "isPure": false, @@ -7312,26 +7312,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1156, + "id": 1285, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 985, - "src": "3091:6:7", + "referencedDeclaration": 1114, + "src": "3091:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1158, + "id": 1287, "indexExpression": { "argumentTypes": null, - "id": 1157, + "id": 1286, "name": "prevOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1138, - "src": "3098:9:7", + "referencedDeclaration": 1267, + "src": "3098:9:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7342,7 +7342,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3091:17:7", + "src": "3091:17:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7352,18 +7352,18 @@ "operator": "==", "rightExpression": { "argumentTypes": null, - "id": 1159, + "id": 1288, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1140, - "src": "3112:5:7", + "referencedDeclaration": 1269, + "src": "3112:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "3091:26:7", + "src": "3091:26:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -7377,21 +7377,21 @@ "typeString": "bool" } ], - "id": 1155, + "id": 1284, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "3083:7:7", + "referencedDeclaration": 2601, + "src": "3083:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1161, + "id": 1290, "isConstant": false, "isLValue": false, "isPure": false, @@ -7399,20 +7399,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3083:35:7", + "src": "3083:35:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1162, + "id": 1291, "nodeType": "ExpressionStatement", - "src": "3083:35:7" + "src": "3083:35:9" }, { "expression": { "argumentTypes": null, - "id": 1169, + "id": 1298, "isConstant": false, "isLValue": false, "isPure": false, @@ -7421,26 +7421,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1163, + "id": 1292, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 985, - "src": "3128:6:7", + "referencedDeclaration": 1114, + "src": "3128:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1165, + "id": 1294, "indexExpression": { "argumentTypes": null, - "id": 1164, + "id": 1293, "name": "prevOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1138, - "src": "3135:9:7", + "referencedDeclaration": 1267, + "src": "3135:9:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7451,7 +7451,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "3128:17:7", + "src": "3128:17:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7463,26 +7463,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1166, + "id": 1295, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 985, - "src": "3148:6:7", + "referencedDeclaration": 1114, + "src": "3148:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1168, + "id": 1297, "indexExpression": { "argumentTypes": null, - "id": 1167, + "id": 1296, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1140, - "src": "3155:5:7", + "referencedDeclaration": 1269, + "src": "3155:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7493,26 +7493,26 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3148:13:7", + "src": "3148:13:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "3128:33:7", + "src": "3128:33:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1170, + "id": 1299, "nodeType": "ExpressionStatement", - "src": "3128:33:7" + "src": "3128:33:9" }, { "expression": { "argumentTypes": null, - "id": 1175, + "id": 1304, "isConstant": false, "isLValue": false, "isPure": false, @@ -7521,26 +7521,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1171, + "id": 1300, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 985, - "src": "3171:6:7", + "referencedDeclaration": 1114, + "src": "3171:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1173, + "id": 1302, "indexExpression": { "argumentTypes": null, - "id": 1172, + "id": 1301, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1140, - "src": "3178:5:7", + "referencedDeclaration": 1269, + "src": "3178:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7551,7 +7551,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "3171:13:7", + "src": "3171:13:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7562,14 +7562,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "30", - "id": 1174, + "id": 1303, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3187:1:7", + "src": "3187:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -7577,20 +7577,20 @@ }, "value": "0" }, - "src": "3171:17:7", + "src": "3171:17:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1176, + "id": 1305, "nodeType": "ExpressionStatement", - "src": "3171:17:7" + "src": "3171:17:9" }, { "expression": { "argumentTypes": null, - "id": 1178, + "id": 1307, "isConstant": false, "isLValue": false, "isPure": false, @@ -7598,15 +7598,15 @@ "nodeType": "UnaryOperation", "operator": "--", "prefix": false, - "src": "3198:12:7", + "src": "3198:12:9", "subExpression": { "argumentTypes": null, - "id": 1177, + "id": 1306, "name": "ownerCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 987, - "src": "3198:10:7", + "referencedDeclaration": 1116, + "src": "3198:10:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7617,9 +7617,9 @@ "typeString": "uint256" } }, - "id": 1179, + "id": 1308, "nodeType": "ExpressionStatement", - "src": "3198:12:7" + "src": "3198:12:9" }, { "condition": { @@ -7628,19 +7628,19 @@ "typeIdentifier": "t_uint8", "typeString": "uint8" }, - "id": 1182, + "id": 1311, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1180, + "id": 1309, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 989, - "src": "3278:9:7", + "referencedDeclaration": 1118, + "src": "3278:9:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -7650,39 +7650,39 @@ "operator": "!=", "rightExpression": { "argumentTypes": null, - "id": 1181, + "id": 1310, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1142, - "src": "3291:10:7", + "referencedDeclaration": 1271, + "src": "3291:10:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "src": "3278:23:7", + "src": "3278:23:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 1187, + "id": 1316, "nodeType": "IfStatement", - "src": "3274:68:7", + "src": "3274:68:9", "trueBody": { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 1184, + "id": 1313, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1142, - "src": "3331:10:7", + "referencedDeclaration": 1271, + "src": "3331:10:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -7696,18 +7696,18 @@ "typeString": "uint8" } ], - "id": 1183, + "id": 1312, "name": "changeThreshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1271, - "src": "3315:15:7", + "referencedDeclaration": 1400, + "src": "3315:15:9", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_uint8_$returns$__$", "typeString": "function (uint8)" } }, - "id": 1185, + "id": 1314, "isConstant": false, "isLValue": false, "isPure": false, @@ -7715,58 +7715,58 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3315:27:7", + "src": "3315:27:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1186, + "id": 1315, "nodeType": "ExpressionStatement", - "src": "3315:27:7" + "src": "3315:27:9" } } ] }, "documentation": "@dev Allows to remove an owner from the Safe and update the threshold at the same time.\n This can only be done via a Safe transaction.\n @param prevOwner Owner that pointed to the owner to be removed in the linked list\n @param owner Owner address to be removed.\n @param _threshold New threshold.", - "id": 1189, + "id": 1318, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 1145, + "id": 1274, "modifierName": { "argumentTypes": null, - "id": 1144, + "id": 1273, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1358, - "src": "2872:10:7", + "referencedDeclaration": 1618, + "src": "2872:10:9", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "2872:10:7" + "src": "2872:10:9" } ], "name": "removeOwner", "nodeType": "FunctionDefinition", "parameters": { - "id": 1143, + "id": 1272, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1138, + "id": 1267, "name": "prevOwner", "nodeType": "VariableDeclaration", - "scope": 1189, - "src": "2797:17:7", + "scope": 1318, + "src": "2797:17:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7774,10 +7774,10 @@ "typeString": "address" }, "typeName": { - "id": 1137, + "id": 1266, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2797:7:7", + "src": "2797:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7788,11 +7788,11 @@ }, { "constant": false, - "id": 1140, + "id": 1269, "name": "owner", "nodeType": "VariableDeclaration", - "scope": 1189, - "src": "2816:13:7", + "scope": 1318, + "src": "2816:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7800,10 +7800,10 @@ "typeString": "address" }, "typeName": { - "id": 1139, + "id": 1268, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2816:7:7", + "src": "2816:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7814,11 +7814,11 @@ }, { "constant": false, - "id": 1142, + "id": 1271, "name": "_threshold", "nodeType": "VariableDeclaration", - "scope": 1189, - "src": "2831:16:7", + "scope": 1318, + "src": "2831:16:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7826,10 +7826,10 @@ "typeString": "uint8" }, "typeName": { - "id": 1141, + "id": 1270, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "2831:5:7", + "src": "2831:5:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -7839,26 +7839,26 @@ "visibility": "internal" } ], - "src": "2796:52:7" + "src": "2796:52:9" }, "payable": false, "returnParameters": { - "id": 1146, + "id": 1275, "nodeType": "ParameterList", "parameters": [], - "src": "2887:0:7" + "src": "2887:0:9" }, - "scope": 1343, - "src": "2776:573:7", + "scope": 1472, + "src": "2776:573:9", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1246, + "id": 1375, "nodeType": "Block", - "src": "3795:414:7", + "src": "3795:414:9", "statements": [ { "expression": { @@ -7870,7 +7870,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 1207, + "id": 1336, "isConstant": false, "isLValue": false, "isPure": false, @@ -7881,19 +7881,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1203, + "id": 1332, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1201, + "id": 1330, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1195, - "src": "3854:8:7", + "referencedDeclaration": 1324, + "src": "3854:8:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7904,14 +7904,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1202, + "id": 1331, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3866:1:7", + "src": "3866:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -7919,7 +7919,7 @@ }, "value": "0" }, - "src": "3854:13:7", + "src": "3854:13:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -7933,19 +7933,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1206, + "id": 1335, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1204, + "id": 1333, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1195, - "src": "3871:8:7", + "referencedDeclaration": 1324, + "src": "3871:8:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7955,24 +7955,24 @@ "operator": "!=", "rightExpression": { "argumentTypes": null, - "id": 1205, + "id": 1334, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 981, - "src": "3883:15:7", + "referencedDeclaration": 1110, + "src": "3883:15:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "3871:27:7", + "src": "3871:27:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "3854:44:7", + "src": "3854:44:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -7986,21 +7986,21 @@ "typeString": "bool" } ], - "id": 1200, + "id": 1329, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "3846:7:7", + "referencedDeclaration": 2601, + "src": "3846:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1208, + "id": 1337, "isConstant": false, "isLValue": false, "isPure": false, @@ -8008,15 +8008,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3846:53:7", + "src": "3846:53:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1209, + "id": 1338, "nodeType": "ExpressionStatement", - "src": "3846:53:7" + "src": "3846:53:9" }, { "expression": { @@ -8028,7 +8028,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1215, + "id": 1344, "isConstant": false, "isLValue": false, "isPure": false, @@ -8037,26 +8037,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1211, + "id": 1340, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 985, - "src": "3957:6:7", + "referencedDeclaration": 1114, + "src": "3957:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1213, + "id": 1342, "indexExpression": { "argumentTypes": null, - "id": 1212, + "id": 1341, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1195, - "src": "3964:8:7", + "referencedDeclaration": 1324, + "src": "3964:8:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8067,7 +8067,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3957:16:7", + "src": "3957:16:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8078,14 +8078,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1214, + "id": 1343, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3977:1:7", + "src": "3977:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -8093,7 +8093,7 @@ }, "value": "0" }, - "src": "3957:21:7", + "src": "3957:21:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -8107,21 +8107,21 @@ "typeString": "bool" } ], - "id": 1210, + "id": 1339, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "3949:7:7", + "referencedDeclaration": 2601, + "src": "3949:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1216, + "id": 1345, "isConstant": false, "isLValue": false, "isPure": false, @@ -8129,15 +8129,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3949:30:7", + "src": "3949:30:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1217, + "id": 1346, "nodeType": "ExpressionStatement", - "src": "3949:30:7" + "src": "3949:30:9" }, { "expression": { @@ -8149,7 +8149,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1223, + "id": 1352, "isConstant": false, "isLValue": false, "isPure": false, @@ -8158,26 +8158,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1219, + "id": 1348, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 985, - "src": "4059:6:7", + "referencedDeclaration": 1114, + "src": "4059:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1221, + "id": 1350, "indexExpression": { "argumentTypes": null, - "id": 1220, + "id": 1349, "name": "prevOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1191, - "src": "4066:9:7", + "referencedDeclaration": 1320, + "src": "4066:9:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8188,7 +8188,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4059:17:7", + "src": "4059:17:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8198,18 +8198,18 @@ "operator": "==", "rightExpression": { "argumentTypes": null, - "id": 1222, + "id": 1351, "name": "oldOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1193, - "src": "4080:8:7", + "referencedDeclaration": 1322, + "src": "4080:8:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "4059:29:7", + "src": "4059:29:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -8223,21 +8223,21 @@ "typeString": "bool" } ], - "id": 1218, + "id": 1347, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "4051:7:7", + "referencedDeclaration": 2601, + "src": "4051:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1224, + "id": 1353, "isConstant": false, "isLValue": false, "isPure": false, @@ -8245,20 +8245,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4051:38:7", + "src": "4051:38:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1225, + "id": 1354, "nodeType": "ExpressionStatement", - "src": "4051:38:7" + "src": "4051:38:9" }, { "expression": { "argumentTypes": null, - "id": 1232, + "id": 1361, "isConstant": false, "isLValue": false, "isPure": false, @@ -8267,26 +8267,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1226, + "id": 1355, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 985, - "src": "4099:6:7", + "referencedDeclaration": 1114, + "src": "4099:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1228, + "id": 1357, "indexExpression": { "argumentTypes": null, - "id": 1227, + "id": 1356, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1195, - "src": "4106:8:7", + "referencedDeclaration": 1324, + "src": "4106:8:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8297,7 +8297,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "4099:16:7", + "src": "4099:16:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8309,26 +8309,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1229, + "id": 1358, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 985, - "src": "4118:6:7", + "referencedDeclaration": 1114, + "src": "4118:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1231, + "id": 1360, "indexExpression": { "argumentTypes": null, - "id": 1230, + "id": 1359, "name": "oldOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1193, - "src": "4125:8:7", + "referencedDeclaration": 1322, + "src": "4125:8:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8339,26 +8339,26 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4118:16:7", + "src": "4118:16:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "4099:35:7", + "src": "4099:35:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1233, + "id": 1362, "nodeType": "ExpressionStatement", - "src": "4099:35:7" + "src": "4099:35:9" }, { "expression": { "argumentTypes": null, - "id": 1238, + "id": 1367, "isConstant": false, "isLValue": false, "isPure": false, @@ -8367,26 +8367,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1234, + "id": 1363, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 985, - "src": "4144:6:7", + "referencedDeclaration": 1114, + "src": "4144:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1236, + "id": 1365, "indexExpression": { "argumentTypes": null, - "id": 1235, + "id": 1364, "name": "prevOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1191, - "src": "4151:9:7", + "referencedDeclaration": 1320, + "src": "4151:9:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8397,7 +8397,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "4144:17:7", + "src": "4144:17:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8407,31 +8407,31 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1237, + "id": 1366, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1195, - "src": "4164:8:7", + "referencedDeclaration": 1324, + "src": "4164:8:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "4144:28:7", + "src": "4144:28:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1239, + "id": 1368, "nodeType": "ExpressionStatement", - "src": "4144:28:7" + "src": "4144:28:9" }, { "expression": { "argumentTypes": null, - "id": 1244, + "id": 1373, "isConstant": false, "isLValue": false, "isPure": false, @@ -8440,26 +8440,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1240, + "id": 1369, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 985, - "src": "4182:6:7", + "referencedDeclaration": 1114, + "src": "4182:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1242, + "id": 1371, "indexExpression": { "argumentTypes": null, - "id": 1241, + "id": 1370, "name": "oldOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1193, - "src": "4189:8:7", + "referencedDeclaration": 1322, + "src": "4189:8:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8470,7 +8470,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "4182:16:7", + "src": "4182:16:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8481,14 +8481,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "30", - "id": 1243, + "id": 1372, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4201:1:7", + "src": "4201:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -8496,57 +8496,57 @@ }, "value": "0" }, - "src": "4182:20:7", + "src": "4182:20:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1245, + "id": 1374, "nodeType": "ExpressionStatement", - "src": "4182:20:7" + "src": "4182:20:9" } ] }, "documentation": "@dev Allows to swap/replace an owner from the Safe with another address.\n This can only be done via a Safe transaction.\n @param prevOwner Owner that pointed to the owner to be replaced in the linked list\n @param oldOwner Owner address to be replaced.\n @param newOwner New owner address.", - "id": 1247, + "id": 1376, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 1198, + "id": 1327, "modifierName": { "argumentTypes": null, - "id": 1197, + "id": 1326, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1358, - "src": "3780:10:7", + "referencedDeclaration": 1618, + "src": "3780:10:9", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "3780:10:7" + "src": "3780:10:9" } ], "name": "swapOwner", "nodeType": "FunctionDefinition", "parameters": { - "id": 1196, + "id": 1325, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1191, + "id": 1320, "name": "prevOwner", "nodeType": "VariableDeclaration", - "scope": 1247, - "src": "3702:17:7", + "scope": 1376, + "src": "3702:17:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8554,10 +8554,10 @@ "typeString": "address" }, "typeName": { - "id": 1190, + "id": 1319, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3702:7:7", + "src": "3702:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8568,11 +8568,11 @@ }, { "constant": false, - "id": 1193, + "id": 1322, "name": "oldOwner", "nodeType": "VariableDeclaration", - "scope": 1247, - "src": "3721:16:7", + "scope": 1376, + "src": "3721:16:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8580,10 +8580,10 @@ "typeString": "address" }, "typeName": { - "id": 1192, + "id": 1321, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3721:7:7", + "src": "3721:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8594,11 +8594,11 @@ }, { "constant": false, - "id": 1195, + "id": 1324, "name": "newOwner", "nodeType": "VariableDeclaration", - "scope": 1247, - "src": "3739:16:7", + "scope": 1376, + "src": "3739:16:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8606,10 +8606,10 @@ "typeString": "address" }, "typeName": { - "id": 1194, + "id": 1323, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3739:7:7", + "src": "3739:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8619,26 +8619,26 @@ "visibility": "internal" } ], - "src": "3701:55:7" + "src": "3701:55:9" }, "payable": false, "returnParameters": { - "id": 1199, + "id": 1328, "nodeType": "ParameterList", "parameters": [], - "src": "3795:0:7" + "src": "3795:0:9" }, - "scope": 1343, - "src": "3683:526:7", + "scope": 1472, + "src": "3683:526:9", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1270, + "id": 1399, "nodeType": "Block", - "src": "4479:237:7", + "src": "4479:237:9", "statements": [ { "expression": { @@ -8650,19 +8650,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1257, + "id": 1386, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1255, + "id": 1384, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1249, - "src": "4566:10:7", + "referencedDeclaration": 1378, + "src": "4566:10:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -8672,18 +8672,18 @@ "operator": "<=", "rightExpression": { "argumentTypes": null, - "id": 1256, + "id": 1385, "name": "ownerCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 987, - "src": "4580:10:7", + "referencedDeclaration": 1116, + "src": "4580:10:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4566:24:7", + "src": "4566:24:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -8697,21 +8697,21 @@ "typeString": "bool" } ], - "id": 1254, + "id": 1383, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "4558:7:7", + "referencedDeclaration": 2601, + "src": "4558:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1258, + "id": 1387, "isConstant": false, "isLValue": false, "isPure": false, @@ -8719,15 +8719,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4558:33:7", + "src": "4558:33:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1259, + "id": 1388, "nodeType": "ExpressionStatement", - "src": "4558:33:7" + "src": "4558:33:9" }, { "expression": { @@ -8739,19 +8739,19 @@ "typeIdentifier": "t_uint8", "typeString": "uint8" }, - "id": 1263, + "id": 1392, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1261, + "id": 1390, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1249, - "src": "4661:10:7", + "referencedDeclaration": 1378, + "src": "4661:10:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -8762,14 +8762,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "31", - "id": 1262, + "id": 1391, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4675:1:7", + "src": "4675:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -8777,7 +8777,7 @@ }, "value": "1" }, - "src": "4661:15:7", + "src": "4661:15:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -8791,21 +8791,21 @@ "typeString": "bool" } ], - "id": 1260, + "id": 1389, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "4653:7:7", + "referencedDeclaration": 2601, + "src": "4653:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1264, + "id": 1393, "isConstant": false, "isLValue": false, "isPure": false, @@ -8813,32 +8813,32 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4653:24:7", + "src": "4653:24:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1265, + "id": 1394, "nodeType": "ExpressionStatement", - "src": "4653:24:7" + "src": "4653:24:9" }, { "expression": { "argumentTypes": null, - "id": 1268, + "id": 1397, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1266, + "id": 1395, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 989, - "src": "4687:9:7", + "referencedDeclaration": 1118, + "src": "4687:9:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -8848,68 +8848,68 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1267, + "id": 1396, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1249, - "src": "4699:10:7", + "referencedDeclaration": 1378, + "src": "4699:10:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "src": "4687:22:7", + "src": "4687:22:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "id": 1269, + "id": 1398, "nodeType": "ExpressionStatement", - "src": "4687:22:7" + "src": "4687:22:9" } ] }, "documentation": "@dev Allows to update the number of required confirmations by Safe owners.\n This can only be done via a Safe transaction.\n @param _threshold New threshold.", - "id": 1271, + "id": 1400, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 1252, + "id": 1381, "modifierName": { "argumentTypes": null, - "id": 1251, + "id": 1380, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1358, - "src": "4464:10:7", + "referencedDeclaration": 1618, + "src": "4464:10:9", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "4464:10:7" + "src": "4464:10:9" } ], "name": "changeThreshold", "nodeType": "FunctionDefinition", "parameters": { - "id": 1250, + "id": 1379, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1249, + "id": 1378, "name": "_threshold", "nodeType": "VariableDeclaration", - "scope": 1271, - "src": "4423:16:7", + "scope": 1400, + "src": "4423:16:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8917,10 +8917,10 @@ "typeString": "uint8" }, "typeName": { - "id": 1248, + "id": 1377, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "4423:5:7", + "src": "4423:5:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -8930,50 +8930,50 @@ "visibility": "internal" } ], - "src": "4422:18:7" + "src": "4422:18:9" }, "payable": false, "returnParameters": { - "id": 1253, + "id": 1382, "nodeType": "ParameterList", "parameters": [], - "src": "4479:0:7" + "src": "4479:0:9" }, - "scope": 1343, - "src": "4398:318:7", + "scope": 1472, + "src": "4398:318:9", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1278, + "id": 1407, "nodeType": "Block", - "src": "4802:33:7", + "src": "4802:33:9", "statements": [ { "expression": { "argumentTypes": null, - "id": 1276, + "id": 1405, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 989, - "src": "4819:9:7", + "referencedDeclaration": 1118, + "src": "4819:9:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "functionReturnParameters": 1275, - "id": 1277, + "functionReturnParameters": 1404, + "id": 1406, "nodeType": "Return", - "src": "4812:16:7" + "src": "4812:16:9" } ] }, "documentation": null, - "id": 1279, + "id": 1408, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -8981,23 +8981,23 @@ "name": "getThreshold", "nodeType": "FunctionDefinition", "parameters": { - "id": 1272, + "id": 1401, "nodeType": "ParameterList", "parameters": [], - "src": "4743:2:7" + "src": "4743:2:9" }, "payable": false, "returnParameters": { - "id": 1275, + "id": 1404, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1274, + "id": 1403, "name": "", "nodeType": "VariableDeclaration", - "scope": 1279, - "src": "4791:5:7", + "scope": 1408, + "src": "4791:5:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9005,10 +9005,10 @@ "typeString": "uint8" }, "typeName": { - "id": 1273, + "id": 1402, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "4791:5:7", + "src": "4791:5:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -9018,19 +9018,19 @@ "visibility": "internal" } ], - "src": "4790:7:7" + "src": "4790:7:9" }, - "scope": 1343, - "src": "4722:113:7", + "scope": 1472, + "src": "4722:113:9", "stateMutability": "view", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1292, + "id": 1421, "nodeType": "Block", - "src": "4928:42:7", + "src": "4928:42:9", "statements": [ { "expression": { @@ -9039,7 +9039,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1290, + "id": 1419, "isConstant": false, "isLValue": false, "isPure": false, @@ -9048,26 +9048,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1286, + "id": 1415, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 985, - "src": "4945:6:7", + "referencedDeclaration": 1114, + "src": "4945:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1288, + "id": 1417, "indexExpression": { "argumentTypes": null, - "id": 1287, + "id": 1416, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1281, - "src": "4952:5:7", + "referencedDeclaration": 1410, + "src": "4952:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9078,7 +9078,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4945:13:7", + "src": "4945:13:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9089,14 +9089,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1289, + "id": 1418, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4962:1:7", + "src": "4962:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -9104,21 +9104,21 @@ }, "value": "0" }, - "src": "4945:18:7", + "src": "4945:18:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "functionReturnParameters": 1285, - "id": 1291, + "functionReturnParameters": 1414, + "id": 1420, "nodeType": "Return", - "src": "4938:25:7" + "src": "4938:25:9" } ] }, "documentation": null, - "id": 1293, + "id": 1422, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -9126,16 +9126,16 @@ "name": "isOwner", "nodeType": "FunctionDefinition", "parameters": { - "id": 1282, + "id": 1411, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1281, + "id": 1410, "name": "owner", "nodeType": "VariableDeclaration", - "scope": 1293, - "src": "4858:13:7", + "scope": 1422, + "src": "4858:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9143,10 +9143,10 @@ "typeString": "address" }, "typeName": { - "id": 1280, + "id": 1409, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4858:7:7", + "src": "4858:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9156,20 +9156,20 @@ "visibility": "internal" } ], - "src": "4857:15:7" + "src": "4857:15:9" }, "payable": false, "returnParameters": { - "id": 1285, + "id": 1414, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1284, + "id": 1413, "name": "", "nodeType": "VariableDeclaration", - "scope": 1293, - "src": "4918:4:7", + "scope": 1422, + "src": "4918:4:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9177,10 +9177,10 @@ "typeString": "bool" }, "typeName": { - "id": 1283, + "id": 1412, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "4918:4:7", + "src": "4918:4:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -9190,32 +9190,32 @@ "visibility": "internal" } ], - "src": "4917:6:7" + "src": "4917:6:9" }, - "scope": 1343, - "src": "4841:129:7", + "scope": 1472, + "src": "4841:129:9", "stateMutability": "view", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1341, + "id": 1470, "nodeType": "Block", - "src": "5133:377:7", + "src": "5133:377:9", "statements": [ { "assignments": [ - 1302 + 1431 ], "declarations": [ { "constant": false, - "id": 1302, + "id": 1431, "name": "array", "nodeType": "VariableDeclaration", - "scope": 1342, - "src": "5143:22:7", + "scope": 1471, + "src": "5143:22:9", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -9224,19 +9224,19 @@ }, "typeName": { "baseType": { - "id": 1300, + "id": 1429, "name": "address", "nodeType": "ElementaryTypeName", - "src": "5143:7:7", + "src": "5143:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1301, + "id": 1430, "length": null, "nodeType": "ArrayTypeName", - "src": "5143:9:7", + "src": "5143:9:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" @@ -9246,18 +9246,18 @@ "visibility": "internal" } ], - "id": 1308, + "id": 1437, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 1306, + "id": 1435, "name": "ownerCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 987, - "src": "5182:10:7", + "referencedDeclaration": 1116, + "src": "5182:10:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9271,39 +9271,39 @@ "typeString": "uint256" } ], - "id": 1305, + "id": 1434, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "NewExpression", - "src": "5168:13:7", + "src": "5168:13:9", "typeDescriptions": { "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_$", "typeString": "function (uint256) pure returns (address[] memory)" }, "typeName": { "baseType": { - "id": 1303, + "id": 1432, "name": "address", "nodeType": "ElementaryTypeName", - "src": "5172:7:7", + "src": "5172:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1304, + "id": 1433, "length": null, "nodeType": "ArrayTypeName", - "src": "5172:9:7", + "src": "5172:9:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" } } }, - "id": 1307, + "id": 1436, "isConstant": false, "isLValue": false, "isPure": false, @@ -9311,27 +9311,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5168:25:7", + "src": "5168:25:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory", "typeString": "address[] memory" } }, "nodeType": "VariableDeclarationStatement", - "src": "5143:50:7" + "src": "5143:50:9" }, { "assignments": [ - 1310 + 1439 ], "declarations": [ { "constant": false, - "id": 1310, + "id": 1439, "name": "index", "nodeType": "VariableDeclaration", - "scope": 1342, - "src": "5237:13:7", + "scope": 1471, + "src": "5237:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9339,10 +9339,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1309, + "id": 1438, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "5237:7:7", + "src": "5237:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9352,18 +9352,18 @@ "visibility": "internal" } ], - "id": 1312, + "id": 1441, "initialValue": { "argumentTypes": null, "hexValue": "30", - "id": 1311, + "id": 1440, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "5253:1:7", + "src": "5253:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -9372,20 +9372,20 @@ "value": "0" }, "nodeType": "VariableDeclarationStatement", - "src": "5237:17:7" + "src": "5237:17:9" }, { "assignments": [ - 1314 + 1443 ], "declarations": [ { "constant": false, - "id": 1314, + "id": 1443, "name": "currentOwner", "nodeType": "VariableDeclaration", - "scope": 1342, - "src": "5264:20:7", + "scope": 1471, + "src": "5264:20:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9393,10 +9393,10 @@ "typeString": "address" }, "typeName": { - "id": 1313, + "id": 1442, "name": "address", "nodeType": "ElementaryTypeName", - "src": "5264:7:7", + "src": "5264:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9406,31 +9406,31 @@ "visibility": "internal" } ], - "id": 1318, + "id": 1447, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1315, + "id": 1444, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 985, - "src": "5287:6:7", + "referencedDeclaration": 1114, + "src": "5287:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1317, + "id": 1446, "indexExpression": { "argumentTypes": null, - "id": 1316, + "id": 1445, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 981, - "src": "5294:15:7", + "referencedDeclaration": 1110, + "src": "5294:15:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9441,25 +9441,25 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "5287:23:7", + "src": "5287:23:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", - "src": "5264:46:7" + "src": "5264:46:9" }, { "body": { - "id": 1337, + "id": 1466, "nodeType": "Block", - "src": "5359:123:7", + "src": "5359:123:9", "statements": [ { "expression": { "argumentTypes": null, - "id": 1326, + "id": 1455, "isConstant": false, "isLValue": false, "isPure": false, @@ -9468,26 +9468,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1322, + "id": 1451, "name": "array", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1302, - "src": "5373:5:7", + "referencedDeclaration": 1431, + "src": "5373:5:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 1324, + "id": 1453, "indexExpression": { "argumentTypes": null, - "id": 1323, + "id": 1452, "name": "index", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1310, - "src": "5379:5:7", + "referencedDeclaration": 1439, + "src": "5379:5:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9498,7 +9498,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "5373:12:7", + "src": "5373:12:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9508,43 +9508,43 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1325, + "id": 1454, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1314, - "src": "5388:12:7", + "referencedDeclaration": 1443, + "src": "5388:12:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "5373:27:7", + "src": "5373:27:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1327, + "id": 1456, "nodeType": "ExpressionStatement", - "src": "5373:27:7" + "src": "5373:27:9" }, { "expression": { "argumentTypes": null, - "id": 1332, + "id": 1461, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1328, + "id": 1457, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1314, - "src": "5414:12:7", + "referencedDeclaration": 1443, + "src": "5414:12:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9556,26 +9556,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1329, + "id": 1458, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 985, - "src": "5429:6:7", + "referencedDeclaration": 1114, + "src": "5429:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1331, + "id": 1460, "indexExpression": { "argumentTypes": null, - "id": 1330, + "id": 1459, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1314, - "src": "5436:12:7", + "referencedDeclaration": 1443, + "src": "5436:12:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9586,26 +9586,26 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "5429:20:7", + "src": "5429:20:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "5414:35:7", + "src": "5414:35:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1333, + "id": 1462, "nodeType": "ExpressionStatement", - "src": "5414:35:7" + "src": "5414:35:9" }, { "expression": { "argumentTypes": null, - "id": 1335, + "id": 1464, "isConstant": false, "isLValue": false, "isPure": false, @@ -9613,15 +9613,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "5463:8:7", + "src": "5463:8:9", "subExpression": { "argumentTypes": null, - "id": 1334, + "id": 1463, "name": "index", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1310, - "src": "5463:5:7", + "referencedDeclaration": 1439, + "src": "5463:5:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9632,9 +9632,9 @@ "typeString": "uint256" } }, - "id": 1336, + "id": 1465, "nodeType": "ExpressionStatement", - "src": "5463:8:7" + "src": "5463:8:9" } ] }, @@ -9644,19 +9644,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1321, + "id": 1450, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1319, + "id": 1448, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1314, - "src": "5326:12:7", + "referencedDeclaration": 1443, + "src": "5326:12:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9666,50 +9666,50 @@ "operator": "!=", "rightExpression": { "argumentTypes": null, - "id": 1320, + "id": 1449, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 981, - "src": "5342:15:7", + "referencedDeclaration": 1110, + "src": "5342:15:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "5326:31:7", + "src": "5326:31:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 1338, + "id": 1467, "nodeType": "WhileStatement", - "src": "5320:162:7" + "src": "5320:162:9" }, { "expression": { "argumentTypes": null, - "id": 1339, + "id": 1468, "name": "array", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1302, - "src": "5498:5:7", + "referencedDeclaration": 1431, + "src": "5498:5:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "functionReturnParameters": 1298, - "id": 1340, + "functionReturnParameters": 1427, + "id": 1469, "nodeType": "Return", - "src": "5491:12:7" + "src": "5491:12:9" } ] }, "documentation": "@dev Returns array of owners.\n @return Array of Safe owners.", - "id": 1342, + "id": 1471, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -9717,23 +9717,23 @@ "name": "getOwners", "nodeType": "FunctionDefinition", "parameters": { - "id": 1294, + "id": 1423, "nodeType": "ParameterList", "parameters": [], - "src": "5070:2:7" + "src": "5070:2:9" }, "payable": false, "returnParameters": { - "id": 1298, + "id": 1427, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1297, + "id": 1426, "name": "", "nodeType": "VariableDeclaration", - "scope": 1342, - "src": "5118:9:7", + "scope": 1471, + "src": "5118:9:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9742,19 +9742,19 @@ }, "typeName": { "baseType": { - "id": 1295, + "id": 1424, "name": "address", "nodeType": "ElementaryTypeName", - "src": "5118:7:7", + "src": "5118:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1296, + "id": 1425, "length": null, "nodeType": "ArrayTypeName", - "src": "5118:9:7", + "src": "5118:9:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" @@ -9764,26 +9764,26 @@ "visibility": "internal" } ], - "src": "5117:11:7" + "src": "5117:11:9" }, - "scope": 1343, - "src": "5052:458:7", + "scope": 1472, + "src": "5052:458:9", "stateMutability": "view", "superFunction": null, "visibility": "public" } ], - "scope": 1344, - "src": "240:5272:7" + "scope": 1473, + "src": "240:5272:9" } ], - "src": "0:5513:7" + "src": "0:5513:9" }, "compiler": { "name": "solc", - "version": "0.4.23+commit.124ca40d.Emscripten.clang" + "version": "0.4.24+commit.e67f0147.Emscripten.clang" }, "networks": {}, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-16T10:51:14.752Z" + "updatedAt": "2018-05-27T11:12:45.581Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/PayingProxy.json b/safe-contracts/build/contracts/PayingProxy.json index 4c74b5b8..cc23c459 100644 --- a/safe-contracts/build/contracts/PayingProxy.json +++ b/safe-contracts/build/contracts/PayingProxy.json @@ -44,7 +44,11 @@ "type": "address" }, { - "name": "amount", + "name": "paymentToken", + "type": "address" + }, + { + "name": "payment", "type": "uint256" } ], @@ -58,40 +62,51 @@ "type": "fallback" } ], - "bytecode": "0x608060405234801561001057600080fd5b506040516102d13803806102d18339810180604052810190808051906020019092919080518201929190602001805190602001909291908051906020019092919050505083838160008173ffffffffffffffffffffffffffffffffffffffff161415151561007d57600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505060008151111561010a5773ffffffffffffffffffffffffffffffffffffffff60005416600080835160208501846127105a03f46040513d6000823e6000821415610106573d81fd5b5050505b50508173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610152573d6000803e3d6000fd5b505050505061016b806101666000396000f30060806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680634555d5c91461008b5780635c60da1b146100b6575b73ffffffffffffffffffffffffffffffffffffffff600054163660008037600080366000845af43d6000803e6000811415610086573d6000fd5b3d6000f35b34801561009757600080fd5b506100a061010d565b6040518082815260200191505060405180910390f35b3480156100c257600080fd5b506100cb610116565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60006002905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050905600a165627a7a723058204a5e06b82db5d9aabe30490b09e6366d2451ec220560baef426b0510057dd99b0029", - "deployedBytecode": "0x60806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680634555d5c91461008b5780635c60da1b146100b6575b73ffffffffffffffffffffffffffffffffffffffff600054163660008037600080366000845af43d6000803e6000811415610086573d6000fd5b3d6000f35b34801561009757600080fd5b506100a061010d565b6040518082815260200191505060405180910390f35b3480156100c257600080fd5b506100cb610116565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60006002905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050905600a165627a7a723058204a5e06b82db5d9aabe30490b09e6366d2451ec220560baef426b0510057dd99b0029", - "sourceMap": "414:457:11:-;;;675:194;8:9:-1;5:2;;;30:1;27;20:12;5:2;675:194:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;784:11;797;668::0;593:1:12;578:11;:16;;;;570:25;;;;;;;;618:11;605:10;;:24;;;;;;;;;;;;;;;;;;508:128;735:1:0;714:11;:18;:22;710:519;;;879:42;875:1;869:8;865:57;1043:1;1040;1026:11;1020:18;1013:4;1000:11;996:22;984:10;976:5;971:3;967:15;954:91;1079:4;1073:11;1124:14;1121:1;1116:3;1101:38;1171:1;1162:7;1159:14;1156:2;;;1188:14;1183:3;1176:27;1156:2;829:390;;;;610:625;;839:6:11;:15;;:23;855:6;839:23;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;839:23:11;675:194;;;;414:457;;;;;;", - "deployedSourceMap": "414:457:11:-;;;;;;;;;;;;;;;;;;;;;;;;;;915:42:12;911:1;905:8;901:57;990:14;987:1;984;971:34;1085:1;1082;1066:14;1063:1;1051:10;1046:3;1033:54;1121:16;1118:1;1115;1100:38;1166:1;1157:7;1154:14;1151:2;;;1181:16;1178:1;1171:27;1151:2;1223:16;1220:1;1213:27;1386:104;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1386:104:12;;;;;;;;;;;;;;;;;;;;;;;1262:118;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1262:118:12;;;;;;;;;;;;;;;;;;;;;;;;;;;1386:104;1452:7;1482:1;1475:8;;1386:104;:::o;1262:118::-;1333:7;1363:10;;;;;;;;;;;1356:17;;1262:118;:::o", - "source": "pragma solidity 0.4.23;\nimport \"./DelegateConstructorProxy.sol\";\n\n/// @title Paying Proxy - Generic proxy contract allows to execute all transactions applying the code of a master contract. It is possible to send along initialization data with the constructor. And sends funds after creation to a specified account.\n/// @author Stefan George - \n/// @author Richard Meissner - \ncontract PayingProxy is DelegateConstructorProxy {\n\n /// @dev Constructor function sets address of master copy contract.\n /// @param _masterCopy Master copy address.\n /// @param initializer Data used for a delegate call to initialize the contract.\n constructor(address _masterCopy, bytes initializer, address funder, uint256 amount) DelegateConstructorProxy(_masterCopy, initializer)\n public\n {\n funder.transfer(amount);\n }\n}\n", + "bytecode": "0x608060405234801561001057600080fd5b5060405161040a38038061040a833981018060405281019080805190602001909291908051820192919060200180519060200190929190805190602001909291908051906020019092919050505084848160008173ffffffffffffffffffffffffffffffffffffffff161415151561008757600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506000815111156101145773ffffffffffffffffffffffffffffffffffffffff60005416600080835160208501846127105a03f46040513d6000823e6000821415610110573d81fd5b5050505b5050600081111561028b57600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156101a0578273ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561019a573d6000803e3d6000fd5b5061028a565b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561024357600080fd5b505af1158015610257573d6000803e3d6000fd5b505050506040513d602081101561026d57600080fd5b8101908080519060200190929190505050151561028957600080fd5b5b5b505050505061016b8061029f6000396000f30060806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680634555d5c91461008b5780635c60da1b146100b6575b73ffffffffffffffffffffffffffffffffffffffff600054163660008037600080366000845af43d6000803e6000811415610086573d6000fd5b3d6000f35b34801561009757600080fd5b506100a061010d565b6040518082815260200191505060405180910390f35b3480156100c257600080fd5b506100cb610116565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60006002905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050905600a165627a7a72305820c6b5ccee92e07d7ace7597f14eb09050cef9e7752ac4efc079975eb065e226060029", + "deployedBytecode": "0x60806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680634555d5c91461008b5780635c60da1b146100b6575b73ffffffffffffffffffffffffffffffffffffffff600054163660008037600080366000845af43d6000803e6000811415610086573d6000fd5b3d6000f35b34801561009757600080fd5b506100a061010d565b6040518082815260200191505060405180910390f35b3480156100c257600080fd5b506100cb610116565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60006002905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050905600a165627a7a72305820c6b5ccee92e07d7ace7597f14eb09050cef9e7752ac4efc079975eb065e226060029", + "sourceMap": "452:905:10:-;;;924:431;8:9:-1;5:2;;;30:1;27;20:12;5:2;924:431:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1065:11;1078;668::0;593:1:11;578:11;:16;;;;570:25;;;;;;;;618:11;605:10;;:24;;;;;;;;;;;;;;;;;;508:128;735:1:0;714:11;:18;:22;710:519;;;879:42;875:1;869:8;865:57;1043:1;1040;1026:11;1020:18;1013:4;1000:11;996:22;984:10;976:5;971:3;967:15;954:91;1079:4;1073:11;1124:14;1121:1;1116:3;1101:38;1171:1;1162:7;1159:14;1156:2;;;1188:14;1183:3;1176:27;1156:2;829:390;;;;610:625;;1134:1:10;1124:7;:11;1120:228;;;1179:1;1155:26;;:12;:26;;;1151:187;;;1201:6;:15;;:24;1217:7;1201:24;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1201:24:10;1151:187;;;1283:12;1272:33;;;1306:6;1314:7;1272:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1272:50:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1272:50:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1272:50:10;;;;;;;;;;;;;;;;1264:59;;;;;;;;1151:187;1120:228;924:431;;;;;452:905;;;;;;", + "deployedSourceMap": "452:905:10:-;;;;;;;;;;;;;;;;;;;;;;;;;;915:42:11;911:1;905:8;901:57;990:14;987:1;984;971:34;1085:1;1082;1066:14;1063:1;1051:10;1046:3;1033:54;1121:16;1118:1;1115;1100:38;1166:1;1157:7;1154:14;1151:2;;;1181:16;1178:1;1171:27;1151:2;1223:16;1220:1;1213:27;1386:104;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1386:104:11;;;;;;;;;;;;;;;;;;;;;;;1262:118;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1262:118:11;;;;;;;;;;;;;;;;;;;;;;;;;;;1386:104;1452:7;1482:1;1475:8;;1386:104;:::o;1262:118::-;1333:7;1363:10;;;;;;;;;;;1356:17;;1262:118;:::o", + "source": "pragma solidity 0.4.24;\nimport \"./DelegateConstructorProxy.sol\";\nimport \"./interfaces/ERC20Token.sol\";\n\n/// @title Paying Proxy - Generic proxy contract allows to execute all transactions applying the code of a master contract. It is possible to send along initialization data with the constructor. And sends funds after creation to a specified account.\n/// @author Stefan George - \n/// @author Richard Meissner - \ncontract PayingProxy is DelegateConstructorProxy {\n\n /// @dev Constructor function sets address of master copy contract.\n /// @param _masterCopy Master copy address.\n /// @param initializer Data used for a delegate call to initialize the contract.\n /// @param funder Address that should be paid for the execution of this call\n /// @param paymentToken Token that should be used for the payment (0 is ETH)\n /// @param payment Value that should be paid\n constructor(address _masterCopy, bytes initializer, address funder, address paymentToken, uint256 payment) \n DelegateConstructorProxy(_masterCopy, initializer)\n public\n {\n if (payment > 0) {\n if (paymentToken == address(0)) {\n funder.transfer(payment);\n } else {\n require(ERC20Token(paymentToken).transfer(funder, payment));\n }\n } \n }\n}\n", "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/PayingProxy.sol", "ast": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/PayingProxy.sol", "exportedSymbols": { "PayingProxy": [ - 1466 + 1526 ] }, - "id": 1467, + "id": 1527, "nodeType": "SourceUnit", "nodes": [ { - "id": 1440, + "id": 1474, "literals": [ "solidity", "0.4", - ".23" + ".24" ], "nodeType": "PragmaDirective", - "src": "0:23:11" + "src": "0:23:10" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/DelegateConstructorProxy.sol", "file": "./DelegateConstructorProxy.sol", - "id": 1441, + "id": 1475, "nodeType": "ImportDirective", - "scope": 1467, + "scope": 1527, "sourceUnit": 24, - "src": "24:40:11", + "src": "24:40:10", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/interfaces/ERC20Token.sol", + "file": "./interfaces/ERC20Token.sol", + "id": 1476, + "nodeType": "ImportDirective", + "scope": 1527, + "sourceUnit": 1686, + "src": "65:37:10", "symbolAliases": [], "unitAlias": "" }, @@ -101,117 +116,449 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 1442, + "id": 1477, "name": "DelegateConstructorProxy", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 23, - "src": "438:24:11", + "src": "476:24:10", "typeDescriptions": { "typeIdentifier": "t_contract$_DelegateConstructorProxy_$23", "typeString": "contract DelegateConstructorProxy" } }, - "id": 1443, + "id": 1478, "nodeType": "InheritanceSpecifier", - "src": "438:24:11" + "src": "476:24:10" } ], "contractDependencies": [ 23, - 1508 + 1568 ], "contractKind": "contract", "documentation": "@title Paying Proxy - Generic proxy contract allows to execute all transactions applying the code of a master contract. It is possible to send along initialization data with the constructor. And sends funds after creation to a specified account.\n @author Stefan George - \n @author Richard Meissner - ", "fullyImplemented": true, - "id": 1466, + "id": 1526, "linearizedBaseContracts": [ - 1466, + 1526, 23, - 1508 + 1568 ], "name": "PayingProxy", "nodeType": "ContractDefinition", "nodes": [ { "body": { - "id": 1464, + "id": 1524, "nodeType": "Block", - "src": "829:40:11", + "src": "1110:245:10", "statements": [ { - "expression": { + "condition": { "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1461, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1451, - "src": "855:6:11", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "argumentTypes": null, - "id": 1458, - "name": "funder", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1449, - "src": "839:6:11", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 1460, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "transfer", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "839:15:11", - "typeDescriptions": { - "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$", - "typeString": "function (uint256)" - } + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, - "id": 1462, + "id": 1497, "isConstant": false, "isLValue": false, "isPure": false, - "kind": "functionCall", "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "839:23:11", + "leftExpression": { + "argumentTypes": null, + "id": 1495, + "name": "payment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1488, + "src": "1124:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1496, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1134:1:10", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1124:11:10", "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - "id": 1463, - "nodeType": "ExpressionStatement", - "src": "839:23:11" + "falseBody": null, + "id": 1523, + "nodeType": "IfStatement", + "src": "1120:228:10", + "trueBody": { + "id": 1522, + "nodeType": "Block", + "src": "1137:211:10", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1502, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1498, + "name": "paymentToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1486, + "src": "1155:12:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 1500, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1179:1:10", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 1499, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1171:7:10", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 1501, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1171:10:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "1155:26:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 1520, + "nodeType": "Block", + "src": "1246:92:10", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1515, + "name": "funder", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1484, + "src": "1306:6:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1516, + "name": "payment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1488, + "src": "1314:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1512, + "name": "paymentToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1486, + "src": "1283:12:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1511, + "name": "ERC20Token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1685, + "src": "1272:10:10", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC20Token_$1685_$", + "typeString": "type(contract ERC20Token)" + } + }, + "id": 1513, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1272:24:10", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Token_$1685", + "typeString": "contract ERC20Token" + } + }, + "id": 1514, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 1639, + "src": "1272:33:10", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + "id": 1517, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1272:50:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1510, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2601, + 2602 + ], + "referencedDeclaration": 2601, + "src": "1264:7:10", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1518, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1264:59:10", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1519, + "nodeType": "ExpressionStatement", + "src": "1264:59:10" + } + ] + }, + "id": 1521, + "nodeType": "IfStatement", + "src": "1151:187:10", + "trueBody": { + "id": 1509, + "nodeType": "Block", + "src": "1183:57:10", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1506, + "name": "payment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1488, + "src": "1217:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 1503, + "name": "funder", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1484, + "src": "1201:6:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1505, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transfer", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1201:15:10", + "typeDescriptions": { + "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 1507, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1201:24:10", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1508, + "nodeType": "ExpressionStatement", + "src": "1201:24:10" + } + ] + } + } + ] + } } ] }, - "documentation": "@dev Constructor function sets address of master copy contract.\n @param _masterCopy Master copy address.\n @param initializer Data used for a delegate call to initialize the contract.", - "id": 1465, + "documentation": "@dev Constructor function sets address of master copy contract.\n @param _masterCopy Master copy address.\n @param initializer Data used for a delegate call to initialize the contract.\n @param funder Address that should be paid for the execution of this call\n @param paymentToken Token that should be used for the payment (0 is ETH)\n @param payment Value that should be paid", + "id": 1525, "implemented": true, "isConstructor": true, "isDeclaredConst": false, @@ -220,12 +567,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1454, + "id": 1491, "name": "_masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1445, - "src": "784:11:11", + "referencedDeclaration": 1480, + "src": "1065:11:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -233,49 +580,49 @@ }, { "argumentTypes": null, - "id": 1455, + "id": 1492, "name": "initializer", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1447, - "src": "797:11:11", + "referencedDeclaration": 1482, + "src": "1078:11:10", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } } ], - "id": 1456, + "id": 1493, "modifierName": { "argumentTypes": null, - "id": 1453, + "id": 1490, "name": "DelegateConstructorProxy", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 23, - "src": "759:24:11", + "src": "1040:24:10", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_DelegateConstructorProxy_$23_$", "typeString": "type(contract DelegateConstructorProxy)" } }, "nodeType": "ModifierInvocation", - "src": "759:50:11" + "src": "1040:50:10" } ], "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 1452, + "id": 1489, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1445, + "id": 1480, "name": "_masterCopy", "nodeType": "VariableDeclaration", - "scope": 1465, - "src": "687:19:11", + "scope": 1525, + "src": "936:19:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -283,10 +630,10 @@ "typeString": "address" }, "typeName": { - "id": 1444, + "id": 1479, "name": "address", "nodeType": "ElementaryTypeName", - "src": "687:7:11", + "src": "936:7:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -297,11 +644,11 @@ }, { "constant": false, - "id": 1447, + "id": 1482, "name": "initializer", "nodeType": "VariableDeclaration", - "scope": 1465, - "src": "708:17:11", + "scope": 1525, + "src": "957:17:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -309,10 +656,10 @@ "typeString": "bytes" }, "typeName": { - "id": 1446, + "id": 1481, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "708:5:11", + "src": "957:5:10", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -323,11 +670,11 @@ }, { "constant": false, - "id": 1449, + "id": 1484, "name": "funder", "nodeType": "VariableDeclaration", - "scope": 1465, - "src": "727:14:11", + "scope": 1525, + "src": "976:14:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -335,10 +682,10 @@ "typeString": "address" }, "typeName": { - "id": 1448, + "id": 1483, "name": "address", "nodeType": "ElementaryTypeName", - "src": "727:7:11", + "src": "976:7:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -349,11 +696,37 @@ }, { "constant": false, - "id": 1451, - "name": "amount", + "id": 1486, + "name": "paymentToken", "nodeType": "VariableDeclaration", - "scope": 1465, - "src": "743:14:11", + "scope": 1525, + "src": "992:20:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1485, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "992:7:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1488, + "name": "payment", + "nodeType": "VariableDeclaration", + "scope": 1525, + "src": "1014:15:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -361,10 +734,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1450, + "id": 1487, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "743:7:11", + "src": "1014:7:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -374,56 +747,67 @@ "visibility": "internal" } ], - "src": "686:72:11" + "src": "935:95:10" }, "payable": false, "returnParameters": { - "id": 1457, + "id": 1494, "nodeType": "ParameterList", "parameters": [], - "src": "829:0:11" + "src": "1110:0:10" }, - "scope": 1466, - "src": "675:194:11", + "scope": 1526, + "src": "924:431:10", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" } ], - "scope": 1467, - "src": "414:457:11" + "scope": 1527, + "src": "452:905:10" } ], - "src": "0:872:11" + "src": "0:1358:10" }, "legacyAST": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/PayingProxy.sol", "exportedSymbols": { "PayingProxy": [ - 1466 + 1526 ] }, - "id": 1467, + "id": 1527, "nodeType": "SourceUnit", "nodes": [ { - "id": 1440, + "id": 1474, "literals": [ "solidity", "0.4", - ".23" + ".24" ], "nodeType": "PragmaDirective", - "src": "0:23:11" + "src": "0:23:10" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/DelegateConstructorProxy.sol", "file": "./DelegateConstructorProxy.sol", - "id": 1441, + "id": 1475, "nodeType": "ImportDirective", - "scope": 1467, + "scope": 1527, "sourceUnit": 24, - "src": "24:40:11", + "src": "24:40:10", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/interfaces/ERC20Token.sol", + "file": "./interfaces/ERC20Token.sol", + "id": 1476, + "nodeType": "ImportDirective", + "scope": 1527, + "sourceUnit": 1686, + "src": "65:37:10", "symbolAliases": [], "unitAlias": "" }, @@ -433,117 +817,449 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 1442, + "id": 1477, "name": "DelegateConstructorProxy", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 23, - "src": "438:24:11", + "src": "476:24:10", "typeDescriptions": { "typeIdentifier": "t_contract$_DelegateConstructorProxy_$23", "typeString": "contract DelegateConstructorProxy" } }, - "id": 1443, + "id": 1478, "nodeType": "InheritanceSpecifier", - "src": "438:24:11" + "src": "476:24:10" } ], "contractDependencies": [ 23, - 1508 + 1568 ], "contractKind": "contract", "documentation": "@title Paying Proxy - Generic proxy contract allows to execute all transactions applying the code of a master contract. It is possible to send along initialization data with the constructor. And sends funds after creation to a specified account.\n @author Stefan George - \n @author Richard Meissner - ", "fullyImplemented": true, - "id": 1466, + "id": 1526, "linearizedBaseContracts": [ - 1466, + 1526, 23, - 1508 + 1568 ], "name": "PayingProxy", "nodeType": "ContractDefinition", "nodes": [ { "body": { - "id": 1464, + "id": 1524, "nodeType": "Block", - "src": "829:40:11", + "src": "1110:245:10", "statements": [ { - "expression": { + "condition": { "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1461, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1451, - "src": "855:6:11", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "argumentTypes": null, - "id": 1458, - "name": "funder", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1449, - "src": "839:6:11", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 1460, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "transfer", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "839:15:11", - "typeDescriptions": { - "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$", - "typeString": "function (uint256)" - } + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, - "id": 1462, + "id": 1497, "isConstant": false, "isLValue": false, "isPure": false, - "kind": "functionCall", "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "839:23:11", + "leftExpression": { + "argumentTypes": null, + "id": 1495, + "name": "payment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1488, + "src": "1124:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1496, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1134:1:10", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1124:11:10", "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - "id": 1463, - "nodeType": "ExpressionStatement", - "src": "839:23:11" + "falseBody": null, + "id": 1523, + "nodeType": "IfStatement", + "src": "1120:228:10", + "trueBody": { + "id": 1522, + "nodeType": "Block", + "src": "1137:211:10", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1502, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1498, + "name": "paymentToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1486, + "src": "1155:12:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 1500, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1179:1:10", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 1499, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1171:7:10", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 1501, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1171:10:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "1155:26:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 1520, + "nodeType": "Block", + "src": "1246:92:10", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1515, + "name": "funder", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1484, + "src": "1306:6:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1516, + "name": "payment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1488, + "src": "1314:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1512, + "name": "paymentToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1486, + "src": "1283:12:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1511, + "name": "ERC20Token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1685, + "src": "1272:10:10", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC20Token_$1685_$", + "typeString": "type(contract ERC20Token)" + } + }, + "id": 1513, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1272:24:10", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Token_$1685", + "typeString": "contract ERC20Token" + } + }, + "id": 1514, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 1639, + "src": "1272:33:10", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + "id": 1517, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1272:50:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1510, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2601, + 2602 + ], + "referencedDeclaration": 2601, + "src": "1264:7:10", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1518, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1264:59:10", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1519, + "nodeType": "ExpressionStatement", + "src": "1264:59:10" + } + ] + }, + "id": 1521, + "nodeType": "IfStatement", + "src": "1151:187:10", + "trueBody": { + "id": 1509, + "nodeType": "Block", + "src": "1183:57:10", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1506, + "name": "payment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1488, + "src": "1217:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 1503, + "name": "funder", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1484, + "src": "1201:6:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1505, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transfer", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1201:15:10", + "typeDescriptions": { + "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 1507, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1201:24:10", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1508, + "nodeType": "ExpressionStatement", + "src": "1201:24:10" + } + ] + } + } + ] + } } ] }, - "documentation": "@dev Constructor function sets address of master copy contract.\n @param _masterCopy Master copy address.\n @param initializer Data used for a delegate call to initialize the contract.", - "id": 1465, + "documentation": "@dev Constructor function sets address of master copy contract.\n @param _masterCopy Master copy address.\n @param initializer Data used for a delegate call to initialize the contract.\n @param funder Address that should be paid for the execution of this call\n @param paymentToken Token that should be used for the payment (0 is ETH)\n @param payment Value that should be paid", + "id": 1525, "implemented": true, "isConstructor": true, "isDeclaredConst": false, @@ -552,12 +1268,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1454, + "id": 1491, "name": "_masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1445, - "src": "784:11:11", + "referencedDeclaration": 1480, + "src": "1065:11:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -565,49 +1281,49 @@ }, { "argumentTypes": null, - "id": 1455, + "id": 1492, "name": "initializer", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1447, - "src": "797:11:11", + "referencedDeclaration": 1482, + "src": "1078:11:10", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } } ], - "id": 1456, + "id": 1493, "modifierName": { "argumentTypes": null, - "id": 1453, + "id": 1490, "name": "DelegateConstructorProxy", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 23, - "src": "759:24:11", + "src": "1040:24:10", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_DelegateConstructorProxy_$23_$", "typeString": "type(contract DelegateConstructorProxy)" } }, "nodeType": "ModifierInvocation", - "src": "759:50:11" + "src": "1040:50:10" } ], "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 1452, + "id": 1489, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1445, + "id": 1480, "name": "_masterCopy", "nodeType": "VariableDeclaration", - "scope": 1465, - "src": "687:19:11", + "scope": 1525, + "src": "936:19:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -615,10 +1331,10 @@ "typeString": "address" }, "typeName": { - "id": 1444, + "id": 1479, "name": "address", "nodeType": "ElementaryTypeName", - "src": "687:7:11", + "src": "936:7:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -629,11 +1345,11 @@ }, { "constant": false, - "id": 1447, + "id": 1482, "name": "initializer", "nodeType": "VariableDeclaration", - "scope": 1465, - "src": "708:17:11", + "scope": 1525, + "src": "957:17:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -641,10 +1357,10 @@ "typeString": "bytes" }, "typeName": { - "id": 1446, + "id": 1481, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "708:5:11", + "src": "957:5:10", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -655,11 +1371,11 @@ }, { "constant": false, - "id": 1449, + "id": 1484, "name": "funder", "nodeType": "VariableDeclaration", - "scope": 1465, - "src": "727:14:11", + "scope": 1525, + "src": "976:14:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -667,10 +1383,10 @@ "typeString": "address" }, "typeName": { - "id": 1448, + "id": 1483, "name": "address", "nodeType": "ElementaryTypeName", - "src": "727:7:11", + "src": "976:7:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -681,11 +1397,37 @@ }, { "constant": false, - "id": 1451, - "name": "amount", + "id": 1486, + "name": "paymentToken", "nodeType": "VariableDeclaration", - "scope": 1465, - "src": "743:14:11", + "scope": 1525, + "src": "992:20:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1485, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "992:7:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1488, + "name": "payment", + "nodeType": "VariableDeclaration", + "scope": 1525, + "src": "1014:15:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -693,10 +1435,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1450, + "id": 1487, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "743:7:11", + "src": "1014:7:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -706,33 +1448,33 @@ "visibility": "internal" } ], - "src": "686:72:11" + "src": "935:95:10" }, "payable": false, "returnParameters": { - "id": 1457, + "id": 1494, "nodeType": "ParameterList", "parameters": [], - "src": "829:0:11" + "src": "1110:0:10" }, - "scope": 1466, - "src": "675:194:11", + "scope": 1526, + "src": "924:431:10", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" } ], - "scope": 1467, - "src": "414:457:11" + "scope": 1527, + "src": "452:905:10" } ], - "src": "0:872:11" + "src": "0:1358:10" }, "compiler": { "name": "solc", - "version": "0.4.23+commit.124ca40d.Emscripten.clang" + "version": "0.4.24+commit.e67f0147.Emscripten.clang" }, "networks": {}, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-10T10:43:07.901Z" + "updatedAt": "2018-05-27T11:12:45.583Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/Proxy.json b/safe-contracts/build/contracts/Proxy.json index 02dd71f4..aae27a07 100644 --- a/safe-contracts/build/contracts/Proxy.json +++ b/safe-contracts/build/contracts/Proxy.json @@ -46,31 +46,31 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b506040516020806102148339810180604052810190808051906020019092919050505060008173ffffffffffffffffffffffffffffffffffffffff161415151561005957600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505061016b806100a96000396000f30060806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680634555d5c91461008b5780635c60da1b146100b6575b73ffffffffffffffffffffffffffffffffffffffff600054163660008037600080366000845af43d6000803e6000811415610086573d6000fd5b3d6000f35b34801561009757600080fd5b506100a061010d565b6040518082815260200191505060405180910390f35b3480156100c257600080fd5b506100cb610116565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60006002905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050905600a165627a7a723058209594d3f13f6fbad0d5e33f423014061ae7898100636a8b854618092ea85c15e90029", - "deployedBytecode": "0x60806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680634555d5c91461008b5780635c60da1b146100b6575b73ffffffffffffffffffffffffffffffffffffffff600054163660008037600080366000845af43d6000803e6000811415610086573d6000fd5b3d6000f35b34801561009757600080fd5b506100a061010d565b6040518082815260200191505060405180910390f35b3480156100c257600080fd5b506100cb610116565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60006002905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050905600a165627a7a723058209594d3f13f6fbad0d5e33f423014061ae7898100636a8b854618092ea85c15e90029", - "sourceMap": "190:1302:12:-;;;508:128;8:9:-1;5:2;;;30:1;27;20:12;5:2;508:128:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;593:1;578:11;:16;;;;570:25;;;;;;;;618:11;605:10;;:24;;;;;;;;;;;;;;;;;;508:128;190:1302;;;;;;", - "deployedSourceMap": "190:1302:12:-;;;;;;;;;;;;;;;;;;;;;;;;;;915:42;911:1;905:8;901:57;990:14;987:1;984;971:34;1085:1;1082;1066:14;1063:1;1051:10;1046:3;1033:54;1121:16;1118:1;1115;1100:38;1166:1;1157:7;1154:14;1151:2;;;1181:16;1178:1;1171:27;1151:2;1223:16;1220:1;1213:27;1386:104;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1386:104:12;;;;;;;;;;;;;;;;;;;;;;;1262:118;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1262:118:12;;;;;;;;;;;;;;;;;;;;;;;;;;;1386:104;1452:7;1482:1;1475:8;;1386:104;:::o;1262:118::-;1333:7;1363:10;;;;;;;;;;;1356:17;;1262:118;:::o", - "source": "pragma solidity 0.4.23;\n\n\n/// @title Proxy - Generic proxy contract allows to execute all transactions applying the code of a master contract.\n/// @author Stefan George - \ncontract Proxy {\n\n // masterCopy always needs to be first declared variable, to ensure that it is at the same location in the contracts to which calls are delegated.\n address masterCopy;\n\n /// @dev Constructor function sets address of master copy contract.\n /// @param _masterCopy Master copy address.\n constructor(address _masterCopy)\n public\n {\n require(_masterCopy != 0);\n masterCopy = _masterCopy;\n }\n\n /// @dev Fallback function forwards all transactions and returns all received return data.\n function ()\n external\n payable\n {\n // solium-disable-next-line security/no-inline-assembly\n assembly {\n let masterCopy := and(sload(0), 0xffffffffffffffffffffffffffffffffffffffff)\n calldatacopy(0, 0, calldatasize())\n let success := delegatecall(gas, masterCopy, 0, calldatasize(), 0, 0)\n returndatacopy(0, 0, returndatasize())\n if eq(success, 0) { revert(0, returndatasize()) }\n return(0, returndatasize())\n }\n }\n\n function implementation()\n public\n view\n returns (address)\n {\n return masterCopy;\n }\n\n function proxyType()\n public\n pure\n returns (uint256)\n {\n return 2;\n }\n}\n", + "bytecode": "0x608060405234801561001057600080fd5b506040516020806102148339810180604052810190808051906020019092919050505060008173ffffffffffffffffffffffffffffffffffffffff161415151561005957600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505061016b806100a96000396000f30060806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680634555d5c91461008b5780635c60da1b146100b6575b73ffffffffffffffffffffffffffffffffffffffff600054163660008037600080366000845af43d6000803e6000811415610086573d6000fd5b3d6000f35b34801561009757600080fd5b506100a061010d565b6040518082815260200191505060405180910390f35b3480156100c257600080fd5b506100cb610116565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60006002905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050905600a165627a7a72305820cd7d1e9dd84eb221f79b1c8f72a39fad7d9f8ab7239d25c1fc563147abcaf4150029", + "deployedBytecode": "0x60806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680634555d5c91461008b5780635c60da1b146100b6575b73ffffffffffffffffffffffffffffffffffffffff600054163660008037600080366000845af43d6000803e6000811415610086573d6000fd5b3d6000f35b34801561009757600080fd5b506100a061010d565b6040518082815260200191505060405180910390f35b3480156100c257600080fd5b506100cb610116565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60006002905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050905600a165627a7a72305820cd7d1e9dd84eb221f79b1c8f72a39fad7d9f8ab7239d25c1fc563147abcaf4150029", + "sourceMap": "190:1302:11:-;;;508:128;8:9:-1;5:2;;;30:1;27;20:12;5:2;508:128:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;593:1;578:11;:16;;;;570:25;;;;;;;;618:11;605:10;;:24;;;;;;;;;;;;;;;;;;508:128;190:1302;;;;;;", + "deployedSourceMap": "190:1302:11:-;;;;;;;;;;;;;;;;;;;;;;;;;;915:42;911:1;905:8;901:57;990:14;987:1;984;971:34;1085:1;1082;1066:14;1063:1;1051:10;1046:3;1033:54;1121:16;1118:1;1115;1100:38;1166:1;1157:7;1154:14;1151:2;;;1181:16;1178:1;1171:27;1151:2;1223:16;1220:1;1213:27;1386:104;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1386:104:11;;;;;;;;;;;;;;;;;;;;;;;1262:118;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1262:118:11;;;;;;;;;;;;;;;;;;;;;;;;;;;1386:104;1452:7;1482:1;1475:8;;1386:104;:::o;1262:118::-;1333:7;1363:10;;;;;;;;;;;1356:17;;1262:118;:::o", + "source": "pragma solidity 0.4.24;\n\n\n/// @title Proxy - Generic proxy contract allows to execute all transactions applying the code of a master contract.\n/// @author Stefan George - \ncontract Proxy {\n\n // masterCopy always needs to be first declared variable, to ensure that it is at the same location in the contracts to which calls are delegated.\n address masterCopy;\n\n /// @dev Constructor function sets address of master copy contract.\n /// @param _masterCopy Master copy address.\n constructor(address _masterCopy)\n public\n {\n require(_masterCopy != 0);\n masterCopy = _masterCopy;\n }\n\n /// @dev Fallback function forwards all transactions and returns all received return data.\n function ()\n external\n payable\n {\n // solium-disable-next-line security/no-inline-assembly\n assembly {\n let masterCopy := and(sload(0), 0xffffffffffffffffffffffffffffffffffffffff)\n calldatacopy(0, 0, calldatasize())\n let success := delegatecall(gas, masterCopy, 0, calldatasize(), 0, 0)\n returndatacopy(0, 0, returndatasize())\n if eq(success, 0) { revert(0, returndatasize()) }\n return(0, returndatasize())\n }\n }\n\n function implementation()\n public\n view\n returns (address)\n {\n return masterCopy;\n }\n\n function proxyType()\n public\n pure\n returns (uint256)\n {\n return 2;\n }\n}\n", "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Proxy.sol", "ast": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Proxy.sol", "exportedSymbols": { "Proxy": [ - 1508 + 1568 ] }, - "id": 1509, + "id": 1569, "nodeType": "SourceUnit", "nodes": [ { - "id": 1468, + "id": 1528, "literals": [ "solidity", "0.4", - ".23" + ".24" ], "nodeType": "PragmaDirective", - "src": "0:23:12" + "src": "0:23:11" }, { "baseContracts": [], @@ -78,20 +78,20 @@ "contractKind": "contract", "documentation": "@title Proxy - Generic proxy contract allows to execute all transactions applying the code of a master contract.\n @author Stefan George - ", "fullyImplemented": true, - "id": 1508, + "id": 1568, "linearizedBaseContracts": [ - 1508 + 1568 ], "name": "Proxy", "nodeType": "ContractDefinition", "nodes": [ { "constant": false, - "id": 1470, + "id": 1530, "name": "masterCopy", "nodeType": "VariableDeclaration", - "scope": 1508, - "src": "363:18:12", + "scope": 1568, + "src": "363:18:11", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -99,10 +99,10 @@ "typeString": "address" }, "typeName": { - "id": 1469, + "id": 1529, "name": "address", "nodeType": "ElementaryTypeName", - "src": "363:7:12", + "src": "363:7:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -113,9 +113,9 @@ }, { "body": { - "id": 1485, + "id": 1545, "nodeType": "Block", - "src": "560:76:12", + "src": "560:76:11", "statements": [ { "expression": { @@ -127,19 +127,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1478, + "id": 1538, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1476, + "id": 1536, "name": "_masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1472, - "src": "578:11:12", + "referencedDeclaration": 1532, + "src": "578:11:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -150,14 +150,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1477, + "id": 1537, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "593:1:12", + "src": "593:1:11", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -165,7 +165,7 @@ }, "value": "0" }, - "src": "578:16:12", + "src": "578:16:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -179,21 +179,21 @@ "typeString": "bool" } ], - "id": 1475, + "id": 1535, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2468, - 2469 + 2601, + 2602 ], - "referencedDeclaration": 2468, - "src": "570:7:12", + "referencedDeclaration": 2601, + "src": "570:7:11", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1479, + "id": 1539, "isConstant": false, "isLValue": false, "isPure": false, @@ -201,32 +201,32 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "570:25:12", + "src": "570:25:11", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1480, + "id": 1540, "nodeType": "ExpressionStatement", - "src": "570:25:12" + "src": "570:25:11" }, { "expression": { "argumentTypes": null, - "id": 1483, + "id": 1543, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1481, + "id": 1541, "name": "masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1470, - "src": "605:10:12", + "referencedDeclaration": 1530, + "src": "605:10:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -236,31 +236,31 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1482, + "id": 1542, "name": "_masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1472, - "src": "618:11:12", + "referencedDeclaration": 1532, + "src": "618:11:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "605:24:12", + "src": "605:24:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1484, + "id": 1544, "nodeType": "ExpressionStatement", - "src": "605:24:12" + "src": "605:24:11" } ] }, "documentation": "@dev Constructor function sets address of master copy contract.\n @param _masterCopy Master copy address.", - "id": 1486, + "id": 1546, "implemented": true, "isConstructor": true, "isDeclaredConst": false, @@ -268,16 +268,16 @@ "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 1473, + "id": 1533, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1472, + "id": 1532, "name": "_masterCopy", "nodeType": "VariableDeclaration", - "scope": 1486, - "src": "520:19:12", + "scope": 1546, + "src": "520:19:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -285,10 +285,10 @@ "typeString": "address" }, "typeName": { - "id": 1471, + "id": 1531, "name": "address", "nodeType": "ElementaryTypeName", - "src": "520:7:12", + "src": "520:7:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -298,38 +298,38 @@ "visibility": "internal" } ], - "src": "519:21:12" + "src": "519:21:11" }, "payable": false, "returnParameters": { - "id": 1474, + "id": 1534, "nodeType": "ParameterList", "parameters": [], - "src": "560:0:12" + "src": "560:0:11" }, - "scope": 1508, - "src": "508:128:12", + "scope": 1568, + "src": "508:128:11", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1490, + "id": 1550, "nodeType": "Block", - "src": "786:470:12", + "src": "786:470:11", "statements": [ { "externalReferences": [], - "id": 1489, + "id": 1549, "nodeType": "InlineAssembly", "operations": "{\n let masterCopy := and(sload(0), 0xffffffffffffffffffffffffffffffffffffffff)\n calldatacopy(0, 0, calldatasize())\n let success := delegatecall(gas(), masterCopy, 0, calldatasize(), 0, 0)\n returndatacopy(0, 0, returndatasize())\n if eq(success, 0)\n {\n revert(0, returndatasize())\n }\n return(0, returndatasize())\n}", - "src": "860:396:12" + "src": "860:396:11" } ] }, "documentation": "@dev Fallback function forwards all transactions and returns all received return data.", - "id": 1491, + "id": 1551, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -337,53 +337,53 @@ "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 1487, + "id": 1547, "nodeType": "ParameterList", "parameters": [], - "src": "746:2:12" + "src": "746:2:11" }, "payable": true, "returnParameters": { - "id": 1488, + "id": 1548, "nodeType": "ParameterList", "parameters": [], - "src": "786:0:12" + "src": "786:0:11" }, - "scope": 1508, - "src": "737:519:12", + "scope": 1568, + "src": "737:519:11", "stateMutability": "payable", "superFunction": null, "visibility": "external" }, { "body": { - "id": 1498, + "id": 1558, "nodeType": "Block", - "src": "1346:34:12", + "src": "1346:34:11", "statements": [ { "expression": { "argumentTypes": null, - "id": 1496, + "id": 1556, "name": "masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1470, - "src": "1363:10:12", + "referencedDeclaration": 1530, + "src": "1363:10:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "functionReturnParameters": 1495, - "id": 1497, + "functionReturnParameters": 1555, + "id": 1557, "nodeType": "Return", - "src": "1356:17:12" + "src": "1356:17:11" } ] }, "documentation": null, - "id": 1499, + "id": 1559, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -391,23 +391,23 @@ "name": "implementation", "nodeType": "FunctionDefinition", "parameters": { - "id": 1492, + "id": 1552, "nodeType": "ParameterList", "parameters": [], - "src": "1285:2:12" + "src": "1285:2:11" }, "payable": false, "returnParameters": { - "id": 1495, + "id": 1555, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1494, + "id": 1554, "name": "", "nodeType": "VariableDeclaration", - "scope": 1499, - "src": "1333:7:12", + "scope": 1559, + "src": "1333:7:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -415,10 +415,10 @@ "typeString": "address" }, "typeName": { - "id": 1493, + "id": 1553, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1333:7:12", + "src": "1333:7:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -428,32 +428,32 @@ "visibility": "internal" } ], - "src": "1332:9:12" + "src": "1332:9:11" }, - "scope": 1508, - "src": "1262:118:12", + "scope": 1568, + "src": "1262:118:11", "stateMutability": "view", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1506, + "id": 1566, "nodeType": "Block", - "src": "1465:25:12", + "src": "1465:25:11", "statements": [ { "expression": { "argumentTypes": null, "hexValue": "32", - "id": 1504, + "id": 1564, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1482:1:12", + "src": "1482:1:11", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", @@ -461,15 +461,15 @@ }, "value": "2" }, - "functionReturnParameters": 1503, - "id": 1505, + "functionReturnParameters": 1563, + "id": 1565, "nodeType": "Return", - "src": "1475:8:12" + "src": "1475:8:11" } ] }, "documentation": null, - "id": 1507, + "id": 1567, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -477,23 +477,23 @@ "name": "proxyType", "nodeType": "FunctionDefinition", "parameters": { - "id": 1500, + "id": 1560, "nodeType": "ParameterList", "parameters": [], - "src": "1404:2:12" + "src": "1404:2:11" }, "payable": false, "returnParameters": { - "id": 1503, + "id": 1563, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1502, + "id": 1562, "name": "", "nodeType": "VariableDeclaration", - "scope": 1507, - "src": "1452:7:12", + "scope": 1567, + "src": "1452:7:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -501,10 +501,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1501, + "id": 1561, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1452:7:12", + "src": "1452:7:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -514,40 +514,40 @@ "visibility": "internal" } ], - "src": "1451:9:12" + "src": "1451:9:11" }, - "scope": 1508, - "src": "1386:104:12", + "scope": 1568, + "src": "1386:104:11", "stateMutability": "pure", "superFunction": null, "visibility": "public" } ], - "scope": 1509, - "src": "190:1302:12" + "scope": 1569, + "src": "190:1302:11" } ], - "src": "0:1493:12" + "src": "0:1493:11" }, "legacyAST": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Proxy.sol", "exportedSymbols": { "Proxy": [ - 1508 + 1568 ] }, - "id": 1509, + "id": 1569, "nodeType": "SourceUnit", "nodes": [ { - "id": 1468, + "id": 1528, "literals": [ "solidity", "0.4", - ".23" + ".24" ], "nodeType": "PragmaDirective", - "src": "0:23:12" + "src": "0:23:11" }, { "baseContracts": [], @@ -555,20 +555,20 @@ "contractKind": "contract", "documentation": "@title Proxy - Generic proxy contract allows to execute all transactions applying the code of a master contract.\n @author Stefan George - ", "fullyImplemented": true, - "id": 1508, + "id": 1568, "linearizedBaseContracts": [ - 1508 + 1568 ], "name": "Proxy", "nodeType": "ContractDefinition", "nodes": [ { "constant": false, - "id": 1470, + "id": 1530, "name": "masterCopy", "nodeType": "VariableDeclaration", - "scope": 1508, - "src": "363:18:12", + "scope": 1568, + "src": "363:18:11", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -576,10 +576,10 @@ "typeString": "address" }, "typeName": { - "id": 1469, + "id": 1529, "name": "address", "nodeType": "ElementaryTypeName", - "src": "363:7:12", + "src": "363:7:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -590,9 +590,9 @@ }, { "body": { - "id": 1485, + "id": 1545, "nodeType": "Block", - "src": "560:76:12", + "src": "560:76:11", "statements": [ { "expression": { @@ -604,19 +604,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1478, + "id": 1538, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1476, + "id": 1536, "name": "_masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1472, - "src": "578:11:12", + "referencedDeclaration": 1532, + "src": "578:11:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -627,14 +627,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1477, + "id": 1537, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "593:1:12", + "src": "593:1:11", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -642,7 +642,7 @@ }, "value": "0" }, - "src": "578:16:12", + "src": "578:16:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -656,21 +656,21 @@ "typeString": "bool" } ], - "id": 1475, + "id": 1535, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2468, - 2469 + 2601, + 2602 ], - "referencedDeclaration": 2468, - "src": "570:7:12", + "referencedDeclaration": 2601, + "src": "570:7:11", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1479, + "id": 1539, "isConstant": false, "isLValue": false, "isPure": false, @@ -678,32 +678,32 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "570:25:12", + "src": "570:25:11", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1480, + "id": 1540, "nodeType": "ExpressionStatement", - "src": "570:25:12" + "src": "570:25:11" }, { "expression": { "argumentTypes": null, - "id": 1483, + "id": 1543, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1481, + "id": 1541, "name": "masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1470, - "src": "605:10:12", + "referencedDeclaration": 1530, + "src": "605:10:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -713,31 +713,31 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1482, + "id": 1542, "name": "_masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1472, - "src": "618:11:12", + "referencedDeclaration": 1532, + "src": "618:11:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "605:24:12", + "src": "605:24:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1484, + "id": 1544, "nodeType": "ExpressionStatement", - "src": "605:24:12" + "src": "605:24:11" } ] }, "documentation": "@dev Constructor function sets address of master copy contract.\n @param _masterCopy Master copy address.", - "id": 1486, + "id": 1546, "implemented": true, "isConstructor": true, "isDeclaredConst": false, @@ -745,16 +745,16 @@ "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 1473, + "id": 1533, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1472, + "id": 1532, "name": "_masterCopy", "nodeType": "VariableDeclaration", - "scope": 1486, - "src": "520:19:12", + "scope": 1546, + "src": "520:19:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -762,10 +762,10 @@ "typeString": "address" }, "typeName": { - "id": 1471, + "id": 1531, "name": "address", "nodeType": "ElementaryTypeName", - "src": "520:7:12", + "src": "520:7:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -775,38 +775,38 @@ "visibility": "internal" } ], - "src": "519:21:12" + "src": "519:21:11" }, "payable": false, "returnParameters": { - "id": 1474, + "id": 1534, "nodeType": "ParameterList", "parameters": [], - "src": "560:0:12" + "src": "560:0:11" }, - "scope": 1508, - "src": "508:128:12", + "scope": 1568, + "src": "508:128:11", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1490, + "id": 1550, "nodeType": "Block", - "src": "786:470:12", + "src": "786:470:11", "statements": [ { "externalReferences": [], - "id": 1489, + "id": 1549, "nodeType": "InlineAssembly", "operations": "{\n let masterCopy := and(sload(0), 0xffffffffffffffffffffffffffffffffffffffff)\n calldatacopy(0, 0, calldatasize())\n let success := delegatecall(gas(), masterCopy, 0, calldatasize(), 0, 0)\n returndatacopy(0, 0, returndatasize())\n if eq(success, 0)\n {\n revert(0, returndatasize())\n }\n return(0, returndatasize())\n}", - "src": "860:396:12" + "src": "860:396:11" } ] }, "documentation": "@dev Fallback function forwards all transactions and returns all received return data.", - "id": 1491, + "id": 1551, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -814,53 +814,53 @@ "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 1487, + "id": 1547, "nodeType": "ParameterList", "parameters": [], - "src": "746:2:12" + "src": "746:2:11" }, "payable": true, "returnParameters": { - "id": 1488, + "id": 1548, "nodeType": "ParameterList", "parameters": [], - "src": "786:0:12" + "src": "786:0:11" }, - "scope": 1508, - "src": "737:519:12", + "scope": 1568, + "src": "737:519:11", "stateMutability": "payable", "superFunction": null, "visibility": "external" }, { "body": { - "id": 1498, + "id": 1558, "nodeType": "Block", - "src": "1346:34:12", + "src": "1346:34:11", "statements": [ { "expression": { "argumentTypes": null, - "id": 1496, + "id": 1556, "name": "masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1470, - "src": "1363:10:12", + "referencedDeclaration": 1530, + "src": "1363:10:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "functionReturnParameters": 1495, - "id": 1497, + "functionReturnParameters": 1555, + "id": 1557, "nodeType": "Return", - "src": "1356:17:12" + "src": "1356:17:11" } ] }, "documentation": null, - "id": 1499, + "id": 1559, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -868,23 +868,23 @@ "name": "implementation", "nodeType": "FunctionDefinition", "parameters": { - "id": 1492, + "id": 1552, "nodeType": "ParameterList", "parameters": [], - "src": "1285:2:12" + "src": "1285:2:11" }, "payable": false, "returnParameters": { - "id": 1495, + "id": 1555, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1494, + "id": 1554, "name": "", "nodeType": "VariableDeclaration", - "scope": 1499, - "src": "1333:7:12", + "scope": 1559, + "src": "1333:7:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -892,10 +892,10 @@ "typeString": "address" }, "typeName": { - "id": 1493, + "id": 1553, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1333:7:12", + "src": "1333:7:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -905,32 +905,32 @@ "visibility": "internal" } ], - "src": "1332:9:12" + "src": "1332:9:11" }, - "scope": 1508, - "src": "1262:118:12", + "scope": 1568, + "src": "1262:118:11", "stateMutability": "view", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1506, + "id": 1566, "nodeType": "Block", - "src": "1465:25:12", + "src": "1465:25:11", "statements": [ { "expression": { "argumentTypes": null, "hexValue": "32", - "id": 1504, + "id": 1564, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1482:1:12", + "src": "1482:1:11", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", @@ -938,15 +938,15 @@ }, "value": "2" }, - "functionReturnParameters": 1503, - "id": 1505, + "functionReturnParameters": 1563, + "id": 1565, "nodeType": "Return", - "src": "1475:8:12" + "src": "1475:8:11" } ] }, "documentation": null, - "id": 1507, + "id": 1567, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -954,23 +954,23 @@ "name": "proxyType", "nodeType": "FunctionDefinition", "parameters": { - "id": 1500, + "id": 1560, "nodeType": "ParameterList", "parameters": [], - "src": "1404:2:12" + "src": "1404:2:11" }, "payable": false, "returnParameters": { - "id": 1503, + "id": 1563, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1502, + "id": 1562, "name": "", "nodeType": "VariableDeclaration", - "scope": 1507, - "src": "1452:7:12", + "scope": 1567, + "src": "1452:7:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -978,10 +978,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1501, + "id": 1561, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1452:7:12", + "src": "1452:7:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -991,26 +991,26 @@ "visibility": "internal" } ], - "src": "1451:9:12" + "src": "1451:9:11" }, - "scope": 1508, - "src": "1386:104:12", + "scope": 1568, + "src": "1386:104:11", "stateMutability": "pure", "superFunction": null, "visibility": "public" } ], - "scope": 1509, - "src": "190:1302:12" + "scope": 1569, + "src": "190:1302:11" } ], - "src": "0:1493:12" + "src": "0:1493:11" }, "compiler": { "name": "solc", - "version": "0.4.23+commit.124ca40d.Emscripten.clang" + "version": "0.4.24+commit.e67f0147.Emscripten.clang" }, "networks": {}, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-10T10:43:07.901Z" + "updatedAt": "2018-05-27T11:12:45.583Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/ProxyFactory.json b/safe-contracts/build/contracts/ProxyFactory.json index c909e2ff..faa58fb9 100644 --- a/safe-contracts/build/contracts/ProxyFactory.json +++ b/safe-contracts/build/contracts/ProxyFactory.json @@ -37,54 +37,54 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b5061044e806100206000396000f300608060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806361b69abd14610046575b600080fd5b34801561005257600080fd5b506100cd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505061010f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60008261011a6101fe565b808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050604051809103906000f08015801561016c573d6000803e3d6000fd5b5090506000825111156101955760008060008451602086016000865af1141561019457600080fd5b5b7fa38789425dbeee0239e16ff2d2567e31720127fbc6430758c1a4efc6aef29f8081604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a192915050565b6040516102148061020f833901905600608060405234801561001057600080fd5b506040516020806102148339810180604052810190808051906020019092919050505060008173ffffffffffffffffffffffffffffffffffffffff161415151561005957600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505061016b806100a96000396000f30060806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680634555d5c91461008b5780635c60da1b146100b6575b73ffffffffffffffffffffffffffffffffffffffff600054163660008037600080366000845af43d6000803e6000811415610086573d6000fd5b3d6000f35b34801561009757600080fd5b506100a061010d565b6040518082815260200191505060405180910390f35b3480156100c257600080fd5b506100cb610116565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60006002905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050905600a165627a7a723058209594d3f13f6fbad0d5e33f423014061ae7898100636a8b854618092ea85c15e90029a165627a7a7230582048e6ac6bd11856ae7c073d3f3d327f3e04a2dff35dfbcf223c8a425cba2fa6a10029", - "deployedBytecode": "0x608060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806361b69abd14610046575b600080fd5b34801561005257600080fd5b506100cd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505061010f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60008261011a6101fe565b808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050604051809103906000f08015801561016c573d6000803e3d6000fd5b5090506000825111156101955760008060008451602086016000865af1141561019457600080fd5b5b7fa38789425dbeee0239e16ff2d2567e31720127fbc6430758c1a4efc6aef29f8081604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a192915050565b6040516102148061020f833901905600608060405234801561001057600080fd5b506040516020806102148339810180604052810190808051906020019092919050505060008173ffffffffffffffffffffffffffffffffffffffff161415151561005957600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505061016b806100a96000396000f30060806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680634555d5c91461008b5780635c60da1b146100b6575b73ffffffffffffffffffffffffffffffffffffffff600054163660008037600080366000845af43d6000803e6000811415610086573d6000fd5b3d6000f35b34801561009757600080fd5b506100a061010d565b6040518082815260200191505060405180910390f35b3480156100c257600080fd5b506100cb610116565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60006002905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050905600a165627a7a723058209594d3f13f6fbad0d5e33f423014061ae7898100636a8b854618092ea85c15e90029a165627a7a7230582048e6ac6bd11856ae7c073d3f3d327f3e04a2dff35dfbcf223c8a425cba2fa6a10029", - "sourceMap": "225:725:13:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;225:725:13;;;;;;;", - "deployedSourceMap": "225:725:13:-;;;;;;;;;;;;;;;;;;;;;;;;532:416;;8:9:-1;5:2;;;30:1;27;20:12;5:2;532:416:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;617:11;662:10;652:21;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;652:21:13;644:29;;701:1;687:4;:11;:15;683:237;;;874:1;870;867;860:4;854:11;847:4;841;837:15;834:1;827:5;822:3;817:55;814:62;811:2;;;889:1;886;879:12;811:2;793:114;921:20;935:5;921:20;;;;;;;;;;;;;;;;;;;;;;532:416;;;;:::o;225:725::-;;;;;;;;;;:::o", - "source": "pragma solidity 0.4.23;\nimport \"./Proxy.sol\";\n\n\n/// @title Proxy Factory - Allows to create new proxy contact and execute a message call to the new proxy within one transaction.\n/// @author Stefan George - \ncontract ProxyFactory {\n\n event ProxyCreation(Proxy proxy);\n\n /// @dev Allows to create new proxy contact and execute a message call to the new proxy within one transaction.\n /// @param masterCopy Address of master copy.\n /// @param data Payload for message call sent to new proxy contract.\n function createProxy(address masterCopy, bytes data)\n public\n returns (Proxy proxy)\n {\n proxy = new Proxy(masterCopy);\n if (data.length > 0)\n // solium-disable-next-line security/no-inline-assembly\n assembly {\n if eq(call(gas, proxy, 0, add(data, 0x20), mload(data), 0, 0), 0) { revert(0, 0) }\n }\n emit ProxyCreation(proxy);\n }\n}\n", + "bytecode": "0x608060405234801561001057600080fd5b5061044e806100206000396000f300608060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806361b69abd14610046575b600080fd5b34801561005257600080fd5b506100cd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505061010f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60008261011a6101fe565b808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050604051809103906000f08015801561016c573d6000803e3d6000fd5b5090506000825111156101955760008060008451602086016000865af1141561019457600080fd5b5b7fa38789425dbeee0239e16ff2d2567e31720127fbc6430758c1a4efc6aef29f8081604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a192915050565b6040516102148061020f833901905600608060405234801561001057600080fd5b506040516020806102148339810180604052810190808051906020019092919050505060008173ffffffffffffffffffffffffffffffffffffffff161415151561005957600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505061016b806100a96000396000f30060806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680634555d5c91461008b5780635c60da1b146100b6575b73ffffffffffffffffffffffffffffffffffffffff600054163660008037600080366000845af43d6000803e6000811415610086573d6000fd5b3d6000f35b34801561009757600080fd5b506100a061010d565b6040518082815260200191505060405180910390f35b3480156100c257600080fd5b506100cb610116565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60006002905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050905600a165627a7a72305820cd7d1e9dd84eb221f79b1c8f72a39fad7d9f8ab7239d25c1fc563147abcaf4150029a165627a7a72305820894d1145d2178ea5a3debf7a1ffb29cfdf9100a5997f8e3b2c8640a6db5c5b120029", + "deployedBytecode": "0x608060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806361b69abd14610046575b600080fd5b34801561005257600080fd5b506100cd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505061010f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60008261011a6101fe565b808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050604051809103906000f08015801561016c573d6000803e3d6000fd5b5090506000825111156101955760008060008451602086016000865af1141561019457600080fd5b5b7fa38789425dbeee0239e16ff2d2567e31720127fbc6430758c1a4efc6aef29f8081604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a192915050565b6040516102148061020f833901905600608060405234801561001057600080fd5b506040516020806102148339810180604052810190808051906020019092919050505060008173ffffffffffffffffffffffffffffffffffffffff161415151561005957600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505061016b806100a96000396000f30060806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680634555d5c91461008b5780635c60da1b146100b6575b73ffffffffffffffffffffffffffffffffffffffff600054163660008037600080366000845af43d6000803e6000811415610086573d6000fd5b3d6000f35b34801561009757600080fd5b506100a061010d565b6040518082815260200191505060405180910390f35b3480156100c257600080fd5b506100cb610116565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60006002905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050905600a165627a7a72305820cd7d1e9dd84eb221f79b1c8f72a39fad7d9f8ab7239d25c1fc563147abcaf4150029a165627a7a72305820894d1145d2178ea5a3debf7a1ffb29cfdf9100a5997f8e3b2c8640a6db5c5b120029", + "sourceMap": "225:725:12:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;225:725:12;;;;;;;", + "deployedSourceMap": "225:725:12:-;;;;;;;;;;;;;;;;;;;;;;;;532:416;;8:9:-1;5:2;;;30:1;27;20:12;5:2;532:416:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;617:11;662:10;652:21;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;652:21:12;644:29;;701:1;687:4;:11;:15;683:237;;;874:1;870;867;860:4;854:11;847:4;841;837:15;834:1;827:5;822:3;817:55;814:62;811:2;;;889:1;886;879:12;811:2;793:114;921:20;935:5;921:20;;;;;;;;;;;;;;;;;;;;;;532:416;;;;:::o;225:725::-;;;;;;;;;;:::o", + "source": "pragma solidity 0.4.24;\nimport \"./Proxy.sol\";\n\n\n/// @title Proxy Factory - Allows to create new proxy contact and execute a message call to the new proxy within one transaction.\n/// @author Stefan George - \ncontract ProxyFactory {\n\n event ProxyCreation(Proxy proxy);\n\n /// @dev Allows to create new proxy contact and execute a message call to the new proxy within one transaction.\n /// @param masterCopy Address of master copy.\n /// @param data Payload for message call sent to new proxy contract.\n function createProxy(address masterCopy, bytes data)\n public\n returns (Proxy proxy)\n {\n proxy = new Proxy(masterCopy);\n if (data.length > 0)\n // solium-disable-next-line security/no-inline-assembly\n assembly {\n if eq(call(gas, proxy, 0, add(data, 0x20), mload(data), 0, 0), 0) { revert(0, 0) }\n }\n emit ProxyCreation(proxy);\n }\n}\n", "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/ProxyFactory.sol", "ast": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/ProxyFactory.sol", "exportedSymbols": { "ProxyFactory": [ - 1543 + 1603 ] }, - "id": 1544, + "id": 1604, "nodeType": "SourceUnit", "nodes": [ { - "id": 1510, + "id": 1570, "literals": [ "solidity", "0.4", - ".23" + ".24" ], "nodeType": "PragmaDirective", - "src": "0:23:13" + "src": "0:23:12" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Proxy.sol", "file": "./Proxy.sol", - "id": 1511, + "id": 1571, "nodeType": "ImportDirective", - "scope": 1544, - "sourceUnit": 1509, - "src": "24:21:13", + "scope": 1604, + "sourceUnit": 1569, + "src": "24:21:12", "symbolAliases": [], "unitAlias": "" }, { "baseContracts": [], "contractDependencies": [ - 1508 + 1568 ], "contractKind": "contract", "documentation": "@title Proxy Factory - Allows to create new proxy contact and execute a message call to the new proxy within one transaction.\n @author Stefan George - ", "fullyImplemented": true, - "id": 1543, + "id": 1603, "linearizedBaseContracts": [ - 1543 + 1603 ], "name": "ProxyFactory", "nodeType": "ContractDefinition", @@ -92,36 +92,36 @@ { "anonymous": false, "documentation": null, - "id": 1515, + "id": 1575, "name": "ProxyCreation", "nodeType": "EventDefinition", "parameters": { - "id": 1514, + "id": 1574, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1513, + "id": 1573, "indexed": false, "name": "proxy", "nodeType": "VariableDeclaration", - "scope": 1515, - "src": "274:11:13", + "scope": 1575, + "src": "274:11:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1508", + "typeIdentifier": "t_contract$_Proxy_$1568", "typeString": "contract Proxy" }, "typeName": { "contractScope": null, - "id": 1512, + "id": 1572, "name": "Proxy", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1508, - "src": "274:5:13", + "referencedDeclaration": 1568, + "src": "274:5:12", "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1508", + "typeIdentifier": "t_contract$_Proxy_$1568", "typeString": "contract Proxy" } }, @@ -129,34 +129,34 @@ "visibility": "internal" } ], - "src": "273:13:13" + "src": "273:13:12" }, - "src": "254:33:13" + "src": "254:33:12" }, { "body": { - "id": 1541, + "id": 1601, "nodeType": "Block", - "src": "634:314:13", + "src": "634:314:12", "statements": [ { "expression": { "argumentTypes": null, - "id": 1529, + "id": 1589, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1524, + "id": 1584, "name": "proxy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1522, - "src": "644:5:13", + "referencedDeclaration": 1582, + "src": "644:5:12", "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1508", + "typeIdentifier": "t_contract$_Proxy_$1568", "typeString": "contract Proxy" } }, @@ -167,12 +167,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1527, + "id": 1587, "name": "masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1517, - "src": "662:10:13", + "referencedDeclaration": 1577, + "src": "662:10:12", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -186,31 +186,31 @@ "typeString": "address" } ], - "id": 1526, + "id": 1586, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "NewExpression", - "src": "652:9:13", + "src": "652:9:12", "typeDescriptions": { - "typeIdentifier": "t_function_creation_nonpayable$_t_address_$returns$_t_contract$_Proxy_$1508_$", + "typeIdentifier": "t_function_creation_nonpayable$_t_address_$returns$_t_contract$_Proxy_$1568_$", "typeString": "function (address) returns (contract Proxy)" }, "typeName": { "contractScope": null, - "id": 1525, + "id": 1585, "name": "Proxy", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1508, - "src": "656:5:13", + "referencedDeclaration": 1568, + "src": "656:5:12", "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1508", + "typeIdentifier": "t_contract$_Proxy_$1568", "typeString": "contract Proxy" } } }, - "id": 1528, + "id": 1588, "isConstant": false, "isLValue": false, "isPure": false, @@ -218,21 +218,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "652:21:13", + "src": "652:21:12", "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1508", + "typeIdentifier": "t_contract$_Proxy_$1568", "typeString": "contract Proxy" } }, - "src": "644:29:13", + "src": "644:29:12", "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1508", + "typeIdentifier": "t_contract$_Proxy_$1568", "typeString": "contract Proxy" } }, - "id": 1530, + "id": 1590, "nodeType": "ExpressionStatement", - "src": "644:29:13" + "src": "644:29:12" }, { "condition": { @@ -241,7 +241,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1534, + "id": 1594, "isConstant": false, "isLValue": false, "isPure": false, @@ -250,18 +250,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1531, + "id": 1591, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1519, - "src": "687:4:13", + "referencedDeclaration": 1579, + "src": "687:4:12", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, - "id": 1532, + "id": 1592, "isConstant": false, "isLValue": false, "isPure": false, @@ -269,7 +269,7 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "687:11:13", + "src": "687:11:12", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -280,14 +280,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1533, + "id": 1593, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "701:1:13", + "src": "701:1:12", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -295,50 +295,50 @@ }, "value": "0" }, - "src": "687:15:13", + "src": "687:15:12", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 1536, + "id": 1596, "nodeType": "IfStatement", - "src": "683:237:13", + "src": "683:237:12", "trueBody": { "externalReferences": [ { "data": { - "declaration": 1519, + "declaration": 1579, "isOffset": false, "isSlot": false, - "src": "860:4:13", + "src": "860:4:12", "valueSize": 1 } }, { "proxy": { - "declaration": 1522, + "declaration": 1582, "isOffset": false, "isSlot": false, - "src": "827:5:13", + "src": "827:5:12", "valueSize": 1 } }, { "data": { - "declaration": 1519, + "declaration": 1579, "isOffset": false, "isSlot": false, - "src": "841:4:13", + "src": "841:4:12", "valueSize": 1 } } ], - "id": 1535, + "id": 1595, "nodeType": "InlineAssembly", "operations": "{\n if eq(call(gas(), proxy, 0, add(data, 0x20), mload(data), 0, 0), 0)\n {\n revert(0, 0)\n }\n}", - "src": "784:136:13" + "src": "784:136:12" } }, { @@ -347,14 +347,14 @@ "arguments": [ { "argumentTypes": null, - "id": 1538, + "id": 1598, "name": "proxy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1522, - "src": "935:5:13", + "referencedDeclaration": 1582, + "src": "935:5:12", "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1508", + "typeIdentifier": "t_contract$_Proxy_$1568", "typeString": "contract Proxy" } } @@ -362,22 +362,22 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_Proxy_$1508", + "typeIdentifier": "t_contract$_Proxy_$1568", "typeString": "contract Proxy" } ], - "id": 1537, + "id": 1597, "name": "ProxyCreation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1515, - "src": "921:13:13", + "referencedDeclaration": 1575, + "src": "921:13:12", "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_contract$_Proxy_$1508_$returns$__$", + "typeIdentifier": "t_function_event_nonpayable$_t_contract$_Proxy_$1568_$returns$__$", "typeString": "function (contract Proxy)" } }, - "id": 1539, + "id": 1599, "isConstant": false, "isLValue": false, "isPure": false, @@ -385,20 +385,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "921:20:13", + "src": "921:20:12", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1540, + "id": 1600, "nodeType": "EmitStatement", - "src": "916:25:13" + "src": "916:25:12" } ] }, "documentation": "@dev Allows to create new proxy contact and execute a message call to the new proxy within one transaction.\n @param masterCopy Address of master copy.\n @param data Payload for message call sent to new proxy contract.", - "id": 1542, + "id": 1602, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -406,16 +406,16 @@ "name": "createProxy", "nodeType": "FunctionDefinition", "parameters": { - "id": 1520, + "id": 1580, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1517, + "id": 1577, "name": "masterCopy", "nodeType": "VariableDeclaration", - "scope": 1542, - "src": "553:18:13", + "scope": 1602, + "src": "553:18:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -423,10 +423,10 @@ "typeString": "address" }, "typeName": { - "id": 1516, + "id": 1576, "name": "address", "nodeType": "ElementaryTypeName", - "src": "553:7:13", + "src": "553:7:12", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -437,11 +437,11 @@ }, { "constant": false, - "id": 1519, + "id": 1579, "name": "data", "nodeType": "VariableDeclaration", - "scope": 1542, - "src": "573:10:13", + "scope": 1602, + "src": "573:10:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -449,10 +449,10 @@ "typeString": "bytes" }, "typeName": { - "id": 1518, + "id": 1578, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "573:5:13", + "src": "573:5:12", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -462,35 +462,35 @@ "visibility": "internal" } ], - "src": "552:32:13" + "src": "552:32:12" }, "payable": false, "returnParameters": { - "id": 1523, + "id": 1583, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1522, + "id": 1582, "name": "proxy", "nodeType": "VariableDeclaration", - "scope": 1542, - "src": "617:11:13", + "scope": 1602, + "src": "617:11:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1508", + "typeIdentifier": "t_contract$_Proxy_$1568", "typeString": "contract Proxy" }, "typeName": { "contractScope": null, - "id": 1521, + "id": 1581, "name": "Proxy", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1508, - "src": "617:5:13", + "referencedDeclaration": 1568, + "src": "617:5:12", "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1508", + "typeIdentifier": "t_contract$_Proxy_$1568", "typeString": "contract Proxy" } }, @@ -498,63 +498,63 @@ "visibility": "internal" } ], - "src": "616:13:13" + "src": "616:13:12" }, - "scope": 1543, - "src": "532:416:13", + "scope": 1603, + "src": "532:416:12", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" } ], - "scope": 1544, - "src": "225:725:13" + "scope": 1604, + "src": "225:725:12" } ], - "src": "0:951:13" + "src": "0:951:12" }, "legacyAST": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/ProxyFactory.sol", "exportedSymbols": { "ProxyFactory": [ - 1543 + 1603 ] }, - "id": 1544, + "id": 1604, "nodeType": "SourceUnit", "nodes": [ { - "id": 1510, + "id": 1570, "literals": [ "solidity", "0.4", - ".23" + ".24" ], "nodeType": "PragmaDirective", - "src": "0:23:13" + "src": "0:23:12" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Proxy.sol", "file": "./Proxy.sol", - "id": 1511, + "id": 1571, "nodeType": "ImportDirective", - "scope": 1544, - "sourceUnit": 1509, - "src": "24:21:13", + "scope": 1604, + "sourceUnit": 1569, + "src": "24:21:12", "symbolAliases": [], "unitAlias": "" }, { "baseContracts": [], "contractDependencies": [ - 1508 + 1568 ], "contractKind": "contract", "documentation": "@title Proxy Factory - Allows to create new proxy contact and execute a message call to the new proxy within one transaction.\n @author Stefan George - ", "fullyImplemented": true, - "id": 1543, + "id": 1603, "linearizedBaseContracts": [ - 1543 + 1603 ], "name": "ProxyFactory", "nodeType": "ContractDefinition", @@ -562,36 +562,36 @@ { "anonymous": false, "documentation": null, - "id": 1515, + "id": 1575, "name": "ProxyCreation", "nodeType": "EventDefinition", "parameters": { - "id": 1514, + "id": 1574, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1513, + "id": 1573, "indexed": false, "name": "proxy", "nodeType": "VariableDeclaration", - "scope": 1515, - "src": "274:11:13", + "scope": 1575, + "src": "274:11:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1508", + "typeIdentifier": "t_contract$_Proxy_$1568", "typeString": "contract Proxy" }, "typeName": { "contractScope": null, - "id": 1512, + "id": 1572, "name": "Proxy", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1508, - "src": "274:5:13", + "referencedDeclaration": 1568, + "src": "274:5:12", "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1508", + "typeIdentifier": "t_contract$_Proxy_$1568", "typeString": "contract Proxy" } }, @@ -599,34 +599,34 @@ "visibility": "internal" } ], - "src": "273:13:13" + "src": "273:13:12" }, - "src": "254:33:13" + "src": "254:33:12" }, { "body": { - "id": 1541, + "id": 1601, "nodeType": "Block", - "src": "634:314:13", + "src": "634:314:12", "statements": [ { "expression": { "argumentTypes": null, - "id": 1529, + "id": 1589, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1524, + "id": 1584, "name": "proxy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1522, - "src": "644:5:13", + "referencedDeclaration": 1582, + "src": "644:5:12", "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1508", + "typeIdentifier": "t_contract$_Proxy_$1568", "typeString": "contract Proxy" } }, @@ -637,12 +637,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1527, + "id": 1587, "name": "masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1517, - "src": "662:10:13", + "referencedDeclaration": 1577, + "src": "662:10:12", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -656,31 +656,31 @@ "typeString": "address" } ], - "id": 1526, + "id": 1586, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "NewExpression", - "src": "652:9:13", + "src": "652:9:12", "typeDescriptions": { - "typeIdentifier": "t_function_creation_nonpayable$_t_address_$returns$_t_contract$_Proxy_$1508_$", + "typeIdentifier": "t_function_creation_nonpayable$_t_address_$returns$_t_contract$_Proxy_$1568_$", "typeString": "function (address) returns (contract Proxy)" }, "typeName": { "contractScope": null, - "id": 1525, + "id": 1585, "name": "Proxy", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1508, - "src": "656:5:13", + "referencedDeclaration": 1568, + "src": "656:5:12", "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1508", + "typeIdentifier": "t_contract$_Proxy_$1568", "typeString": "contract Proxy" } } }, - "id": 1528, + "id": 1588, "isConstant": false, "isLValue": false, "isPure": false, @@ -688,21 +688,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "652:21:13", + "src": "652:21:12", "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1508", + "typeIdentifier": "t_contract$_Proxy_$1568", "typeString": "contract Proxy" } }, - "src": "644:29:13", + "src": "644:29:12", "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1508", + "typeIdentifier": "t_contract$_Proxy_$1568", "typeString": "contract Proxy" } }, - "id": 1530, + "id": 1590, "nodeType": "ExpressionStatement", - "src": "644:29:13" + "src": "644:29:12" }, { "condition": { @@ -711,7 +711,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1534, + "id": 1594, "isConstant": false, "isLValue": false, "isPure": false, @@ -720,18 +720,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1531, + "id": 1591, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1519, - "src": "687:4:13", + "referencedDeclaration": 1579, + "src": "687:4:12", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, - "id": 1532, + "id": 1592, "isConstant": false, "isLValue": false, "isPure": false, @@ -739,7 +739,7 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "687:11:13", + "src": "687:11:12", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -750,14 +750,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1533, + "id": 1593, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "701:1:13", + "src": "701:1:12", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -765,50 +765,50 @@ }, "value": "0" }, - "src": "687:15:13", + "src": "687:15:12", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 1536, + "id": 1596, "nodeType": "IfStatement", - "src": "683:237:13", + "src": "683:237:12", "trueBody": { "externalReferences": [ { "data": { - "declaration": 1519, + "declaration": 1579, "isOffset": false, "isSlot": false, - "src": "860:4:13", + "src": "860:4:12", "valueSize": 1 } }, { "proxy": { - "declaration": 1522, + "declaration": 1582, "isOffset": false, "isSlot": false, - "src": "827:5:13", + "src": "827:5:12", "valueSize": 1 } }, { "data": { - "declaration": 1519, + "declaration": 1579, "isOffset": false, "isSlot": false, - "src": "841:4:13", + "src": "841:4:12", "valueSize": 1 } } ], - "id": 1535, + "id": 1595, "nodeType": "InlineAssembly", "operations": "{\n if eq(call(gas(), proxy, 0, add(data, 0x20), mload(data), 0, 0), 0)\n {\n revert(0, 0)\n }\n}", - "src": "784:136:13" + "src": "784:136:12" } }, { @@ -817,14 +817,14 @@ "arguments": [ { "argumentTypes": null, - "id": 1538, + "id": 1598, "name": "proxy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1522, - "src": "935:5:13", + "referencedDeclaration": 1582, + "src": "935:5:12", "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1508", + "typeIdentifier": "t_contract$_Proxy_$1568", "typeString": "contract Proxy" } } @@ -832,22 +832,22 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_Proxy_$1508", + "typeIdentifier": "t_contract$_Proxy_$1568", "typeString": "contract Proxy" } ], - "id": 1537, + "id": 1597, "name": "ProxyCreation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1515, - "src": "921:13:13", + "referencedDeclaration": 1575, + "src": "921:13:12", "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_contract$_Proxy_$1508_$returns$__$", + "typeIdentifier": "t_function_event_nonpayable$_t_contract$_Proxy_$1568_$returns$__$", "typeString": "function (contract Proxy)" } }, - "id": 1539, + "id": 1599, "isConstant": false, "isLValue": false, "isPure": false, @@ -855,20 +855,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "921:20:13", + "src": "921:20:12", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1540, + "id": 1600, "nodeType": "EmitStatement", - "src": "916:25:13" + "src": "916:25:12" } ] }, "documentation": "@dev Allows to create new proxy contact and execute a message call to the new proxy within one transaction.\n @param masterCopy Address of master copy.\n @param data Payload for message call sent to new proxy contract.", - "id": 1542, + "id": 1602, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -876,16 +876,16 @@ "name": "createProxy", "nodeType": "FunctionDefinition", "parameters": { - "id": 1520, + "id": 1580, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1517, + "id": 1577, "name": "masterCopy", "nodeType": "VariableDeclaration", - "scope": 1542, - "src": "553:18:13", + "scope": 1602, + "src": "553:18:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -893,10 +893,10 @@ "typeString": "address" }, "typeName": { - "id": 1516, + "id": 1576, "name": "address", "nodeType": "ElementaryTypeName", - "src": "553:7:13", + "src": "553:7:12", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -907,11 +907,11 @@ }, { "constant": false, - "id": 1519, + "id": 1579, "name": "data", "nodeType": "VariableDeclaration", - "scope": 1542, - "src": "573:10:13", + "scope": 1602, + "src": "573:10:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -919,10 +919,10 @@ "typeString": "bytes" }, "typeName": { - "id": 1518, + "id": 1578, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "573:5:13", + "src": "573:5:12", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -932,35 +932,35 @@ "visibility": "internal" } ], - "src": "552:32:13" + "src": "552:32:12" }, "payable": false, "returnParameters": { - "id": 1523, + "id": 1583, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1522, + "id": 1582, "name": "proxy", "nodeType": "VariableDeclaration", - "scope": 1542, - "src": "617:11:13", + "scope": 1602, + "src": "617:11:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1508", + "typeIdentifier": "t_contract$_Proxy_$1568", "typeString": "contract Proxy" }, "typeName": { "contractScope": null, - "id": 1521, + "id": 1581, "name": "Proxy", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1508, - "src": "617:5:13", + "referencedDeclaration": 1568, + "src": "617:5:12", "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1508", + "typeIdentifier": "t_contract$_Proxy_$1568", "typeString": "contract Proxy" } }, @@ -968,63 +968,45 @@ "visibility": "internal" } ], - "src": "616:13:13" + "src": "616:13:12" }, - "scope": 1543, - "src": "532:416:13", + "scope": 1603, + "src": "532:416:12", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" } ], - "scope": 1544, - "src": "225:725:13" + "scope": 1604, + "src": "225:725:12" } ], - "src": "0:951:13" + "src": "0:951:12" }, "compiler": { "name": "solc", - "version": "0.4.23+commit.124ca40d.Emscripten.clang" + "version": "0.4.24+commit.e67f0147.Emscripten.clang" }, "networks": { "4": { "events": {}, "links": {}, - "address": "0xf11c9ac85e73435180707156748ecbaf4efc035b", - "transactionHash": "0xf8c48bc1ea023ab15194af47f50d2c8eaeb3d7b9dd13e7325e892e92743c2979" - }, - "1525950336085": { - "events": {}, - "links": {}, - "address": "0x7686eac12d94e3c0bdfe0a00ec759f89fbd115f7", - "transactionHash": "0x5b47c779cfd719a97f218a56d99b64b2c5b382549f3375822d5afed010cdb9c5" - }, - "1526283540628": { - "events": {}, - "links": {}, - "address": "0x321151783f8dfb4699370d1bd5cee4e82bc3b52a", - "transactionHash": "0x5b47c779cfd719a97f218a56d99b64b2c5b382549f3375822d5afed010cdb9c5" - }, - "1526478212260": { - "events": {}, - "links": {}, - "address": "0xf7f9b14921d4723eae3a8b29784c100301f6d8b8", - "transactionHash": "0x5b47c779cfd719a97f218a56d99b64b2c5b382549f3375822d5afed010cdb9c5" - }, - "1526973574996": { - "events": {}, - "links": {}, - "address": "0x91cee89bad367a2621a047c77d65e903acfa8a9d", - "transactionHash": "0x5b47c779cfd719a97f218a56d99b64b2c5b382549f3375822d5afed010cdb9c5" + "address": "0x78b7e500f63afb4c692b9b6a43e092278cbffaa1", + "transactionHash": "0xebf1fca163a66fdf988707624fa744b57d1eeedcc9f7eaee66555d1fc474c01e" }, "1527316019334": { "events": {}, "links": {}, - "address": "0x28ca055db09855f4bfefefd2177e33813f21fd8f", - "transactionHash": "0x5b47c779cfd719a97f218a56d99b64b2c5b382549f3375822d5afed010cdb9c5" + "address": "0x63f96c3c48bf69ce28e8b8be3c092807d9cf75c3", + "transactionHash": "0xbf12ab2315082a4c3e20abe6305376e3669b7cdee1bbfc079934e41aad57f4f3" + }, + "1527420696956": { + "events": {}, + "links": {}, + "address": "0x7be7064be7fa89c37e849fe58d68967da7d912b6", + "transactionHash": "0xc64211adf2eafca94ba6fe1b59e2ddd73ab867efd20ed1db80ca6eee90591aaf" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-26T06:28:28.336Z" + "updatedAt": "2018-05-27T11:31:46.235Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/SelfAuthorized.json b/safe-contracts/build/contracts/SelfAuthorized.json index d881ac34..679b4831 100644 --- a/safe-contracts/build/contracts/SelfAuthorized.json +++ b/safe-contracts/build/contracts/SelfAuthorized.json @@ -1,31 +1,31 @@ { "contractName": "SelfAuthorized", "abi": [], - "bytecode": "0x6080604052348015600f57600080fd5b50603580601d6000396000f3006080604052600080fd00a165627a7a72305820c359a8a0df732b4d3e100e43277411dee19c572529edb454cbf1fa9ee91508150029", - "deployedBytecode": "0x6080604052600080fd00a165627a7a72305820c359a8a0df732b4d3e100e43277411dee19c572529edb454cbf1fa9ee91508150029", - "sourceMap": "152:118:8:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;152:118:8;;;;;;;", - "deployedSourceMap": "152:118:8:-;;;;;", - "source": "pragma solidity 0.4.23;\n\n\n/// @title SelfAuthorized - authorizes current contract to perform actions\n/// @author Richard Meissner - \ncontract SelfAuthorized {\n modifier authorized() {\n require(msg.sender == address(this));\n _;\n }\n}\n", + "bytecode": "0x6080604052348015600f57600080fd5b50603580601d6000396000f3006080604052600080fd00a165627a7a72305820af9f772ea9919e0b590dbadc1d255c497a0a1031eaf00e4735e7b65b3f2e31520029", + "deployedBytecode": "0x6080604052600080fd00a165627a7a72305820af9f772ea9919e0b590dbadc1d255c497a0a1031eaf00e4735e7b65b3f2e31520029", + "sourceMap": "152:118:13:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;152:118:13;;;;;;;", + "deployedSourceMap": "152:118:13:-;;;;;", + "source": "pragma solidity 0.4.24;\n\n\n/// @title SelfAuthorized - authorizes current contract to perform actions\n/// @author Richard Meissner - \ncontract SelfAuthorized {\n modifier authorized() {\n require(msg.sender == address(this));\n _;\n }\n}\n", "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/SelfAuthorized.sol", "ast": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/SelfAuthorized.sol", "exportedSymbols": { "SelfAuthorized": [ - 1359 + 1619 ] }, - "id": 1360, + "id": 1620, "nodeType": "SourceUnit", "nodes": [ { - "id": 1345, + "id": 1605, "literals": [ "solidity", "0.4", - ".23" + ".24" ], "nodeType": "PragmaDirective", - "src": "0:23:8" + "src": "0:23:13" }, { "baseContracts": [], @@ -33,18 +33,18 @@ "contractKind": "contract", "documentation": "@title SelfAuthorized - authorizes current contract to perform actions\n @author Richard Meissner - ", "fullyImplemented": true, - "id": 1359, + "id": 1619, "linearizedBaseContracts": [ - 1359 + 1619 ], "name": "SelfAuthorized", "nodeType": "ContractDefinition", "nodes": [ { "body": { - "id": 1357, + "id": 1617, "nodeType": "Block", - "src": "204:64:8", + "src": "204:64:13", "statements": [ { "expression": { @@ -56,7 +56,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1353, + "id": 1613, "isConstant": false, "isLValue": false, "isPure": false, @@ -65,18 +65,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1348, + "id": 1608, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2396, - "src": "222:3:8", + "referencedDeclaration": 2598, + "src": "222:3:13", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 1349, + "id": 1609, "isConstant": false, "isLValue": false, "isPure": false, @@ -84,7 +84,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "222:10:8", + "src": "222:10:13", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -97,14 +97,14 @@ "arguments": [ { "argumentTypes": null, - "id": 1351, + "id": 1611, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2411, - "src": "244:4:8", + "referencedDeclaration": 2617, + "src": "244:4:13", "typeDescriptions": { - "typeIdentifier": "t_contract$_SelfAuthorized_$1359", + "typeIdentifier": "t_contract$_SelfAuthorized_$1619", "typeString": "contract SelfAuthorized" } } @@ -112,24 +112,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_SelfAuthorized_$1359", + "typeIdentifier": "t_contract$_SelfAuthorized_$1619", "typeString": "contract SelfAuthorized" } ], - "id": 1350, + "id": 1610, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "236:7:8", + "src": "236:7:13", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 1352, + "id": 1612, "isConstant": false, "isLValue": false, "isPure": false, @@ -137,13 +137,13 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "236:13:8", + "src": "236:13:13", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "222:27:8", + "src": "222:27:13", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -157,21 +157,21 @@ "typeString": "bool" } ], - "id": 1347, + "id": 1607, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "214:7:8", + "referencedDeclaration": 2601, + "src": "214:7:13", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1354, + "id": 1614, "isConstant": false, "isLValue": false, "isPure": false, @@ -179,62 +179,62 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "214:36:8", + "src": "214:36:13", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1355, + "id": 1615, "nodeType": "ExpressionStatement", - "src": "214:36:8" + "src": "214:36:13" }, { - "id": 1356, + "id": 1616, "nodeType": "PlaceholderStatement", - "src": "260:1:8" + "src": "260:1:13" } ] }, "documentation": null, - "id": 1358, + "id": 1618, "name": "authorized", "nodeType": "ModifierDefinition", "parameters": { - "id": 1346, + "id": 1606, "nodeType": "ParameterList", "parameters": [], - "src": "201:2:8" + "src": "201:2:13" }, - "src": "182:86:8", + "src": "182:86:13", "visibility": "internal" } ], - "scope": 1360, - "src": "152:118:8" + "scope": 1620, + "src": "152:118:13" } ], - "src": "0:271:8" + "src": "0:271:13" }, "legacyAST": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/SelfAuthorized.sol", "exportedSymbols": { "SelfAuthorized": [ - 1359 + 1619 ] }, - "id": 1360, + "id": 1620, "nodeType": "SourceUnit", "nodes": [ { - "id": 1345, + "id": 1605, "literals": [ "solidity", "0.4", - ".23" + ".24" ], "nodeType": "PragmaDirective", - "src": "0:23:8" + "src": "0:23:13" }, { "baseContracts": [], @@ -242,18 +242,18 @@ "contractKind": "contract", "documentation": "@title SelfAuthorized - authorizes current contract to perform actions\n @author Richard Meissner - ", "fullyImplemented": true, - "id": 1359, + "id": 1619, "linearizedBaseContracts": [ - 1359 + 1619 ], "name": "SelfAuthorized", "nodeType": "ContractDefinition", "nodes": [ { "body": { - "id": 1357, + "id": 1617, "nodeType": "Block", - "src": "204:64:8", + "src": "204:64:13", "statements": [ { "expression": { @@ -265,7 +265,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1353, + "id": 1613, "isConstant": false, "isLValue": false, "isPure": false, @@ -274,18 +274,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1348, + "id": 1608, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2396, - "src": "222:3:8", + "referencedDeclaration": 2598, + "src": "222:3:13", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 1349, + "id": 1609, "isConstant": false, "isLValue": false, "isPure": false, @@ -293,7 +293,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "222:10:8", + "src": "222:10:13", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -306,14 +306,14 @@ "arguments": [ { "argumentTypes": null, - "id": 1351, + "id": 1611, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2411, - "src": "244:4:8", + "referencedDeclaration": 2617, + "src": "244:4:13", "typeDescriptions": { - "typeIdentifier": "t_contract$_SelfAuthorized_$1359", + "typeIdentifier": "t_contract$_SelfAuthorized_$1619", "typeString": "contract SelfAuthorized" } } @@ -321,24 +321,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_SelfAuthorized_$1359", + "typeIdentifier": "t_contract$_SelfAuthorized_$1619", "typeString": "contract SelfAuthorized" } ], - "id": 1350, + "id": 1610, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "236:7:8", + "src": "236:7:13", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 1352, + "id": 1612, "isConstant": false, "isLValue": false, "isPure": false, @@ -346,13 +346,13 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "236:13:8", + "src": "236:13:13", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "222:27:8", + "src": "222:27:13", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -366,21 +366,21 @@ "typeString": "bool" } ], - "id": 1347, + "id": 1607, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "214:7:8", + "referencedDeclaration": 2601, + "src": "214:7:13", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1354, + "id": 1614, "isConstant": false, "isLValue": false, "isPure": false, @@ -388,48 +388,48 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "214:36:8", + "src": "214:36:13", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1355, + "id": 1615, "nodeType": "ExpressionStatement", - "src": "214:36:8" + "src": "214:36:13" }, { - "id": 1356, + "id": 1616, "nodeType": "PlaceholderStatement", - "src": "260:1:8" + "src": "260:1:13" } ] }, "documentation": null, - "id": 1358, + "id": 1618, "name": "authorized", "nodeType": "ModifierDefinition", "parameters": { - "id": 1346, + "id": 1606, "nodeType": "ParameterList", "parameters": [], - "src": "201:2:8" + "src": "201:2:13" }, - "src": "182:86:8", + "src": "182:86:13", "visibility": "internal" } ], - "scope": 1360, - "src": "152:118:8" + "scope": 1620, + "src": "152:118:13" } ], - "src": "0:271:8" + "src": "0:271:13" }, "compiler": { "name": "solc", - "version": "0.4.23+commit.124ca40d.Emscripten.clang" + "version": "0.4.24+commit.e67f0147.Emscripten.clang" }, "networks": {}, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-16T10:51:14.750Z" + "updatedAt": "2018-05-27T11:12:45.584Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/SocialRecoveryModule.json b/safe-contracts/build/contracts/SocialRecoveryModule.json index f16deac0..1da04b63 100644 --- a/safe-contracts/build/contracts/SocialRecoveryModule.json +++ b/safe-contracts/build/contracts/SocialRecoveryModule.json @@ -1,20 +1,6 @@ { "contractName": "SocialRecoveryModule", "abi": [ - { - "constant": true, - "inputs": [], - "name": "REPLACE_OWNER_FUNCTION_IDENTIFIER", - "outputs": [ - { - "name": "", - "type": "bytes4" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, { "constant": true, "inputs": [], @@ -201,8 +187,16 @@ "constant": false, "inputs": [ { - "name": "data", - "type": "bytes" + "name": "prevOwner", + "type": "address" + }, + { + "name": "oldOwner", + "type": "address" + }, + { + "name": "newOwner", + "type": "address" } ], "name": "recoverAccess", @@ -246,77 +240,77 @@ } ], "payable": false, - "stateMutability": "view", + "stateMutability": "pure", "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b5061113b806100206000396000f3006080604052600436106100db576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806336749c1a146100e05780633cf5b3091461014957806342cde4e8146101bc578063481c6a75146101ed57806368125a1b1461024457806379716e431461029f5780637de7edef146102d05780639ca89d0d14610313578063a3f4df7e1461035c578063ae68b056146103ec578063b79ffaff14610471578063ce146828146104da578063d2740c7614610547578063e52cb36a146105b0578063ffa1ad74146105f9575b600080fd5b3480156100ec57600080fd5b506100f5610689565b60405180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200191505060405180910390f35b34801561015557600080fd5b506101ba60048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803560ff1690602001909291905050506106ad565b005b3480156101c857600080fd5b506101d1610822565b604051808260ff1660ff16815260200191505060405180910390f35b3480156101f957600080fd5b50610202610835565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561025057600080fd5b50610285600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061085b565b604051808215151515815260200191505060405180910390f35b3480156102ab57600080fd5b506102ce600480360381019080803560001916906020019092919050505061087b565b005b3480156102dc57600080fd5b50610311600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061097c565b005b34801561031f57600080fd5b506103426004803603810190808035600019169060200190929190505050610a41565b604051808215151515815260200191505060405180910390f35b34801561036857600080fd5b50610371610b40565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103b1578082015181840152602081019050610396565b50505050905090810190601f1680156103de5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156103f857600080fd5b50610453600480360381019080803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050610b79565b60405180826000191660001916815260200191505060405180910390f35b34801561047d57600080fd5b506104c06004803603810190808035600019169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610be5565b604051808215151515815260200191505060405180910390f35b3480156104e657600080fd5b5061050560048036038101908080359060200190929190505050610c14565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561055357600080fd5b506105ae600480360381019080803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050610c52565b005b3480156105bc57600080fd5b506105df6004803603810190808035600019169060200190929190505050610f5f565b604051808215151515815260200191505060405180910390f35b34801561060557600080fd5b5061060e610f7f565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561064e578082015181840152602081019050610633565b50505050905090810190601f16801561067b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b7fe318b52b0000000000000000000000000000000000000000000000000000000081565b60008083518360ff16111515156106c357600080fd5b60028360ff16101515156106d657600080fd5b6106de610fb8565b600091505b83518210156107ea5783828151811015156106fa57fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff161415151561072c57600080fd5b600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151561078557600080fd5b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555081806001019250506106e3565b8360029080519060200190610800929190611042565b5082600160146101000a81548160ff021916908360ff16021790555050505050565b600160149054906101000a900460ff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60036020528060005260406000206000915054906101000a900460ff1681565b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156108d357600080fd5b60046000826000191660001916815260200190815260200160002060009054906101000a900460ff1615151561090857600080fd5b600160056000836000191660001916815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156109d857600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141515156109fe57600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060008090505b600280549050811015610b34576005600085600019166000191681526020019081526020016000206000600283815481101515610a8357fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610b045781806001019250505b600160149054906101000a900460ff1660ff16821415610b275760019250610b39565b8080600101915050610a4a565b600092505b5050919050565b6040805190810160405280601681526020017f536f6369616c205265636f76657279204d6f64756c650000000000000000000081525081565b6000816040518082805190602001908083835b602083101515610bb15780518252602082019150602081019050602083039250610b8c565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390209050919050565b60056020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b600281815481101515610c2357fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515610cad57600080fd5b602083015191507fe318b52b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141515610d2057600080fd5b610d2983610b79565b905060046000826000191660001916815260200190815260200160002060009054906101000a900460ff16151515610d6057600080fd5b610d6981610a41565b1515610d7457600080fd5b600160046000836000191660001916815260200190815260200160002060006101000a81548160ff021916908315150217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a7600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660008660006040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200180602001836002811115610e8557fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b83811015610ec5578082015181840152602081019050610eaa565b50505050905090810190601f168015610ef25780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610f1457600080fd5b505af1158015610f28573d6000803e3d6000fd5b505050506040513d6020811015610f3e57600080fd5b81019080805190602001909291905050501515610f5a57600080fd5b505050565b60046020528060005260406000206000915054906101000a900460ff1681565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610fff57600080fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b8280548282559060005260206000209081019282156110bb579160200282015b828111156110ba5782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190611062565b5b5090506110c891906110cc565b5090565b61110c91905b8082111561110857600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055506001016110d2565b5090565b905600a165627a7a723058201123dfa8605844d9977e93c4ec8232b4cd0c983832a7164c449e76402ee39bd50029", - "deployedBytecode": "0x6080604052600436106100db576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806336749c1a146100e05780633cf5b3091461014957806342cde4e8146101bc578063481c6a75146101ed57806368125a1b1461024457806379716e431461029f5780637de7edef146102d05780639ca89d0d14610313578063a3f4df7e1461035c578063ae68b056146103ec578063b79ffaff14610471578063ce146828146104da578063d2740c7614610547578063e52cb36a146105b0578063ffa1ad74146105f9575b600080fd5b3480156100ec57600080fd5b506100f5610689565b60405180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200191505060405180910390f35b34801561015557600080fd5b506101ba60048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803560ff1690602001909291905050506106ad565b005b3480156101c857600080fd5b506101d1610822565b604051808260ff1660ff16815260200191505060405180910390f35b3480156101f957600080fd5b50610202610835565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561025057600080fd5b50610285600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061085b565b604051808215151515815260200191505060405180910390f35b3480156102ab57600080fd5b506102ce600480360381019080803560001916906020019092919050505061087b565b005b3480156102dc57600080fd5b50610311600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061097c565b005b34801561031f57600080fd5b506103426004803603810190808035600019169060200190929190505050610a41565b604051808215151515815260200191505060405180910390f35b34801561036857600080fd5b50610371610b40565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103b1578082015181840152602081019050610396565b50505050905090810190601f1680156103de5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156103f857600080fd5b50610453600480360381019080803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050610b79565b60405180826000191660001916815260200191505060405180910390f35b34801561047d57600080fd5b506104c06004803603810190808035600019169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610be5565b604051808215151515815260200191505060405180910390f35b3480156104e657600080fd5b5061050560048036038101908080359060200190929190505050610c14565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561055357600080fd5b506105ae600480360381019080803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050610c52565b005b3480156105bc57600080fd5b506105df6004803603810190808035600019169060200190929190505050610f5f565b604051808215151515815260200191505060405180910390f35b34801561060557600080fd5b5061060e610f7f565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561064e578082015181840152602081019050610633565b50505050905090810190601f16801561067b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b7fe318b52b0000000000000000000000000000000000000000000000000000000081565b60008083518360ff16111515156106c357600080fd5b60028360ff16101515156106d657600080fd5b6106de610fb8565b600091505b83518210156107ea5783828151811015156106fa57fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff161415151561072c57600080fd5b600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151561078557600080fd5b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555081806001019250506106e3565b8360029080519060200190610800929190611042565b5082600160146101000a81548160ff021916908360ff16021790555050505050565b600160149054906101000a900460ff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60036020528060005260406000206000915054906101000a900460ff1681565b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156108d357600080fd5b60046000826000191660001916815260200190815260200160002060009054906101000a900460ff1615151561090857600080fd5b600160056000836000191660001916815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156109d857600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141515156109fe57600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060008090505b600280549050811015610b34576005600085600019166000191681526020019081526020016000206000600283815481101515610a8357fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610b045781806001019250505b600160149054906101000a900460ff1660ff16821415610b275760019250610b39565b8080600101915050610a4a565b600092505b5050919050565b6040805190810160405280601681526020017f536f6369616c205265636f76657279204d6f64756c650000000000000000000081525081565b6000816040518082805190602001908083835b602083101515610bb15780518252602082019150602081019050602083039250610b8c565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390209050919050565b60056020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b600281815481101515610c2357fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515610cad57600080fd5b602083015191507fe318b52b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141515610d2057600080fd5b610d2983610b79565b905060046000826000191660001916815260200190815260200160002060009054906101000a900460ff16151515610d6057600080fd5b610d6981610a41565b1515610d7457600080fd5b600160046000836000191660001916815260200190815260200160002060006101000a81548160ff021916908315150217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a7600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660008660006040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200180602001836002811115610e8557fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b83811015610ec5578082015181840152602081019050610eaa565b50505050905090810190601f168015610ef25780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610f1457600080fd5b505af1158015610f28573d6000803e3d6000fd5b505050506040513d6020811015610f3e57600080fd5b81019080805190602001909291905050501515610f5a57600080fd5b505050565b60046020528060005260406000206000915054906101000a900460ff1681565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610fff57600080fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b8280548282559060005260206000209081019282156110bb579160200282015b828111156110ba5782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190611062565b5b5090506110c891906110cc565b5090565b61110c91905b8082111561110857600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055506001016110d2565b5090565b905600a165627a7a723058201123dfa8605844d9977e93c4ec8232b4cd0c983832a7164c449e76402ee39bd50029", - "sourceMap": "306:3542:12:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;306:3542:12;;;;;;;", - "deployedSourceMap": "306:3542:12:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;459:72;;8:9:-1;5:2;;;30:1;27;20:12;5:2;459:72:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1253:494;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1253:494:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;538:22;;8:9:-1;5:2;;;30:1;27;20:12;5:2;538:22:12;;;;;;;;;;;;;;;;;;;;;;;;;;;262:28:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;262:28:5;;;;;;;;;;;;;;;;;;;;;;;;;;;661:41:12;;8:9:-1;5:2;;;30:1;27;20:12;5:2;661:41:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1860:181;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1860:181:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;626:208:4;;8:9:-1;5:2;;;30:1;27;20:12;5:2;626:208:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;3182:405:12;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3182:405:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;353:54;;8:9:-1;5:2;;;30:1;27;20:12;5:2;353:54:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;353:54:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3716:130;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3716:130:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;905:65;;8:9:-1;5:2;;;30:1;27;20:12;5:2;905:65:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;566:24;;8:9:-1;5:2;;;30:1;27;20:12;5:2;566:24:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2245:776;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2245:776:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;770:43;;8:9:-1;5:2;;;30:1;27;20:12;5:2;770:43:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;413:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;413:40:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;413:40:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;459:72;;;:::o;1253:494::-;1476:9;1531:14;1357:8;:15;1343:10;:29;;;;1335:38;;;;;;;;1405:1;1391:10;:15;;;;1383:24;;;;;;;;1417:12;:10;:12::i;:::-;1488:1;1476:13;;1471:210;1495:8;:15;1491:1;:19;1471:210;;;1548:8;1557:1;1548:11;;;;;;;;;;;;;;;;;;1531:28;;1591:1;1581:6;:11;;;;1573:20;;;;;;;;1616:8;:16;1625:6;1616:16;;;;;;;;;;;;;;;;;;;;;;;;;1615:17;1607:26;;;;;;;;1666:4;1647:8;:16;1656:6;1647:16;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;1512:3;;;;;;;1471:210;;;1700:8;1690:7;:18;;;;;;;;;;;;:::i;:::-;;1730:10;1718:9;;:22;;;;;;;;;;;;;;;;;;1253:494;;;;:::o;538:22::-;;;;;;;;;;;;;:::o;262:28:5:-;;;;;;;;;;;;;:::o;661:41:12:-;;;;;;;;;;;;;;;;;;;;;;:::o;1860:181::-;1017:8;:20;1026:10;1017:20;;;;;;;;;;;;;;;;;;;;;;;;;1009:29;;;;;;;;1963:10;:20;1974:8;1963:20;;;;;;;;;;;;;;;;;;;;;;;;;;;1962:21;1954:30;;;;;;;;2030:4;1994:11;:21;2006:8;1994:21;;;;;;;;;;;;;;;;;:33;2016:10;1994:33;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;1860:181;:::o;626:208:4:-;359:7:5;;;;;;;;;;;337:30;;:10;:30;;;329:39;;;;;;;;791:1:4;776:11;:16;;;;768:25;;;;;;;;816:11;803:10;;:24;;;;;;;;;;;;;;;;;;626:208;:::o;3182:405:12:-;3283:4;3303:25;3343:9;3355:1;3343:13;;3338:221;3362:7;:14;;;;3358:1;:18;3338:221;;;3401:11;:21;3413:8;3401:21;;;;;;;;;;;;;;;;;:33;3423:7;3431:1;3423:10;;;;;;;;;;;;;;;;;;;;;;;;;;;3401:33;;;;;;;;;;;;;;;;;;;;;;;;;3397:74;;;3452:19;;;;;;;3397:74;3510:9;;;;;;;;;;;3489:30;;:17;:30;3485:63;;;3544:4;3537:11;;;;3485:63;3378:3;;;;;;;3338:221;;;3575:5;3568:12;;3182:405;;;;;;:::o;353:54::-;;;;;;;;;;;;;;;;;;;;:::o;3716:130::-;3794:7;3834:4;3824:15;;;;;;;;;;;;;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;;;3824:15:12;;;;;;;;;;;;;;;;3817:22;;3716:130;;;:::o;905:65::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;566:24::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2245:776::-;2485:25;2744:16;2381:8;:20;2390:10;2381:20;;;;;;;;;;;;;;;;;;;;;;;;;2373:29;;;;;;;;2645:4;2639;2635:15;2629:22;2607:44;;2700:33;2678:55;;;:18;:55;;;;2670:64;;;;;;;;2763:17;2775:4;2763:11;:17::i;:::-;2744:36;;2799:10;:20;2810:8;2799:20;;;;;;;;;;;;;;;;;;;;;;;;;;;2798:21;2790:30;;;;;;;;2838:38;2867:8;2838:28;:38::i;:::-;2830:47;;;;;;;;2910:4;2887:10;:20;2898:8;2887:20;;;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;2932:7;;;;;;;;;;;:33;;;2974:7;;;;;;;;;;;2984:1;2987:4;2993:19;2932:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;2932:81:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2932:81:12;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2932:81:12;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2932:81:12;;;;;;;;;;;;;;;;2924:90;;;;;;;;2245:776;;;:::o;770:43::-;;;;;;;;;;;;;;;;;;;;;;:::o;413:40::-;;;;;;;;;;;;;;;;;;;;:::o;392:268:5:-;606:1;594:7;;;;;;;;;;;586:21;;;578:30;;;;;;;;642:10;618:7;;:35;;;;;;;;;;;;;;;;;;392:268::o;306:3542:12:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o", - "source": "pragma solidity 0.4.23;\nimport \"../Enum.sol\";\nimport \"../Module.sol\";\nimport \"../ModuleManager.sol\";\nimport \"../OwnerManager.sol\";\n\n\n/// @title Social Recovery Module - Allows to replace an owner without Safe confirmations if friends approve the replacement.\n/// @author Stefan George - \ncontract SocialRecoveryModule is Module {\n\n string public constant NAME = \"Social Recovery Module\";\n string public constant VERSION = \"0.0.1\";\n bytes4 public constant REPLACE_OWNER_FUNCTION_IDENTIFIER = hex\"e318b52b\";\n\n uint8 public threshold;\n address[] public friends;\n\n // isFriend mapping maps friend's address to friend status.\n mapping (address => bool) public isFriend;\n // isExecuted mapping maps data hash to execution status.\n mapping (bytes32 => bool) public isExecuted;\n // isConfirmed mapping maps data hash to friend's address to confirmation status.\n mapping (bytes32 => mapping (address => bool)) public isConfirmed;\n\n modifier onlyFriend() {\n require(isFriend[msg.sender]);\n _;\n }\n\n /// @dev Setup function sets initial storage of contract.\n /// @param _friends List of friends' addresses.\n /// @param _threshold Required number of friends to confirm replacement.\n function setup(address[] _friends, uint8 _threshold)\n public\n {\n require(_threshold <= _friends.length);\n require(_threshold >= 2);\n setManager();\n // Set allowed friends.\n for (uint256 i = 0; i < _friends.length; i++) {\n address friend = _friends[i];\n require(friend != 0);\n require(!isFriend[friend]);\n isFriend[friend] = true;\n }\n friends = _friends;\n threshold = _threshold;\n }\n\n /// @dev Allows a friend to confirm a Safe transaction.\n /// @param dataHash Safe transaction hash.\n function confirmTransaction(bytes32 dataHash)\n public\n onlyFriend\n {\n require(!isExecuted[dataHash]);\n isConfirmed[dataHash][msg.sender] = true;\n }\n\n /// @dev Returns if Safe transaction is a valid owner replacement transaction.\n /// @param data Encoded owner replacement transaction.\n /// @return Returns if transaction can be executed.\n function recoverAccess(bytes data)\n public\n {\n // Only friends are allowed to execute the replacement.\n require(isFriend[msg.sender]);\n // Validate that transaction is a owner replacement transaction.\n bytes4 functionIdentifier;\n // solium-disable-next-line security/no-inline-assembly\n assembly {\n functionIdentifier := mload(add(data, 0x20))\n }\n require(functionIdentifier == REPLACE_OWNER_FUNCTION_IDENTIFIER);\n bytes32 dataHash = getDataHash(data);\n require(!isExecuted[dataHash]);\n require(isConfirmedByRequiredFriends(dataHash));\n isExecuted[dataHash] = true;\n require(manager.execTransactionFromModule(address(manager), 0, data, Enum.Operation.Call));\n }\n\n /// @dev Returns if Safe transaction is a valid owner replacement transaction.\n /// @param dataHash Data hash.\n /// @return Confirmation status.\n function isConfirmedByRequiredFriends(bytes32 dataHash)\n public\n view\n returns (bool)\n {\n uint256 confirmationCount;\n for (uint256 i = 0; i < friends.length; i++) {\n if (isConfirmed[dataHash][friends[i]])\n confirmationCount++;\n if (confirmationCount == threshold)\n return true;\n }\n return false;\n }\n\n /// @dev Returns hash of data encoding owner replacement.\n /// @param data Data payload.\n /// @return Data hash.\n function getDataHash(bytes data)\n public\n view\n returns (bytes32)\n {\n return keccak256(data);\n }\n}\n", + "bytecode": "0x608060405234801561001057600080fd5b50611171806100206000396000f3006080604052600436106100d0576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680633cf5b309146100d557806342cde4e814610148578063481c6a751461017957806368125a1b146101d057806377231eaa1461022b57806379716e43146102ae5780637de7edef146102df5780639ca89d0d14610322578063a3f4df7e1461036b578063ae68b056146103fb578063b79ffaff14610480578063ce146828146104e9578063e52cb36a14610556578063ffa1ad741461059f575b600080fd5b3480156100e157600080fd5b5061014660048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803560ff16906020019092919050505061062f565b005b34801561015457600080fd5b5061015d6107a4565b604051808260ff1660ff16815260200191505060405180910390f35b34801561018557600080fd5b5061018e6107b7565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101dc57600080fd5b50610211600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107dd565b604051808215151515815260200191505060405180910390f35b34801561023757600080fd5b506102ac600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107fd565b005b3480156102ba57600080fd5b506102dd6004803603810190808035600019169060200190929190505050610bbe565b005b3480156102eb57600080fd5b50610320600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610cbf565b005b34801561032e57600080fd5b506103516004803603810190808035600019169060200190929190505050610d84565b604051808215151515815260200191505060405180910390f35b34801561037757600080fd5b50610380610e83565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103c05780820151818401526020810190506103a5565b50505050905090810190601f1680156103ed5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561040757600080fd5b50610462600480360381019080803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050610ebc565b60405180826000191660001916815260200191505060405180910390f35b34801561048c57600080fd5b506104cf6004803603810190808035600019169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f28565b604051808215151515815260200191505060405180910390f35b3480156104f557600080fd5b5061051460048036038101908080359060200190929190505050610f57565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561056257600080fd5b506105856004803603810190808035600019169060200190929190505050610f95565b604051808215151515815260200191505060405180910390f35b3480156105ab57600080fd5b506105b4610fb5565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156105f45780820151818401526020810190506105d9565b50505050905090810190601f1680156106215780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60008083518360ff161115151561064557600080fd5b60028360ff161015151561065857600080fd5b610660610fee565b600091505b835182101561076c57838281518110151561067c57fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff16141515156106ae57600080fd5b600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151561070757600080fd5b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508180600101925050610665565b8360029080519060200190610782929190611078565b5082600160146101000a81548160ff021916908360ff16021790555050505050565b600160149054906101000a900460ff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60036020528060005260406000206000915054906101000a900460ff1681565b60606000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561085957600080fd5b848484604051602401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200193505050506040516020818303038152906040527fe318b52b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050915061098682610ebc565b905060046000826000191660001916815260200190815260200160002060009054906101000a900460ff161515156109bd57600080fd5b6109c681610d84565b15156109d157600080fd5b600160046000836000191660001916815260200190815260200160002060006101000a81548160ff021916908315150217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a7600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660008560006040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200180602001836002811115610ae257fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b83811015610b22578082015181840152602081019050610b07565b50505050905090810190601f168015610b4f5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610b7157600080fd5b505af1158015610b85573d6000803e3d6000fd5b505050506040513d6020811015610b9b57600080fd5b81019080805190602001909291905050501515610bb757600080fd5b5050505050565b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515610c1657600080fd5b60046000826000191660001916815260200190815260200160002060009054906101000a900460ff16151515610c4b57600080fd5b600160056000836000191660001916815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610d1b57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515610d4157600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060008090505b600280549050811015610e77576005600085600019166000191681526020019081526020016000206000600283815481101515610dc657fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610e475781806001019250505b600160149054906101000a900460ff1660ff16821415610e6a5760019250610e7c565b8080600101915050610d8d565b600092505b5050919050565b6040805190810160405280601681526020017f536f6369616c205265636f76657279204d6f64756c650000000000000000000081525081565b6000816040518082805190602001908083835b602083101515610ef45780518252602082019150602081019050602083039250610ecf565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390209050919050565b60056020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b600281815481101515610f6657fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60046020528060005260406000206000915054906101000a900460ff1681565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561103557600080fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b8280548282559060005260206000209081019282156110f1579160200282015b828111156110f05782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190611098565b5b5090506110fe9190611102565b5090565b61114291905b8082111561113e57600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905550600101611108565b5090565b905600a165627a7a7230582016bbe219e7ccae5c600c8f48a1fc8b74cff478e1cbbcf8be80a150f855d6eb800029", + "deployedBytecode": "0x6080604052600436106100d0576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680633cf5b309146100d557806342cde4e814610148578063481c6a751461017957806368125a1b146101d057806377231eaa1461022b57806379716e43146102ae5780637de7edef146102df5780639ca89d0d14610322578063a3f4df7e1461036b578063ae68b056146103fb578063b79ffaff14610480578063ce146828146104e9578063e52cb36a14610556578063ffa1ad741461059f575b600080fd5b3480156100e157600080fd5b5061014660048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803560ff16906020019092919050505061062f565b005b34801561015457600080fd5b5061015d6107a4565b604051808260ff1660ff16815260200191505060405180910390f35b34801561018557600080fd5b5061018e6107b7565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101dc57600080fd5b50610211600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107dd565b604051808215151515815260200191505060405180910390f35b34801561023757600080fd5b506102ac600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107fd565b005b3480156102ba57600080fd5b506102dd6004803603810190808035600019169060200190929190505050610bbe565b005b3480156102eb57600080fd5b50610320600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610cbf565b005b34801561032e57600080fd5b506103516004803603810190808035600019169060200190929190505050610d84565b604051808215151515815260200191505060405180910390f35b34801561037757600080fd5b50610380610e83565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103c05780820151818401526020810190506103a5565b50505050905090810190601f1680156103ed5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561040757600080fd5b50610462600480360381019080803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050610ebc565b60405180826000191660001916815260200191505060405180910390f35b34801561048c57600080fd5b506104cf6004803603810190808035600019169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f28565b604051808215151515815260200191505060405180910390f35b3480156104f557600080fd5b5061051460048036038101908080359060200190929190505050610f57565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561056257600080fd5b506105856004803603810190808035600019169060200190929190505050610f95565b604051808215151515815260200191505060405180910390f35b3480156105ab57600080fd5b506105b4610fb5565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156105f45780820151818401526020810190506105d9565b50505050905090810190601f1680156106215780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60008083518360ff161115151561064557600080fd5b60028360ff161015151561065857600080fd5b610660610fee565b600091505b835182101561076c57838281518110151561067c57fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff16141515156106ae57600080fd5b600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151561070757600080fd5b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508180600101925050610665565b8360029080519060200190610782929190611078565b5082600160146101000a81548160ff021916908360ff16021790555050505050565b600160149054906101000a900460ff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60036020528060005260406000206000915054906101000a900460ff1681565b60606000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561085957600080fd5b848484604051602401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200193505050506040516020818303038152906040527fe318b52b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050915061098682610ebc565b905060046000826000191660001916815260200190815260200160002060009054906101000a900460ff161515156109bd57600080fd5b6109c681610d84565b15156109d157600080fd5b600160046000836000191660001916815260200190815260200160002060006101000a81548160ff021916908315150217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a7600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660008560006040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200180602001836002811115610ae257fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b83811015610b22578082015181840152602081019050610b07565b50505050905090810190601f168015610b4f5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610b7157600080fd5b505af1158015610b85573d6000803e3d6000fd5b505050506040513d6020811015610b9b57600080fd5b81019080805190602001909291905050501515610bb757600080fd5b5050505050565b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515610c1657600080fd5b60046000826000191660001916815260200190815260200160002060009054906101000a900460ff16151515610c4b57600080fd5b600160056000836000191660001916815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610d1b57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515610d4157600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060008090505b600280549050811015610e77576005600085600019166000191681526020019081526020016000206000600283815481101515610dc657fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610e475781806001019250505b600160149054906101000a900460ff1660ff16821415610e6a5760019250610e7c565b8080600101915050610d8d565b600092505b5050919050565b6040805190810160405280601681526020017f536f6369616c205265636f76657279204d6f64756c650000000000000000000081525081565b6000816040518082805190602001908083835b602083101515610ef45780518252602082019150602081019050602083039250610ecf565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390209050919050565b60056020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b600281815481101515610f6657fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60046020528060005260406000206000915054906101000a900460ff1681565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561103557600080fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b8280548282559060005260206000209081019282156110f1579160200282015b828111156110f05782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190611098565b5b5090506110fe9190611102565b5090565b61114291905b8082111561113e57600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905550600101611108565b5090565b905600a165627a7a7230582016bbe219e7ccae5c600c8f48a1fc8b74cff478e1cbbcf8be80a150f855d6eb800029", + "sourceMap": "306:3426:18:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;306:3426:18;;;;;;;", + "deployedSourceMap": "306:3426:18:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1175:494;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1175:494:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;460:22;;8:9:-1;5:2;;;30:1;27;20:12;5:2;460:22:18;;;;;;;;;;;;;;;;;;;;;;;;;;;262:28:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;262:28:7;;;;;;;;;;;;;;;;;;;;;;;;;;;583:41:18;;8:9:-1;5:2;;;30:1;27;20:12;5:2;583:41:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2296:609;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2296:609:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1782:181;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1782:181:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;626:208:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;626:208:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;3066:405:18;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3066:405:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;353:54;;8:9:-1;5:2;;;30:1;27;20:12;5:2;353:54: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;353:54:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3600:130;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3600:130:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;827:65;;8:9:-1;5:2;;;30:1;27;20:12;5:2;827:65:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;488:24;;8:9:-1;5:2;;;30:1;27;20:12;5:2;488:24:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;692:43;;8:9:-1;5:2;;;30:1;27;20:12;5:2;692:43:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;413:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;413:40: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;413:40:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1175:494;1398:9;1453:14;1279:8;:15;1265:10;:29;;;;1257:38;;;;;;;;1327:1;1313:10;:15;;;;1305:24;;;;;;;;1339:12;:10;:12::i;:::-;1410:1;1398:13;;1393:210;1417:8;:15;1413:1;:19;1393:210;;;1470:8;1479:1;1470:11;;;;;;;;;;;;;;;;;;1453:28;;1513:1;1503:6;:11;;;;1495:20;;;;;;;;1538:8;:16;1547:6;1538:16;;;;;;;;;;;;;;;;;;;;;;;;;1537:17;1529:26;;;;;;;;1588:4;1569:8;:16;1578:6;1569:16;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;1434:3;;;;;;;1393:210;;;1622:8;1612:7;:18;;;;;;;;;;;;:::i;:::-;;1652:10;1640:9;;:22;;;;;;;;;;;;;;;;;;1175:494;;;;:::o;460:22::-;;;;;;;;;;;;;:::o;262:28:7:-;;;;;;;;;;;;;:::o;583:41:18:-;;;;;;;;;;;;;;;;;;;;;;:::o;2296:609::-;2506:17;2628:16;2475:8;:20;2484:10;2475:20;;;;;;;;;;;;;;;;;;;;;;;;;2467:29;;;;;;;;2588:9;2599:8;2609;2526:92;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;2526:92:18;;;;;;;38:4:-1;29:7;25:18;67:10;61:17;96:58;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;2526:92:18;2506:112;;2647:17;2659:4;2647:11;:17::i;:::-;2628:36;;2683:10;:20;2694:8;2683:20;;;;;;;;;;;;;;;;;;;;;;;;;;;2682:21;2674:30;;;;;;;;2722:38;2751:8;2722:28;:38::i;:::-;2714:47;;;;;;;;2794:4;2771:10;:20;2782:8;2771:20;;;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;2816:7;;;;;;;;;;;:33;;;2858:7;;;;;;;;;;;2868:1;2871:4;2877:19;2816:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;2816:81:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2816:81:18;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2816:81:18;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2816:81:18;;;;;;;;;;;;;;;;2808:90;;;;;;;;2296:609;;;;;:::o;1782:181::-;939:8;:20;948:10;939:20;;;;;;;;;;;;;;;;;;;;;;;;;931:29;;;;;;;;1885:10;:20;1896:8;1885:20;;;;;;;;;;;;;;;;;;;;;;;;;;;1884:21;1876:30;;;;;;;;1952:4;1916:11;:21;1928:8;1916:21;;;;;;;;;;;;;;;;;:33;1938:10;1916:33;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;1782:181;:::o;626:208:5:-;359:7:7;;;;;;;;;;;337:30;;:10;:30;;;329:39;;;;;;;;791:1:5;776:11;:16;;;;768:25;;;;;;;;816:11;803:10;;:24;;;;;;;;;;;;;;;;;;626:208;:::o;3066:405:18:-;3167:4;3187:25;3227:9;3239:1;3227:13;;3222:221;3246:7;:14;;;;3242:1;:18;3222:221;;;3285:11;:21;3297:8;3285:21;;;;;;;;;;;;;;;;;:33;3307:7;3315:1;3307:10;;;;;;;;;;;;;;;;;;;;;;;;;;;3285:33;;;;;;;;;;;;;;;;;;;;;;;;;3281:74;;;3336:19;;;;;;;3281:74;3394:9;;;;;;;;;;;3373:30;;:17;:30;3369:63;;;3428:4;3421:11;;;;3369:63;3262:3;;;;;;;3222:221;;;3459:5;3452:12;;3066:405;;;;;;:::o;353:54::-;;;;;;;;;;;;;;;;;;;;:::o;3600:130::-;3678:7;3718:4;3708:15;;;;;;;;;;;;;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;;;3708:15:18;;;;;;;;;;;;;;;;3701:22;;3600:130;;;:::o;827:65::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;488:24::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;692:43::-;;;;;;;;;;;;;;;;;;;;;;:::o;413:40::-;;;;;;;;;;;;;;;;;;;;:::o;392:268:7:-;606:1;594:7;;;;;;;;;;;586:21;;;578:30;;;;;;;;642:10;618:7;;:35;;;;;;;;;;;;;;;;;;392:268::o;306:3426:18:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o", + "source": "pragma solidity 0.4.24;\nimport \"../Enum.sol\";\nimport \"../Module.sol\";\nimport \"../ModuleManager.sol\";\nimport \"../OwnerManager.sol\";\n\n\n/// @title Social Recovery Module - Allows to replace an owner without Safe confirmations if friends approve the replacement.\n/// @author Stefan George - \ncontract SocialRecoveryModule is Module {\n\n string public constant NAME = \"Social Recovery Module\";\n string public constant VERSION = \"0.0.1\";\n\n uint8 public threshold;\n address[] public friends;\n\n // isFriend mapping maps friend's address to friend status.\n mapping (address => bool) public isFriend;\n // isExecuted mapping maps data hash to execution status.\n mapping (bytes32 => bool) public isExecuted;\n // isConfirmed mapping maps data hash to friend's address to confirmation status.\n mapping (bytes32 => mapping (address => bool)) public isConfirmed;\n\n modifier onlyFriend() {\n require(isFriend[msg.sender]);\n _;\n }\n\n /// @dev Setup function sets initial storage of contract.\n /// @param _friends List of friends' addresses.\n /// @param _threshold Required number of friends to confirm replacement.\n function setup(address[] _friends, uint8 _threshold)\n public\n {\n require(_threshold <= _friends.length);\n require(_threshold >= 2);\n setManager();\n // Set allowed friends.\n for (uint256 i = 0; i < _friends.length; i++) {\n address friend = _friends[i];\n require(friend != 0);\n require(!isFriend[friend]);\n isFriend[friend] = true;\n }\n friends = _friends;\n threshold = _threshold;\n }\n\n /// @dev Allows a friend to confirm a Safe transaction.\n /// @param dataHash Safe transaction hash.\n function confirmTransaction(bytes32 dataHash)\n public\n onlyFriend\n {\n require(!isExecuted[dataHash]);\n isConfirmed[dataHash][msg.sender] = true;\n }\n\n /// @dev Returns if Safe transaction is a valid owner replacement transaction.\n /// @param prevOwner Owner that pointed to the owner to be replaced in the linked list\n /// @param oldOwner Owner address to be replaced.\n /// @param newOwner New owner address.\n /// @return Returns if transaction can be executed.\n function recoverAccess(address prevOwner, address oldOwner, address newOwner)\n public\n {\n // Only friends are allowed to execute the replacement.\n require(isFriend[msg.sender]);\n bytes memory data = abi.encodeWithSignature(\"swapOwner(address,address,address)\", prevOwner, oldOwner, newOwner);\n bytes32 dataHash = getDataHash(data);\n require(!isExecuted[dataHash]);\n require(isConfirmedByRequiredFriends(dataHash));\n isExecuted[dataHash] = true;\n require(manager.execTransactionFromModule(address(manager), 0, data, Enum.Operation.Call));\n }\n\n /// @dev Returns if Safe transaction is a valid owner replacement transaction.\n /// @param dataHash Data hash.\n /// @return Confirmation status.\n function isConfirmedByRequiredFriends(bytes32 dataHash)\n public\n view\n returns (bool)\n {\n uint256 confirmationCount;\n for (uint256 i = 0; i < friends.length; i++) {\n if (isConfirmed[dataHash][friends[i]])\n confirmationCount++;\n if (confirmationCount == threshold)\n return true;\n }\n return false;\n }\n\n /// @dev Returns hash of data encoding owner replacement.\n /// @param data Data payload.\n /// @return Data hash.\n function getDataHash(bytes data)\n public\n pure\n returns (bytes32)\n {\n return keccak256(data);\n }\n}\n", "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/modules/SocialRecoveryModule.sol", "ast": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/modules/SocialRecoveryModule.sol", "exportedSymbols": { "SocialRecoveryModule": [ - 2035 + 2234 ] }, - "id": 2036, + "id": 2235, "nodeType": "SourceUnit", "nodes": [ { - "id": 1777, + "id": 1975, "literals": [ "solidity", "0.4", - ".23" + ".24" ], "nodeType": "PragmaDirective", - "src": "0:23:12" + "src": "0:23:18" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Enum.sol", "file": "../Enum.sol", - "id": 1778, + "id": 1976, "nodeType": "ImportDirective", - "scope": 2036, - "sourceUnit": 7, - "src": "24:21:12", + "scope": 2235, + "sourceUnit": 31, + "src": "24:21:18", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Module.sol", "file": "../Module.sol", - "id": 1779, + "id": 1977, "nodeType": "ImportDirective", - "scope": 2036, - "sourceUnit": 622, - "src": "46:23:12", + "scope": 2235, + "sourceUnit": 751, + "src": "46:23:18", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/ModuleManager.sol", "file": "../ModuleManager.sol", - "id": 1780, + "id": 1978, "nodeType": "ImportDirective", - "scope": 2036, - "sourceUnit": 972, - "src": "70:30:12", + "scope": 2235, + "sourceUnit": 1101, + "src": "70:30:18", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/OwnerManager.sol", "file": "../OwnerManager.sol", - "id": 1781, + "id": 1979, "nodeType": "ImportDirective", - "scope": 2036, - "sourceUnit": 1344, - "src": "101:29:12", + "scope": 2235, + "sourceUnit": 1473, + "src": "101:29:18", "symbolAliases": [], "unitAlias": "" }, @@ -326,46 +320,46 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 1782, + "id": 1980, "name": "Module", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 621, - "src": "339:6:12", + "referencedDeclaration": 750, + "src": "339:6:18", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$621", + "typeIdentifier": "t_contract$_Module_$750", "typeString": "contract Module" } }, - "id": 1783, + "id": 1981, "nodeType": "InheritanceSpecifier", - "src": "339:6:12" + "src": "339:6:18" } ], "contractDependencies": [ - 580, - 621, - 1359 + 652, + 750, + 1619 ], "contractKind": "contract", "documentation": "@title Social Recovery Module - Allows to replace an owner without Safe confirmations if friends approve the replacement.\n @author Stefan George - ", "fullyImplemented": true, - "id": 2035, + "id": 2234, "linearizedBaseContracts": [ - 2035, - 621, - 580, - 1359 + 2234, + 750, + 652, + 1619 ], "name": "SocialRecoveryModule", "nodeType": "ContractDefinition", "nodes": [ { "constant": true, - "id": 1786, + "id": 1984, "name": "NAME", "nodeType": "VariableDeclaration", - "scope": 2035, - "src": "353:54:12", + "scope": 2234, + "src": "353:54:18", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -373,10 +367,10 @@ "typeString": "string" }, "typeName": { - "id": 1784, + "id": 1982, "name": "string", "nodeType": "ElementaryTypeName", - "src": "353:6:12", + "src": "353:6:18", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -385,14 +379,14 @@ "value": { "argumentTypes": null, "hexValue": "536f6369616c205265636f76657279204d6f64756c65", - "id": 1785, + "id": 1983, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "383:24:12", + "src": "383:24:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_8f499aea563eae5544b16c9123d6c7c8537a7d9dd86296aa60c65de194207230", @@ -404,11 +398,11 @@ }, { "constant": true, - "id": 1789, + "id": 1987, "name": "VERSION", "nodeType": "VariableDeclaration", - "scope": 2035, - "src": "413:40:12", + "scope": 2234, + "src": "413:40:18", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -416,10 +410,10 @@ "typeString": "string" }, "typeName": { - "id": 1787, + "id": 1985, "name": "string", "nodeType": "ElementaryTypeName", - "src": "413:6:12", + "src": "413:6:18", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -428,14 +422,14 @@ "value": { "argumentTypes": null, "hexValue": "302e302e31", - "id": 1788, + "id": 1986, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "446:7:12", + "src": "446:7:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_ae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc199163811885", @@ -445,56 +439,13 @@ }, "visibility": "public" }, - { - "constant": true, - "id": 1792, - "name": "REPLACE_OWNER_FUNCTION_IDENTIFIER", - "nodeType": "VariableDeclaration", - "scope": 2035, - "src": "459:72:12", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - }, - "typeName": { - "id": 1790, - "name": "bytes4", - "nodeType": "ElementaryTypeName", - "src": "459:6:12", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - "value": { - "argumentTypes": null, - "hexValue": "e318b52b", - "id": 1791, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "518:13:12", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_df42753442dae44b262788763363a184bfb8d0df593d5073d67844ce4b3a2d8b", - "typeString": "literal_string (contains invalid UTF-8 sequence at position 2)" - }, - "value": null - }, - "visibility": "public" - }, { "constant": false, - "id": 1794, + "id": 1989, "name": "threshold", "nodeType": "VariableDeclaration", - "scope": 2035, - "src": "538:22:12", + "scope": 2234, + "src": "460:22:18", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -502,10 +453,10 @@ "typeString": "uint8" }, "typeName": { - "id": 1793, + "id": 1988, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "538:5:12", + "src": "460:5:18", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -516,11 +467,11 @@ }, { "constant": false, - "id": 1797, + "id": 1992, "name": "friends", "nodeType": "VariableDeclaration", - "scope": 2035, - "src": "566:24:12", + "scope": 2234, + "src": "488:24:18", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -529,19 +480,19 @@ }, "typeName": { "baseType": { - "id": 1795, + "id": 1990, "name": "address", "nodeType": "ElementaryTypeName", - "src": "566:7:12", + "src": "488:7:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1796, + "id": 1991, "length": null, "nodeType": "ArrayTypeName", - "src": "566:9:12", + "src": "488:9:18", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" @@ -552,11 +503,11 @@ }, { "constant": false, - "id": 1801, + "id": 1996, "name": "isFriend", "nodeType": "VariableDeclaration", - "scope": 2035, - "src": "661:41:12", + "scope": 2234, + "src": "583:41:18", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -564,28 +515,28 @@ "typeString": "mapping(address => bool)" }, "typeName": { - "id": 1800, + "id": 1995, "keyType": { - "id": 1798, + "id": 1993, "name": "address", "nodeType": "ElementaryTypeName", - "src": "670:7:12", + "src": "592:7:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", - "src": "661:25:12", + "src": "583:25:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" }, "valueType": { - "id": 1799, + "id": 1994, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "681:4:12", + "src": "603:4:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -597,11 +548,11 @@ }, { "constant": false, - "id": 1805, + "id": 2000, "name": "isExecuted", "nodeType": "VariableDeclaration", - "scope": 2035, - "src": "770:43:12", + "scope": 2234, + "src": "692:43:18", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -609,28 +560,28 @@ "typeString": "mapping(bytes32 => bool)" }, "typeName": { - "id": 1804, + "id": 1999, "keyType": { - "id": 1802, + "id": 1997, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "779:7:12", + "src": "701:7:18", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "Mapping", - "src": "770:25:12", + "src": "692:25:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" }, "valueType": { - "id": 1803, + "id": 1998, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "790:4:12", + "src": "712:4:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -642,11 +593,11 @@ }, { "constant": false, - "id": 1811, + "id": 2006, "name": "isConfirmed", "nodeType": "VariableDeclaration", - "scope": 2035, - "src": "905:65:12", + "scope": 2234, + "src": "827:65:18", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -654,46 +605,46 @@ "typeString": "mapping(bytes32 => mapping(address => bool))" }, "typeName": { - "id": 1810, + "id": 2005, "keyType": { - "id": 1806, + "id": 2001, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "914:7:12", + "src": "836:7:18", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "Mapping", - "src": "905:46:12", + "src": "827:46:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", "typeString": "mapping(bytes32 => mapping(address => bool))" }, "valueType": { - "id": 1809, + "id": 2004, "keyType": { - "id": 1807, + "id": 2002, "name": "address", "nodeType": "ElementaryTypeName", - "src": "934:7:12", + "src": "856:7:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", - "src": "925:25:12", + "src": "847:25:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" }, "valueType": { - "id": 1808, + "id": 2003, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "945:4:12", + "src": "867:4:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -706,9 +657,9 @@ }, { "body": { - "id": 1821, + "id": 2016, "nodeType": "Block", - "src": "999:57:12", + "src": "921:57:18", "statements": [ { "expression": { @@ -718,34 +669,34 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1814, + "id": 2009, "name": "isFriend", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1801, - "src": "1017:8:12", + "referencedDeclaration": 1996, + "src": "939:8:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 1817, + "id": 2012, "indexExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1815, + "id": 2010, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2396, - "src": "1026:3:12", + "referencedDeclaration": 2598, + "src": "948:3:18", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 1816, + "id": 2011, "isConstant": false, "isLValue": false, "isPure": false, @@ -753,7 +704,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1026:10:12", + "src": "948:10:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -764,7 +715,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1017:20:12", + "src": "939:20:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -778,21 +729,21 @@ "typeString": "bool" } ], - "id": 1813, + "id": 2008, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "1009:7:12", + "referencedDeclaration": 2601, + "src": "931:7:18", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1818, + "id": 2013, "isConstant": false, "isLValue": false, "isPure": false, @@ -800,41 +751,41 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1009:29:12", + "src": "931:29:18", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1819, + "id": 2014, "nodeType": "ExpressionStatement", - "src": "1009:29:12" + "src": "931:29:18" }, { - "id": 1820, + "id": 2015, "nodeType": "PlaceholderStatement", - "src": "1048:1:12" + "src": "970:1:18" } ] }, "documentation": null, - "id": 1822, + "id": 2017, "name": "onlyFriend", "nodeType": "ModifierDefinition", "parameters": { - "id": 1812, + "id": 2007, "nodeType": "ParameterList", "parameters": [], - "src": "996:2:12" + "src": "918:2:18" }, - "src": "977:79:12", + "src": "899:79:18", "visibility": "internal" }, { "body": { - "id": 1892, + "id": 2087, "nodeType": "Block", - "src": "1325:422:12", + "src": "1247:422:18", "statements": [ { "expression": { @@ -846,19 +797,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1834, + "id": 2029, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1831, + "id": 2026, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1827, - "src": "1343:10:12", + "referencedDeclaration": 2022, + "src": "1265:10:18", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -870,18 +821,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1832, + "id": 2027, "name": "_friends", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1825, - "src": "1357:8:12", + "referencedDeclaration": 2020, + "src": "1279:8:18", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 1833, + "id": 2028, "isConstant": false, "isLValue": false, "isPure": false, @@ -889,13 +840,13 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1357:15:12", + "src": "1279:15:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1343:29:12", + "src": "1265:29:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -909,21 +860,21 @@ "typeString": "bool" } ], - "id": 1830, + "id": 2025, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "1335:7:12", + "referencedDeclaration": 2601, + "src": "1257:7:18", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1835, + "id": 2030, "isConstant": false, "isLValue": false, "isPure": false, @@ -931,15 +882,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1335:38:12", + "src": "1257:38:18", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1836, + "id": 2031, "nodeType": "ExpressionStatement", - "src": "1335:38:12" + "src": "1257:38:18" }, { "expression": { @@ -951,19 +902,19 @@ "typeIdentifier": "t_uint8", "typeString": "uint8" }, - "id": 1840, + "id": 2035, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1838, + "id": 2033, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1827, - "src": "1391:10:12", + "referencedDeclaration": 2022, + "src": "1313:10:18", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -974,14 +925,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "32", - "id": 1839, + "id": 2034, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1405:1:12", + "src": "1327:1:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", @@ -989,7 +940,7 @@ }, "value": "2" }, - "src": "1391:15:12", + "src": "1313:15:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1003,21 +954,21 @@ "typeString": "bool" } ], - "id": 1837, + "id": 2032, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "1383:7:12", + "referencedDeclaration": 2601, + "src": "1305:7:18", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1841, + "id": 2036, "isConstant": false, "isLValue": false, "isPure": false, @@ -1025,15 +976,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1383:24:12", + "src": "1305:24:18", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1842, + "id": 2037, "nodeType": "ExpressionStatement", - "src": "1383:24:12" + "src": "1305:24:18" }, { "expression": { @@ -1041,18 +992,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 1843, + "id": 2038, "name": "setManager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 620, - "src": "1417:10:12", + "referencedDeclaration": 749, + "src": "1339:10:18", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()" } }, - "id": 1844, + "id": 2039, "isConstant": false, "isLValue": false, "isPure": false, @@ -1060,34 +1011,34 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1417:12:12", + "src": "1339:12:18", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1845, + "id": 2040, "nodeType": "ExpressionStatement", - "src": "1417:12:12" + "src": "1339:12:18" }, { "body": { - "id": 1882, + "id": 2077, "nodeType": "Block", - "src": "1517:164:12", + "src": "1439:164:18", "statements": [ { "assignments": [ - 1858 + 2053 ], "declarations": [ { "constant": false, - "id": 1858, + "id": 2053, "name": "friend", "nodeType": "VariableDeclaration", - "scope": 1893, - "src": "1531:14:12", + "scope": 2088, + "src": "1453:14:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1095,10 +1046,10 @@ "typeString": "address" }, "typeName": { - "id": 1857, + "id": 2052, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1531:7:12", + "src": "1453:7:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1108,31 +1059,31 @@ "visibility": "internal" } ], - "id": 1862, + "id": 2057, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1859, + "id": 2054, "name": "_friends", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1825, - "src": "1548:8:12", + "referencedDeclaration": 2020, + "src": "1470:8:18", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 1861, + "id": 2056, "indexExpression": { "argumentTypes": null, - "id": 1860, + "id": 2055, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1847, - "src": "1557:1:12", + "referencedDeclaration": 2042, + "src": "1479:1:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1143,14 +1094,14 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1548:11:12", + "src": "1470:11:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", - "src": "1531:28:12" + "src": "1453:28:18" }, { "expression": { @@ -1162,19 +1113,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1866, + "id": 2061, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1864, + "id": 2059, "name": "friend", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1858, - "src": "1581:6:12", + "referencedDeclaration": 2053, + "src": "1503:6:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1185,14 +1136,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1865, + "id": 2060, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1591:1:12", + "src": "1513:1:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -1200,7 +1151,7 @@ }, "value": "0" }, - "src": "1581:11:12", + "src": "1503:11:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1214,21 +1165,21 @@ "typeString": "bool" } ], - "id": 1863, + "id": 2058, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "1573:7:12", + "referencedDeclaration": 2601, + "src": "1495:7:18", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1867, + "id": 2062, "isConstant": false, "isLValue": false, "isPure": false, @@ -1236,15 +1187,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1573:20:12", + "src": "1495:20:18", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1868, + "id": 2063, "nodeType": "ExpressionStatement", - "src": "1573:20:12" + "src": "1495:20:18" }, { "expression": { @@ -1252,7 +1203,7 @@ "arguments": [ { "argumentTypes": null, - "id": 1873, + "id": 2068, "isConstant": false, "isLValue": false, "isPure": false, @@ -1260,31 +1211,31 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "1615:17:12", + "src": "1537:17:18", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1870, + "id": 2065, "name": "isFriend", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1801, - "src": "1616:8:12", + "referencedDeclaration": 1996, + "src": "1538:8:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 1872, + "id": 2067, "indexExpression": { "argumentTypes": null, - "id": 1871, + "id": 2066, "name": "friend", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1858, - "src": "1625:6:12", + "referencedDeclaration": 2053, + "src": "1547:6:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1295,7 +1246,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1616:16:12", + "src": "1538:16:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1314,21 +1265,21 @@ "typeString": "bool" } ], - "id": 1869, + "id": 2064, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "1607:7:12", + "referencedDeclaration": 2601, + "src": "1529:7:18", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1874, + "id": 2069, "isConstant": false, "isLValue": false, "isPure": false, @@ -1336,20 +1287,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1607:26:12", + "src": "1529:26:18", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1875, + "id": 2070, "nodeType": "ExpressionStatement", - "src": "1607:26:12" + "src": "1529:26:18" }, { "expression": { "argumentTypes": null, - "id": 1880, + "id": 2075, "isConstant": false, "isLValue": false, "isPure": false, @@ -1358,26 +1309,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1876, + "id": 2071, "name": "isFriend", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1801, - "src": "1647:8:12", + "referencedDeclaration": 1996, + "src": "1569:8:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 1878, + "id": 2073, "indexExpression": { "argumentTypes": null, - "id": 1877, + "id": 2072, "name": "friend", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1858, - "src": "1656:6:12", + "referencedDeclaration": 2053, + "src": "1578:6:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1388,7 +1339,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1647:16:12", + "src": "1569:16:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1399,14 +1350,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 1879, + "id": 2074, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "1666:4:12", + "src": "1588:4:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -1414,15 +1365,15 @@ }, "value": "true" }, - "src": "1647:23:12", + "src": "1569:23:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 1881, + "id": 2076, "nodeType": "ExpressionStatement", - "src": "1647:23:12" + "src": "1569:23:18" } ] }, @@ -1432,19 +1383,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1853, + "id": 2048, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1850, + "id": 2045, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1847, - "src": "1491:1:12", + "referencedDeclaration": 2042, + "src": "1413:1:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1456,18 +1407,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1851, + "id": 2046, "name": "_friends", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1825, - "src": "1495:8:12", + "referencedDeclaration": 2020, + "src": "1417:8:18", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 1852, + "id": 2047, "isConstant": false, "isLValue": false, "isPure": false, @@ -1475,31 +1426,31 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1495:15:12", + "src": "1417:15:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1491:19:12", + "src": "1413:19:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 1883, + "id": 2078, "initializationExpression": { "assignments": [ - 1847 + 2042 ], "declarations": [ { "constant": false, - "id": 1847, + "id": 2042, "name": "i", "nodeType": "VariableDeclaration", - "scope": 1893, - "src": "1476:9:12", + "scope": 2088, + "src": "1398:9:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1507,10 +1458,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1846, + "id": 2041, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1476:7:12", + "src": "1398:7:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1520,18 +1471,18 @@ "visibility": "internal" } ], - "id": 1849, + "id": 2044, "initialValue": { "argumentTypes": null, "hexValue": "30", - "id": 1848, + "id": 2043, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1488:1:12", + "src": "1410:1:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -1540,12 +1491,12 @@ "value": "0" }, "nodeType": "VariableDeclarationStatement", - "src": "1476:13:12" + "src": "1398:13:18" }, "loopExpression": { "expression": { "argumentTypes": null, - "id": 1855, + "id": 2050, "isConstant": false, "isLValue": false, "isPure": false, @@ -1553,15 +1504,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "1512:3:12", + "src": "1434:3:18", "subExpression": { "argumentTypes": null, - "id": 1854, + "id": 2049, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1847, - "src": "1512:1:12", + "referencedDeclaration": 2042, + "src": "1434:1:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1572,29 +1523,29 @@ "typeString": "uint256" } }, - "id": 1856, + "id": 2051, "nodeType": "ExpressionStatement", - "src": "1512:3:12" + "src": "1434:3:18" }, "nodeType": "ForStatement", - "src": "1471:210:12" + "src": "1393:210:18" }, { "expression": { "argumentTypes": null, - "id": 1886, + "id": 2081, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1884, + "id": 2079, "name": "friends", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1797, - "src": "1690:7:12", + "referencedDeclaration": 1992, + "src": "1612:7:18", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" @@ -1604,43 +1555,43 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1885, + "id": 2080, "name": "_friends", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1825, - "src": "1700:8:12", + "referencedDeclaration": 2020, + "src": "1622:8:18", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "src": "1690:18:12", + "src": "1612:18:18", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, - "id": 1887, + "id": 2082, "nodeType": "ExpressionStatement", - "src": "1690:18:12" + "src": "1612:18:18" }, { "expression": { "argumentTypes": null, - "id": 1890, + "id": 2085, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1888, + "id": 2083, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1794, - "src": "1718:9:12", + "referencedDeclaration": 1989, + "src": "1640:9:18", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -1650,31 +1601,31 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1889, + "id": 2084, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1827, - "src": "1730:10:12", + "referencedDeclaration": 2022, + "src": "1652:10:18", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "src": "1718:22:12", + "src": "1640:22:18", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "id": 1891, + "id": 2086, "nodeType": "ExpressionStatement", - "src": "1718:22:12" + "src": "1640:22:18" } ] }, "documentation": "@dev Setup function sets initial storage of contract.\n @param _friends List of friends' addresses.\n @param _threshold Required number of friends to confirm replacement.", - "id": 1893, + "id": 2088, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -1682,16 +1633,16 @@ "name": "setup", "nodeType": "FunctionDefinition", "parameters": { - "id": 1828, + "id": 2023, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1825, + "id": 2020, "name": "_friends", "nodeType": "VariableDeclaration", - "scope": 1893, - "src": "1268:18:12", + "scope": 2088, + "src": "1190:18:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1700,19 +1651,19 @@ }, "typeName": { "baseType": { - "id": 1823, + "id": 2018, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1268:7:12", + "src": "1190:7:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1824, + "id": 2019, "length": null, "nodeType": "ArrayTypeName", - "src": "1268:9:12", + "src": "1190:9:18", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" @@ -1723,11 +1674,11 @@ }, { "constant": false, - "id": 1827, + "id": 2022, "name": "_threshold", "nodeType": "VariableDeclaration", - "scope": 1893, - "src": "1288:16:12", + "scope": 2088, + "src": "1210:16:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1735,10 +1686,10 @@ "typeString": "uint8" }, "typeName": { - "id": 1826, + "id": 2021, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "1288:5:12", + "src": "1210:5:18", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -1748,26 +1699,26 @@ "visibility": "internal" } ], - "src": "1267:38:12" + "src": "1189:38:18" }, "payable": false, "returnParameters": { - "id": 1829, + "id": 2024, "nodeType": "ParameterList", "parameters": [], - "src": "1325:0:12" + "src": "1247:0:18" }, - "scope": 2035, - "src": "1253:494:12", + "scope": 2234, + "src": "1175:494:18", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1916, + "id": 2111, "nodeType": "Block", - "src": "1944:97:12", + "src": "1866:97:18", "statements": [ { "expression": { @@ -1775,7 +1726,7 @@ "arguments": [ { "argumentTypes": null, - "id": 1904, + "id": 2099, "isConstant": false, "isLValue": false, "isPure": false, @@ -1783,31 +1734,31 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "1962:21:12", + "src": "1884:21:18", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1901, + "id": 2096, "name": "isExecuted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1805, - "src": "1963:10:12", + "referencedDeclaration": 2000, + "src": "1885:10:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" } }, - "id": 1903, + "id": 2098, "indexExpression": { "argumentTypes": null, - "id": 1902, + "id": 2097, "name": "dataHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1895, - "src": "1974:8:12", + "referencedDeclaration": 2090, + "src": "1896:8:18", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1818,7 +1769,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1963:20:12", + "src": "1885:20:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1837,21 +1788,21 @@ "typeString": "bool" } ], - "id": 1900, + "id": 2095, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "1954:7:12", + "referencedDeclaration": 2601, + "src": "1876:7:18", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1905, + "id": 2100, "isConstant": false, "isLValue": false, "isPure": false, @@ -1859,20 +1810,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1954:30:12", + "src": "1876:30:18", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1906, + "id": 2101, "nodeType": "ExpressionStatement", - "src": "1954:30:12" + "src": "1876:30:18" }, { "expression": { "argumentTypes": null, - "id": 1914, + "id": 2109, "isConstant": false, "isLValue": false, "isPure": false, @@ -1883,26 +1834,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1907, + "id": 2102, "name": "isConfirmed", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1811, - "src": "1994:11:12", + "referencedDeclaration": 2006, + "src": "1916:11:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", "typeString": "mapping(bytes32 => mapping(address => bool))" } }, - "id": 1911, + "id": 2106, "indexExpression": { "argumentTypes": null, - "id": 1908, + "id": 2103, "name": "dataHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1895, - "src": "2006:8:12", + "referencedDeclaration": 2090, + "src": "1928:8:18", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1913,29 +1864,29 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1994:21:12", + "src": "1916:21:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 1912, + "id": 2107, "indexExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1909, + "id": 2104, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2396, - "src": "2016:3:12", + "referencedDeclaration": 2598, + "src": "1938:3:18", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 1910, + "id": 2105, "isConstant": false, "isLValue": false, "isPure": false, @@ -1943,7 +1894,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2016:10:12", + "src": "1938:10:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1954,7 +1905,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1994:33:12", + "src": "1916:33:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1965,14 +1916,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 1913, + "id": 2108, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "2030:4:12", + "src": "1952:4:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -1980,57 +1931,57 @@ }, "value": "true" }, - "src": "1994:40:12", + "src": "1916:40:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 1915, + "id": 2110, "nodeType": "ExpressionStatement", - "src": "1994:40:12" + "src": "1916:40:18" } ] }, "documentation": "@dev Allows a friend to confirm a Safe transaction.\n @param dataHash Safe transaction hash.", - "id": 1917, + "id": 2112, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 1898, + "id": 2093, "modifierName": { "argumentTypes": null, - "id": 1897, + "id": 2092, "name": "onlyFriend", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1822, - "src": "1929:10:12", + "referencedDeclaration": 2017, + "src": "1851:10:18", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "1929:10:12" + "src": "1851:10:18" } ], "name": "confirmTransaction", "nodeType": "FunctionDefinition", "parameters": { - "id": 1896, + "id": 2091, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1895, + "id": 2090, "name": "dataHash", "nodeType": "VariableDeclaration", - "scope": 1917, - "src": "1888:16:12", + "scope": 2112, + "src": "1810:16:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2038,10 +1989,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 1894, + "id": 2089, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "1888:7:12", + "src": "1810:7:18", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -2051,26 +2002,26 @@ "visibility": "internal" } ], - "src": "1887:18:12" + "src": "1809:18:18" }, "payable": false, "returnParameters": { - "id": 1899, + "id": 2094, "nodeType": "ParameterList", "parameters": [], - "src": "1944:0:12" + "src": "1866:0:18" }, - "scope": 2035, - "src": "1860:181:12", + "scope": 2234, + "src": "1782:181:18", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1978, + "id": 2177, "nodeType": "Block", - "src": "2299:722:12", + "src": "2393:512:18", "statements": [ { "expression": { @@ -2080,34 +2031,34 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1923, + "id": 2122, "name": "isFriend", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1801, - "src": "2381:8:12", + "referencedDeclaration": 1996, + "src": "2475:8:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 1926, + "id": 2125, "indexExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1924, + "id": 2123, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2396, - "src": "2390:3:12", + "referencedDeclaration": 2598, + "src": "2484:3:18", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 1925, + "id": 2124, "isConstant": false, "isLValue": false, "isPure": false, @@ -2115,7 +2066,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2390:10:12", + "src": "2484:10:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2126,7 +2077,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2381:20:12", + "src": "2475:20:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2140,21 +2091,21 @@ "typeString": "bool" } ], - "id": 1922, + "id": 2121, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "2373:7:12", + "referencedDeclaration": 2601, + "src": "2467:7:18", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1927, + "id": 2126, "isConstant": false, "isLValue": false, "isPure": false, @@ -2162,149 +2113,157 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2373:29:12", + "src": "2467:29:18", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1928, + "id": 2127, "nodeType": "ExpressionStatement", - "src": "2373:29:12" + "src": "2467:29:18" }, { - "assignments": [], + "assignments": [ + 2129 + ], "declarations": [ { "constant": false, - "id": 1930, - "name": "functionIdentifier", + "id": 2129, + "name": "data", "nodeType": "VariableDeclaration", - "scope": 1979, - "src": "2485:25:12", + "scope": 2178, + "src": "2506:17:18", "stateVariable": false, - "storageLocation": "default", + "storageLocation": "memory", "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" }, "typeName": { - "id": 1929, - "name": "bytes4", + "id": 2128, + "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "2485:6:12", + "src": "2506:5:18", "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" } }, "value": null, "visibility": "internal" } ], - "id": 1931, - "initialValue": null, - "nodeType": "VariableDeclarationStatement", - "src": "2485:25:12" - }, - { - "externalReferences": [ - { - "functionIdentifier": { - "declaration": 1930, - "isOffset": false, - "isSlot": false, - "src": "2607:18:12", - "valueSize": 1 - } - }, - { - "data": { - "declaration": 1919, - "isOffset": false, - "isSlot": false, - "src": "2639:4:12", - "valueSize": 1 - } - } - ], - "id": 1932, - "nodeType": "InlineAssembly", - "operations": "{\n functionIdentifier := mload(add(data, 0x20))\n}", - "src": "2584:93:12" - }, - { - "expression": { + "id": 2137, + "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - }, - "id": 1936, + "hexValue": "737761704f776e657228616464726573732c616464726573732c6164647265737329", + "id": 2132, "isConstant": false, "isLValue": false, - "isPure": false, + "isPure": true, + "kind": "string", "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1934, - "name": "functionIdentifier", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1930, - "src": "2678:18:12", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "id": 1935, - "name": "REPLACE_OWNER_FUNCTION_IDENTIFIER", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1792, - "src": "2700:33:12", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - "src": "2678:55:12", + "nodeType": "Literal", + "src": "2550:36:18", + "subdenomination": null, "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_stringliteral_e318b52b9bee2870ac7ee0af86866eb2e8f9569b34de6028eb487e7983ba6df8", + "typeString": "literal_string \"swapOwner(address,address,address)\"" + }, + "value": "swapOwner(address,address,address)" + }, + { + "argumentTypes": null, + "id": 2133, + "name": "prevOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2114, + "src": "2588:9:18", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2134, + "name": "oldOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2116, + "src": "2599:8:18", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2135, + "name": "newOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2118, + "src": "2609:8:18", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } } ], "expression": { "argumentTypes": [ { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_stringliteral_e318b52b9bee2870ac7ee0af86866eb2e8f9569b34de6028eb487e7983ba6df8", + "typeString": "literal_string \"swapOwner(address,address,address)\"" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" } ], - "id": 1933, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 2399, - 2400 - ], - "referencedDeclaration": 2399, - "src": "2670:7:12", + "expression": { + "argumentTypes": null, + "id": 2130, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2585, + "src": "2526:3:18", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 2131, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodeWithSignature", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2526:23:18", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (string memory) pure returns (bytes memory)" } }, - "id": 1937, + "id": 2136, "isConstant": false, "isLValue": false, "isPure": false, @@ -2312,28 +2271,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2670:64:12", + "src": "2526:92:18", "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" } }, - "id": 1938, - "nodeType": "ExpressionStatement", - "src": "2670:64:12" + "nodeType": "VariableDeclarationStatement", + "src": "2506:112:18" }, { "assignments": [ - 1940 + 2139 ], "declarations": [ { "constant": false, - "id": 1940, + "id": 2139, "name": "dataHash", "nodeType": "VariableDeclaration", - "scope": 1979, - "src": "2744:16:12", + "scope": 2178, + "src": "2628:16:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2341,10 +2299,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 1939, + "id": 2138, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "2744:7:12", + "src": "2628:7:18", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -2354,18 +2312,18 @@ "visibility": "internal" } ], - "id": 1944, + "id": 2143, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 1942, + "id": 2141, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1919, - "src": "2775:4:12", + "referencedDeclaration": 2129, + "src": "2659:4:18", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -2379,18 +2337,18 @@ "typeString": "bytes memory" } ], - "id": 1941, + "id": 2140, "name": "getDataHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2034, - "src": "2763:11:12", + "referencedDeclaration": 2233, + "src": "2647:11:18", "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$_t_bytes32_$", - "typeString": "function (bytes memory) view returns (bytes32)" + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" } }, - "id": 1943, + "id": 2142, "isConstant": false, "isLValue": false, "isPure": false, @@ -2398,14 +2356,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2763:17:12", + "src": "2647:17:18", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "VariableDeclarationStatement", - "src": "2744:36:12" + "src": "2628:36:18" }, { "expression": { @@ -2413,7 +2371,7 @@ "arguments": [ { "argumentTypes": null, - "id": 1949, + "id": 2148, "isConstant": false, "isLValue": false, "isPure": false, @@ -2421,31 +2379,31 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "2798:21:12", + "src": "2682:21:18", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1946, + "id": 2145, "name": "isExecuted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1805, - "src": "2799:10:12", + "referencedDeclaration": 2000, + "src": "2683:10:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" } }, - "id": 1948, + "id": 2147, "indexExpression": { "argumentTypes": null, - "id": 1947, + "id": 2146, "name": "dataHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1940, - "src": "2810:8:12", + "referencedDeclaration": 2139, + "src": "2694:8:18", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -2456,7 +2414,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2799:20:12", + "src": "2683:20:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2475,21 +2433,21 @@ "typeString": "bool" } ], - "id": 1945, + "id": 2144, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "2790:7:12", + "referencedDeclaration": 2601, + "src": "2674:7:18", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1950, + "id": 2149, "isConstant": false, "isLValue": false, "isPure": false, @@ -2497,15 +2455,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2790:30:12", + "src": "2674:30:18", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1951, + "id": 2150, "nodeType": "ExpressionStatement", - "src": "2790:30:12" + "src": "2674:30:18" }, { "expression": { @@ -2516,12 +2474,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1954, + "id": 2153, "name": "dataHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1940, - "src": "2867:8:12", + "referencedDeclaration": 2139, + "src": "2751:8:18", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -2535,18 +2493,18 @@ "typeString": "bytes32" } ], - "id": 1953, + "id": 2152, "name": "isConfirmedByRequiredFriends", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2022, - "src": "2838:28:12", + "referencedDeclaration": 2221, + "src": "2722:28:18", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bool_$", "typeString": "function (bytes32) view returns (bool)" } }, - "id": 1955, + "id": 2154, "isConstant": false, "isLValue": false, "isPure": false, @@ -2554,7 +2512,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2838:38:12", + "src": "2722:38:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2568,21 +2526,21 @@ "typeString": "bool" } ], - "id": 1952, + "id": 2151, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "2830:7:12", + "referencedDeclaration": 2601, + "src": "2714:7:18", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1956, + "id": 2155, "isConstant": false, "isLValue": false, "isPure": false, @@ -2590,20 +2548,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2830:47:12", + "src": "2714:47:18", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1957, + "id": 2156, "nodeType": "ExpressionStatement", - "src": "2830:47:12" + "src": "2714:47:18" }, { "expression": { "argumentTypes": null, - "id": 1962, + "id": 2161, "isConstant": false, "isLValue": false, "isPure": false, @@ -2612,26 +2570,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1958, + "id": 2157, "name": "isExecuted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1805, - "src": "2887:10:12", + "referencedDeclaration": 2000, + "src": "2771:10:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" } }, - "id": 1960, + "id": 2159, "indexExpression": { "argumentTypes": null, - "id": 1959, + "id": 2158, "name": "dataHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1940, - "src": "2898:8:12", + "referencedDeclaration": 2139, + "src": "2782:8:18", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -2642,7 +2600,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "2887:20:12", + "src": "2771:20:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2653,14 +2611,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 1961, + "id": 2160, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "2910:4:12", + "src": "2794:4:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -2668,15 +2626,15 @@ }, "value": "true" }, - "src": "2887:27:12", + "src": "2771:27:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 1963, + "id": 2162, "nodeType": "ExpressionStatement", - "src": "2887:27:12" + "src": "2771:27:18" }, { "expression": { @@ -2690,14 +2648,14 @@ "arguments": [ { "argumentTypes": null, - "id": 1968, + "id": 2167, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 588, - "src": "2974:7:12", + "referencedDeclaration": 717, + "src": "2858:7:18", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$971", + "typeIdentifier": "t_contract$_ModuleManager_$1100", "typeString": "contract ModuleManager" } } @@ -2705,24 +2663,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_ModuleManager_$971", + "typeIdentifier": "t_contract$_ModuleManager_$1100", "typeString": "contract ModuleManager" } ], - "id": 1967, + "id": 2166, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2966:7:12", + "src": "2850:7:18", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 1969, + "id": 2168, "isConstant": false, "isLValue": false, "isPure": false, @@ -2730,7 +2688,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2966:16:12", + "src": "2850:16:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2739,14 +2697,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 1970, + "id": 2169, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2984:1:12", + "src": "2868:1:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -2756,12 +2714,12 @@ }, { "argumentTypes": null, - "id": 1971, + "id": 2170, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1919, - "src": "2987:4:12", + "referencedDeclaration": 2129, + "src": "2871:4:18", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -2773,32 +2731,32 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1972, + "id": 2171, "name": "Enum", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6, - "src": "2993:4:12", + "referencedDeclaration": 30, + "src": "2877:4:18", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Enum_$6_$", + "typeIdentifier": "t_type$_t_contract$_Enum_$30_$", "typeString": "type(contract Enum)" } }, - "id": 1973, + "id": 2172, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "Operation", "nodeType": "MemberAccess", - "referencedDeclaration": 5, - "src": "2993:14:12", + "referencedDeclaration": 29, + "src": "2877:14:18", "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_Operation_$5_$", + "typeIdentifier": "t_type$_t_enum$_Operation_$29_$", "typeString": "type(enum Enum.Operation)" } }, - "id": 1974, + "id": 2173, "isConstant": false, "isLValue": false, "isPure": true, @@ -2806,9 +2764,9 @@ "memberName": "Call", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2993:19:12", + "src": "2877:19:18", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } } @@ -2828,38 +2786,38 @@ "typeString": "bytes memory" }, { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } ], "expression": { "argumentTypes": null, - "id": 1965, + "id": 2164, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 588, - "src": "2932:7:12", + "referencedDeclaration": 717, + "src": "2816:7:18", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$971", + "typeIdentifier": "t_contract$_ModuleManager_$1100", "typeString": "contract ModuleManager" } }, - "id": 1966, + "id": 2165, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "execTransactionFromModule", "nodeType": "MemberAccess", - "referencedDeclaration": 798, - "src": "2932:33:12", + "referencedDeclaration": 927, + "src": "2816:33:18", "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$5_$returns$_t_bool_$", + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$returns$_t_bool_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation) external returns (bool)" } }, - "id": 1975, + "id": 2174, "isConstant": false, "isLValue": false, "isPure": false, @@ -2867,7 +2825,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2932:81:12", + "src": "2816:81:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2881,21 +2839,21 @@ "typeString": "bool" } ], - "id": 1964, + "id": 2163, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "2924:7:12", + "referencedDeclaration": 2601, + "src": "2808:7:18", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1976, + "id": 2175, "isConstant": false, "isLValue": false, "isPure": false, @@ -2903,20 +2861,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2924:90:12", + "src": "2808:90:18", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1977, + "id": 2176, "nodeType": "ExpressionStatement", - "src": "2924:90:12" + "src": "2808:90:18" } ] }, - "documentation": "@dev Returns if Safe transaction is a valid owner replacement transaction.\n @param data Encoded owner replacement transaction.\n @return Returns if transaction can be executed.", - "id": 1979, + "documentation": "@dev Returns if Safe transaction is a valid owner replacement transaction.\n @param prevOwner Owner that pointed to the owner to be replaced in the linked list\n @param oldOwner Owner address to be replaced.\n @param newOwner New owner address.\n @return Returns if transaction can be executed.", + "id": 2178, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -2924,67 +2882,119 @@ "name": "recoverAccess", "nodeType": "FunctionDefinition", "parameters": { - "id": 1920, + "id": 2119, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1919, - "name": "data", + "id": 2114, + "name": "prevOwner", "nodeType": "VariableDeclaration", - "scope": 1979, - "src": "2268:10:12", + "scope": 2178, + "src": "2319:17:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" + "typeIdentifier": "t_address", + "typeString": "address" }, "typeName": { - "id": 1918, - "name": "bytes", + "id": 2113, + "name": "address", "nodeType": "ElementaryTypeName", - "src": "2268:5:12", + "src": "2319:7:18", "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2116, + "name": "oldOwner", + "nodeType": "VariableDeclaration", + "scope": 2178, + "src": "2338:16:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2115, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2338:7:18", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2118, + "name": "newOwner", + "nodeType": "VariableDeclaration", + "scope": 2178, + "src": "2356:16:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2117, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2356:7:18", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, "value": null, "visibility": "internal" } ], - "src": "2267:12:12" + "src": "2318:55:18" }, "payable": false, "returnParameters": { - "id": 1921, + "id": 2120, "nodeType": "ParameterList", "parameters": [], - "src": "2299:0:12" + "src": "2393:0:18" }, - "scope": 2035, - "src": "2245:776:12", + "scope": 2234, + "src": "2296:609:18", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 2021, + "id": 2220, "nodeType": "Block", - "src": "3293:294:12", + "src": "3177:294:18", "statements": [ { "assignments": [], "declarations": [ { "constant": false, - "id": 1987, + "id": 2186, "name": "confirmationCount", "nodeType": "VariableDeclaration", - "scope": 2022, - "src": "3303:25:12", + "scope": 2221, + "src": "3187:25:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2992,10 +3002,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1986, + "id": 2185, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3303:7:12", + "src": "3187:7:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3005,16 +3015,16 @@ "visibility": "internal" } ], - "id": 1988, + "id": 2187, "initialValue": null, "nodeType": "VariableDeclarationStatement", - "src": "3303:25:12" + "src": "3187:25:18" }, { "body": { - "id": 2017, + "id": 2216, "nodeType": "Block", - "src": "3383:176:12", + "src": "3267:176:18", "statements": [ { "condition": { @@ -3023,26 +3033,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2000, + "id": 2199, "name": "isConfirmed", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1811, - "src": "3401:11:12", + "referencedDeclaration": 2006, + "src": "3285:11:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", "typeString": "mapping(bytes32 => mapping(address => bool))" } }, - "id": 2002, + "id": 2201, "indexExpression": { "argumentTypes": null, - "id": 2001, + "id": 2200, "name": "dataHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1981, - "src": "3413:8:12", + "referencedDeclaration": 2180, + "src": "3297:8:18", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -3053,37 +3063,37 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3401:21:12", + "src": "3285:21:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 2006, + "id": 2205, "indexExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2003, + "id": 2202, "name": "friends", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1797, - "src": "3423:7:12", + "referencedDeclaration": 1992, + "src": "3307:7:18", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, - "id": 2005, + "id": 2204, "indexExpression": { "argumentTypes": null, - "id": 2004, + "id": 2203, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1990, - "src": "3431:1:12", + "referencedDeclaration": 2189, + "src": "3315:1:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3094,7 +3104,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3423:10:12", + "src": "3307:10:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3105,20 +3115,20 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3401:33:12", + "src": "3285:33:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 2010, + "id": 2209, "nodeType": "IfStatement", - "src": "3397:74:12", + "src": "3281:74:18", "trueBody": { "expression": { "argumentTypes": null, - "id": 2008, + "id": 2207, "isConstant": false, "isLValue": false, "isPure": false, @@ -3126,15 +3136,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "3452:19:12", + "src": "3336:19:18", "subExpression": { "argumentTypes": null, - "id": 2007, + "id": 2206, "name": "confirmationCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1987, - "src": "3452:17:12", + "referencedDeclaration": 2186, + "src": "3336:17:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3145,9 +3155,9 @@ "typeString": "uint256" } }, - "id": 2009, + "id": 2208, "nodeType": "ExpressionStatement", - "src": "3452:19:12" + "src": "3336:19:18" } }, { @@ -3157,19 +3167,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 2013, + "id": 2212, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 2011, + "id": 2210, "name": "confirmationCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1987, - "src": "3489:17:12", + "referencedDeclaration": 2186, + "src": "3373:17:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3179,39 +3189,39 @@ "operator": "==", "rightExpression": { "argumentTypes": null, - "id": 2012, + "id": 2211, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1794, - "src": "3510:9:12", + "referencedDeclaration": 1989, + "src": "3394:9:18", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "src": "3489:30:12", + "src": "3373:30:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 2016, + "id": 2215, "nodeType": "IfStatement", - "src": "3485:63:12", + "src": "3369:63:18", "trueBody": { "expression": { "argumentTypes": null, "hexValue": "74727565", - "id": 2014, + "id": 2213, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "3544:4:12", + "src": "3428:4:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -3219,10 +3229,10 @@ }, "value": "true" }, - "functionReturnParameters": 1985, - "id": 2015, + "functionReturnParameters": 2184, + "id": 2214, "nodeType": "Return", - "src": "3537:11:12" + "src": "3421:11:18" } } ] @@ -3233,19 +3243,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1996, + "id": 2195, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1993, + "id": 2192, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1990, - "src": "3358:1:12", + "referencedDeclaration": 2189, + "src": "3242:1:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3257,18 +3267,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1994, + "id": 2193, "name": "friends", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1797, - "src": "3362:7:12", + "referencedDeclaration": 1992, + "src": "3246:7:18", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, - "id": 1995, + "id": 2194, "isConstant": false, "isLValue": true, "isPure": false, @@ -3276,31 +3286,31 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "3362:14:12", + "src": "3246:14:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3358:18:12", + "src": "3242:18:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 2018, + "id": 2217, "initializationExpression": { "assignments": [ - 1990 + 2189 ], "declarations": [ { "constant": false, - "id": 1990, + "id": 2189, "name": "i", "nodeType": "VariableDeclaration", - "scope": 2022, - "src": "3343:9:12", + "scope": 2221, + "src": "3227:9:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3308,10 +3318,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1989, + "id": 2188, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3343:7:12", + "src": "3227:7:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3321,18 +3331,18 @@ "visibility": "internal" } ], - "id": 1992, + "id": 2191, "initialValue": { "argumentTypes": null, "hexValue": "30", - "id": 1991, + "id": 2190, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3355:1:12", + "src": "3239:1:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -3341,12 +3351,12 @@ "value": "0" }, "nodeType": "VariableDeclarationStatement", - "src": "3343:13:12" + "src": "3227:13:18" }, "loopExpression": { "expression": { "argumentTypes": null, - "id": 1998, + "id": 2197, "isConstant": false, "isLValue": false, "isPure": false, @@ -3354,15 +3364,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "3378:3:12", + "src": "3262:3:18", "subExpression": { "argumentTypes": null, - "id": 1997, + "id": 2196, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1990, - "src": "3378:1:12", + "referencedDeclaration": 2189, + "src": "3262:1:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3373,25 +3383,25 @@ "typeString": "uint256" } }, - "id": 1999, + "id": 2198, "nodeType": "ExpressionStatement", - "src": "3378:3:12" + "src": "3262:3:18" }, "nodeType": "ForStatement", - "src": "3338:221:12" + "src": "3222:221:18" }, { "expression": { "argumentTypes": null, "hexValue": "66616c7365", - "id": 2019, + "id": 2218, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "3575:5:12", + "src": "3459:5:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -3399,15 +3409,15 @@ }, "value": "false" }, - "functionReturnParameters": 1985, - "id": 2020, + "functionReturnParameters": 2184, + "id": 2219, "nodeType": "Return", - "src": "3568:12:12" + "src": "3452:12:18" } ] }, "documentation": "@dev Returns if Safe transaction is a valid owner replacement transaction.\n @param dataHash Data hash.\n @return Confirmation status.", - "id": 2022, + "id": 2221, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -3415,16 +3425,16 @@ "name": "isConfirmedByRequiredFriends", "nodeType": "FunctionDefinition", "parameters": { - "id": 1982, + "id": 2181, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1981, + "id": 2180, "name": "dataHash", "nodeType": "VariableDeclaration", - "scope": 2022, - "src": "3220:16:12", + "scope": 2221, + "src": "3104:16:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3432,10 +3442,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 1980, + "id": 2179, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "3220:7:12", + "src": "3104:7:18", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -3445,20 +3455,20 @@ "visibility": "internal" } ], - "src": "3219:18:12" + "src": "3103:18:18" }, "payable": false, "returnParameters": { - "id": 1985, + "id": 2184, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1984, + "id": 2183, "name": "", "nodeType": "VariableDeclaration", - "scope": 2022, - "src": "3283:4:12", + "scope": 2221, + "src": "3167:4:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3466,10 +3476,10 @@ "typeString": "bool" }, "typeName": { - "id": 1983, + "id": 2182, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "3283:4:12", + "src": "3167:4:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3479,19 +3489,19 @@ "visibility": "internal" } ], - "src": "3282:6:12" + "src": "3166:6:18" }, - "scope": 2035, - "src": "3182:405:12", + "scope": 2234, + "src": "3066:405:18", "stateMutability": "view", "superFunction": null, "visibility": "public" }, { "body": { - "id": 2033, + "id": 2232, "nodeType": "Block", - "src": "3807:39:12", + "src": "3691:39:18", "statements": [ { "expression": { @@ -3499,12 +3509,12 @@ "arguments": [ { "argumentTypes": null, - "id": 2030, + "id": 2229, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2024, - "src": "3834:4:12", + "referencedDeclaration": 2223, + "src": "3718:4:18", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -3518,18 +3528,18 @@ "typeString": "bytes memory" } ], - "id": 2029, + "id": 2228, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2390, - "src": "3824:9:12", + "referencedDeclaration": 2592, + "src": "3708:9:18", "typeDescriptions": { "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", "typeString": "function () pure returns (bytes32)" } }, - "id": 2031, + "id": 2230, "isConstant": false, "isLValue": false, "isPure": false, @@ -3537,21 +3547,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3824:15:12", + "src": "3708:15:18", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "functionReturnParameters": 2028, - "id": 2032, + "functionReturnParameters": 2227, + "id": 2231, "nodeType": "Return", - "src": "3817:22:12" + "src": "3701:22:18" } ] }, "documentation": "@dev Returns hash of data encoding owner replacement.\n @param data Data payload.\n @return Data hash.", - "id": 2034, + "id": 2233, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -3559,16 +3569,16 @@ "name": "getDataHash", "nodeType": "FunctionDefinition", "parameters": { - "id": 2025, + "id": 2224, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2024, + "id": 2223, "name": "data", "nodeType": "VariableDeclaration", - "scope": 2034, - "src": "3737:10:12", + "scope": 2233, + "src": "3621:10:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3576,10 +3586,10 @@ "typeString": "bytes" }, "typeName": { - "id": 2023, + "id": 2222, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "3737:5:12", + "src": "3621:5:18", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -3589,20 +3599,20 @@ "visibility": "internal" } ], - "src": "3736:12:12" + "src": "3620:12:18" }, "payable": false, "returnParameters": { - "id": 2028, + "id": 2227, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2027, + "id": 2226, "name": "", "nodeType": "VariableDeclaration", - "scope": 2034, - "src": "3794:7:12", + "scope": 2233, + "src": "3678:7:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3610,10 +3620,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 2026, + "id": 2225, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "3794:7:12", + "src": "3678:7:18", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -3623,82 +3633,82 @@ "visibility": "internal" } ], - "src": "3793:9:12" + "src": "3677:9:18" }, - "scope": 2035, - "src": "3716:130:12", - "stateMutability": "view", + "scope": 2234, + "src": "3600:130:18", + "stateMutability": "pure", "superFunction": null, "visibility": "public" } ], - "scope": 2036, - "src": "306:3542:12" + "scope": 2235, + "src": "306:3426:18" } ], - "src": "0:3849:12" + "src": "0:3733:18" }, "legacyAST": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/modules/SocialRecoveryModule.sol", "exportedSymbols": { "SocialRecoveryModule": [ - 2035 + 2234 ] }, - "id": 2036, + "id": 2235, "nodeType": "SourceUnit", "nodes": [ { - "id": 1777, + "id": 1975, "literals": [ "solidity", "0.4", - ".23" + ".24" ], "nodeType": "PragmaDirective", - "src": "0:23:12" + "src": "0:23:18" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Enum.sol", "file": "../Enum.sol", - "id": 1778, + "id": 1976, "nodeType": "ImportDirective", - "scope": 2036, - "sourceUnit": 7, - "src": "24:21:12", + "scope": 2235, + "sourceUnit": 31, + "src": "24:21:18", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Module.sol", "file": "../Module.sol", - "id": 1779, + "id": 1977, "nodeType": "ImportDirective", - "scope": 2036, - "sourceUnit": 622, - "src": "46:23:12", + "scope": 2235, + "sourceUnit": 751, + "src": "46:23:18", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/ModuleManager.sol", "file": "../ModuleManager.sol", - "id": 1780, + "id": 1978, "nodeType": "ImportDirective", - "scope": 2036, - "sourceUnit": 972, - "src": "70:30:12", + "scope": 2235, + "sourceUnit": 1101, + "src": "70:30:18", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/OwnerManager.sol", "file": "../OwnerManager.sol", - "id": 1781, + "id": 1979, "nodeType": "ImportDirective", - "scope": 2036, - "sourceUnit": 1344, - "src": "101:29:12", + "scope": 2235, + "sourceUnit": 1473, + "src": "101:29:18", "symbolAliases": [], "unitAlias": "" }, @@ -3708,46 +3718,46 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 1782, + "id": 1980, "name": "Module", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 621, - "src": "339:6:12", + "referencedDeclaration": 750, + "src": "339:6:18", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$621", + "typeIdentifier": "t_contract$_Module_$750", "typeString": "contract Module" } }, - "id": 1783, + "id": 1981, "nodeType": "InheritanceSpecifier", - "src": "339:6:12" + "src": "339:6:18" } ], "contractDependencies": [ - 580, - 621, - 1359 + 652, + 750, + 1619 ], "contractKind": "contract", "documentation": "@title Social Recovery Module - Allows to replace an owner without Safe confirmations if friends approve the replacement.\n @author Stefan George - ", "fullyImplemented": true, - "id": 2035, + "id": 2234, "linearizedBaseContracts": [ - 2035, - 621, - 580, - 1359 + 2234, + 750, + 652, + 1619 ], "name": "SocialRecoveryModule", "nodeType": "ContractDefinition", "nodes": [ { "constant": true, - "id": 1786, + "id": 1984, "name": "NAME", "nodeType": "VariableDeclaration", - "scope": 2035, - "src": "353:54:12", + "scope": 2234, + "src": "353:54:18", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -3755,10 +3765,10 @@ "typeString": "string" }, "typeName": { - "id": 1784, + "id": 1982, "name": "string", "nodeType": "ElementaryTypeName", - "src": "353:6:12", + "src": "353:6:18", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -3767,14 +3777,14 @@ "value": { "argumentTypes": null, "hexValue": "536f6369616c205265636f76657279204d6f64756c65", - "id": 1785, + "id": 1983, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "383:24:12", + "src": "383:24:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_8f499aea563eae5544b16c9123d6c7c8537a7d9dd86296aa60c65de194207230", @@ -3786,11 +3796,11 @@ }, { "constant": true, - "id": 1789, + "id": 1987, "name": "VERSION", "nodeType": "VariableDeclaration", - "scope": 2035, - "src": "413:40:12", + "scope": 2234, + "src": "413:40:18", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -3798,10 +3808,10 @@ "typeString": "string" }, "typeName": { - "id": 1787, + "id": 1985, "name": "string", "nodeType": "ElementaryTypeName", - "src": "413:6:12", + "src": "413:6:18", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -3810,14 +3820,14 @@ "value": { "argumentTypes": null, "hexValue": "302e302e31", - "id": 1788, + "id": 1986, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "446:7:12", + "src": "446:7:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_ae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc199163811885", @@ -3827,56 +3837,13 @@ }, "visibility": "public" }, - { - "constant": true, - "id": 1792, - "name": "REPLACE_OWNER_FUNCTION_IDENTIFIER", - "nodeType": "VariableDeclaration", - "scope": 2035, - "src": "459:72:12", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - }, - "typeName": { - "id": 1790, - "name": "bytes4", - "nodeType": "ElementaryTypeName", - "src": "459:6:12", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - "value": { - "argumentTypes": null, - "hexValue": "e318b52b", - "id": 1791, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "518:13:12", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_df42753442dae44b262788763363a184bfb8d0df593d5073d67844ce4b3a2d8b", - "typeString": "literal_string (contains invalid UTF-8 sequence at position 2)" - }, - "value": null - }, - "visibility": "public" - }, { "constant": false, - "id": 1794, + "id": 1989, "name": "threshold", "nodeType": "VariableDeclaration", - "scope": 2035, - "src": "538:22:12", + "scope": 2234, + "src": "460:22:18", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -3884,10 +3851,10 @@ "typeString": "uint8" }, "typeName": { - "id": 1793, + "id": 1988, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "538:5:12", + "src": "460:5:18", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -3898,11 +3865,11 @@ }, { "constant": false, - "id": 1797, + "id": 1992, "name": "friends", "nodeType": "VariableDeclaration", - "scope": 2035, - "src": "566:24:12", + "scope": 2234, + "src": "488:24:18", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -3911,19 +3878,19 @@ }, "typeName": { "baseType": { - "id": 1795, + "id": 1990, "name": "address", "nodeType": "ElementaryTypeName", - "src": "566:7:12", + "src": "488:7:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1796, + "id": 1991, "length": null, "nodeType": "ArrayTypeName", - "src": "566:9:12", + "src": "488:9:18", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" @@ -3934,11 +3901,11 @@ }, { "constant": false, - "id": 1801, + "id": 1996, "name": "isFriend", "nodeType": "VariableDeclaration", - "scope": 2035, - "src": "661:41:12", + "scope": 2234, + "src": "583:41:18", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -3946,28 +3913,28 @@ "typeString": "mapping(address => bool)" }, "typeName": { - "id": 1800, + "id": 1995, "keyType": { - "id": 1798, + "id": 1993, "name": "address", "nodeType": "ElementaryTypeName", - "src": "670:7:12", + "src": "592:7:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", - "src": "661:25:12", + "src": "583:25:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" }, "valueType": { - "id": 1799, + "id": 1994, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "681:4:12", + "src": "603:4:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3979,11 +3946,11 @@ }, { "constant": false, - "id": 1805, + "id": 2000, "name": "isExecuted", "nodeType": "VariableDeclaration", - "scope": 2035, - "src": "770:43:12", + "scope": 2234, + "src": "692:43:18", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -3991,28 +3958,28 @@ "typeString": "mapping(bytes32 => bool)" }, "typeName": { - "id": 1804, + "id": 1999, "keyType": { - "id": 1802, + "id": 1997, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "779:7:12", + "src": "701:7:18", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "Mapping", - "src": "770:25:12", + "src": "692:25:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" }, "valueType": { - "id": 1803, + "id": 1998, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "790:4:12", + "src": "712:4:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4024,11 +3991,11 @@ }, { "constant": false, - "id": 1811, + "id": 2006, "name": "isConfirmed", "nodeType": "VariableDeclaration", - "scope": 2035, - "src": "905:65:12", + "scope": 2234, + "src": "827:65:18", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -4036,46 +4003,46 @@ "typeString": "mapping(bytes32 => mapping(address => bool))" }, "typeName": { - "id": 1810, + "id": 2005, "keyType": { - "id": 1806, + "id": 2001, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "914:7:12", + "src": "836:7:18", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "Mapping", - "src": "905:46:12", + "src": "827:46:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", "typeString": "mapping(bytes32 => mapping(address => bool))" }, "valueType": { - "id": 1809, + "id": 2004, "keyType": { - "id": 1807, + "id": 2002, "name": "address", "nodeType": "ElementaryTypeName", - "src": "934:7:12", + "src": "856:7:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", - "src": "925:25:12", + "src": "847:25:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" }, "valueType": { - "id": 1808, + "id": 2003, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "945:4:12", + "src": "867:4:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4088,9 +4055,9 @@ }, { "body": { - "id": 1821, + "id": 2016, "nodeType": "Block", - "src": "999:57:12", + "src": "921:57:18", "statements": [ { "expression": { @@ -4100,34 +4067,34 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1814, + "id": 2009, "name": "isFriend", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1801, - "src": "1017:8:12", + "referencedDeclaration": 1996, + "src": "939:8:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 1817, + "id": 2012, "indexExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1815, + "id": 2010, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2396, - "src": "1026:3:12", + "referencedDeclaration": 2598, + "src": "948:3:18", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 1816, + "id": 2011, "isConstant": false, "isLValue": false, "isPure": false, @@ -4135,7 +4102,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1026:10:12", + "src": "948:10:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4146,7 +4113,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1017:20:12", + "src": "939:20:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4160,21 +4127,21 @@ "typeString": "bool" } ], - "id": 1813, + "id": 2008, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "1009:7:12", + "referencedDeclaration": 2601, + "src": "931:7:18", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1818, + "id": 2013, "isConstant": false, "isLValue": false, "isPure": false, @@ -4182,41 +4149,41 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1009:29:12", + "src": "931:29:18", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1819, + "id": 2014, "nodeType": "ExpressionStatement", - "src": "1009:29:12" + "src": "931:29:18" }, { - "id": 1820, + "id": 2015, "nodeType": "PlaceholderStatement", - "src": "1048:1:12" + "src": "970:1:18" } ] }, "documentation": null, - "id": 1822, + "id": 2017, "name": "onlyFriend", "nodeType": "ModifierDefinition", "parameters": { - "id": 1812, + "id": 2007, "nodeType": "ParameterList", "parameters": [], - "src": "996:2:12" + "src": "918:2:18" }, - "src": "977:79:12", + "src": "899:79:18", "visibility": "internal" }, { "body": { - "id": 1892, + "id": 2087, "nodeType": "Block", - "src": "1325:422:12", + "src": "1247:422:18", "statements": [ { "expression": { @@ -4228,19 +4195,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1834, + "id": 2029, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1831, + "id": 2026, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1827, - "src": "1343:10:12", + "referencedDeclaration": 2022, + "src": "1265:10:18", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -4252,18 +4219,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1832, + "id": 2027, "name": "_friends", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1825, - "src": "1357:8:12", + "referencedDeclaration": 2020, + "src": "1279:8:18", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 1833, + "id": 2028, "isConstant": false, "isLValue": false, "isPure": false, @@ -4271,13 +4238,13 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1357:15:12", + "src": "1279:15:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1343:29:12", + "src": "1265:29:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4291,21 +4258,21 @@ "typeString": "bool" } ], - "id": 1830, + "id": 2025, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "1335:7:12", + "referencedDeclaration": 2601, + "src": "1257:7:18", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1835, + "id": 2030, "isConstant": false, "isLValue": false, "isPure": false, @@ -4313,15 +4280,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1335:38:12", + "src": "1257:38:18", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1836, + "id": 2031, "nodeType": "ExpressionStatement", - "src": "1335:38:12" + "src": "1257:38:18" }, { "expression": { @@ -4333,19 +4300,19 @@ "typeIdentifier": "t_uint8", "typeString": "uint8" }, - "id": 1840, + "id": 2035, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1838, + "id": 2033, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1827, - "src": "1391:10:12", + "referencedDeclaration": 2022, + "src": "1313:10:18", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -4356,14 +4323,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "32", - "id": 1839, + "id": 2034, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1405:1:12", + "src": "1327:1:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", @@ -4371,7 +4338,7 @@ }, "value": "2" }, - "src": "1391:15:12", + "src": "1313:15:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4385,21 +4352,21 @@ "typeString": "bool" } ], - "id": 1837, + "id": 2032, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "1383:7:12", + "referencedDeclaration": 2601, + "src": "1305:7:18", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1841, + "id": 2036, "isConstant": false, "isLValue": false, "isPure": false, @@ -4407,15 +4374,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1383:24:12", + "src": "1305:24:18", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1842, + "id": 2037, "nodeType": "ExpressionStatement", - "src": "1383:24:12" + "src": "1305:24:18" }, { "expression": { @@ -4423,18 +4390,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 1843, + "id": 2038, "name": "setManager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 620, - "src": "1417:10:12", + "referencedDeclaration": 749, + "src": "1339:10:18", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()" } }, - "id": 1844, + "id": 2039, "isConstant": false, "isLValue": false, "isPure": false, @@ -4442,34 +4409,34 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1417:12:12", + "src": "1339:12:18", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1845, + "id": 2040, "nodeType": "ExpressionStatement", - "src": "1417:12:12" + "src": "1339:12:18" }, { "body": { - "id": 1882, + "id": 2077, "nodeType": "Block", - "src": "1517:164:12", + "src": "1439:164:18", "statements": [ { "assignments": [ - 1858 + 2053 ], "declarations": [ { "constant": false, - "id": 1858, + "id": 2053, "name": "friend", "nodeType": "VariableDeclaration", - "scope": 1893, - "src": "1531:14:12", + "scope": 2088, + "src": "1453:14:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4477,10 +4444,10 @@ "typeString": "address" }, "typeName": { - "id": 1857, + "id": 2052, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1531:7:12", + "src": "1453:7:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4490,31 +4457,31 @@ "visibility": "internal" } ], - "id": 1862, + "id": 2057, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1859, + "id": 2054, "name": "_friends", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1825, - "src": "1548:8:12", + "referencedDeclaration": 2020, + "src": "1470:8:18", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 1861, + "id": 2056, "indexExpression": { "argumentTypes": null, - "id": 1860, + "id": 2055, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1847, - "src": "1557:1:12", + "referencedDeclaration": 2042, + "src": "1479:1:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4525,14 +4492,14 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1548:11:12", + "src": "1470:11:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", - "src": "1531:28:12" + "src": "1453:28:18" }, { "expression": { @@ -4544,19 +4511,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1866, + "id": 2061, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1864, + "id": 2059, "name": "friend", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1858, - "src": "1581:6:12", + "referencedDeclaration": 2053, + "src": "1503:6:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4567,14 +4534,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1865, + "id": 2060, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1591:1:12", + "src": "1513:1:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -4582,7 +4549,7 @@ }, "value": "0" }, - "src": "1581:11:12", + "src": "1503:11:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4596,21 +4563,21 @@ "typeString": "bool" } ], - "id": 1863, + "id": 2058, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "1573:7:12", + "referencedDeclaration": 2601, + "src": "1495:7:18", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1867, + "id": 2062, "isConstant": false, "isLValue": false, "isPure": false, @@ -4618,15 +4585,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1573:20:12", + "src": "1495:20:18", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1868, + "id": 2063, "nodeType": "ExpressionStatement", - "src": "1573:20:12" + "src": "1495:20:18" }, { "expression": { @@ -4634,7 +4601,7 @@ "arguments": [ { "argumentTypes": null, - "id": 1873, + "id": 2068, "isConstant": false, "isLValue": false, "isPure": false, @@ -4642,31 +4609,31 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "1615:17:12", + "src": "1537:17:18", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1870, + "id": 2065, "name": "isFriend", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1801, - "src": "1616:8:12", + "referencedDeclaration": 1996, + "src": "1538:8:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 1872, + "id": 2067, "indexExpression": { "argumentTypes": null, - "id": 1871, + "id": 2066, "name": "friend", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1858, - "src": "1625:6:12", + "referencedDeclaration": 2053, + "src": "1547:6:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4677,7 +4644,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1616:16:12", + "src": "1538:16:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4696,21 +4663,21 @@ "typeString": "bool" } ], - "id": 1869, + "id": 2064, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "1607:7:12", + "referencedDeclaration": 2601, + "src": "1529:7:18", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1874, + "id": 2069, "isConstant": false, "isLValue": false, "isPure": false, @@ -4718,20 +4685,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1607:26:12", + "src": "1529:26:18", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1875, + "id": 2070, "nodeType": "ExpressionStatement", - "src": "1607:26:12" + "src": "1529:26:18" }, { "expression": { "argumentTypes": null, - "id": 1880, + "id": 2075, "isConstant": false, "isLValue": false, "isPure": false, @@ -4740,26 +4707,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1876, + "id": 2071, "name": "isFriend", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1801, - "src": "1647:8:12", + "referencedDeclaration": 1996, + "src": "1569:8:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 1878, + "id": 2073, "indexExpression": { "argumentTypes": null, - "id": 1877, + "id": 2072, "name": "friend", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1858, - "src": "1656:6:12", + "referencedDeclaration": 2053, + "src": "1578:6:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4770,7 +4737,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1647:16:12", + "src": "1569:16:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4781,14 +4748,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 1879, + "id": 2074, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "1666:4:12", + "src": "1588:4:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -4796,15 +4763,15 @@ }, "value": "true" }, - "src": "1647:23:12", + "src": "1569:23:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 1881, + "id": 2076, "nodeType": "ExpressionStatement", - "src": "1647:23:12" + "src": "1569:23:18" } ] }, @@ -4814,19 +4781,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1853, + "id": 2048, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1850, + "id": 2045, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1847, - "src": "1491:1:12", + "referencedDeclaration": 2042, + "src": "1413:1:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4838,18 +4805,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1851, + "id": 2046, "name": "_friends", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1825, - "src": "1495:8:12", + "referencedDeclaration": 2020, + "src": "1417:8:18", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 1852, + "id": 2047, "isConstant": false, "isLValue": false, "isPure": false, @@ -4857,31 +4824,31 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1495:15:12", + "src": "1417:15:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1491:19:12", + "src": "1413:19:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 1883, + "id": 2078, "initializationExpression": { "assignments": [ - 1847 + 2042 ], "declarations": [ { "constant": false, - "id": 1847, + "id": 2042, "name": "i", "nodeType": "VariableDeclaration", - "scope": 1893, - "src": "1476:9:12", + "scope": 2088, + "src": "1398:9:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4889,10 +4856,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1846, + "id": 2041, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1476:7:12", + "src": "1398:7:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4902,18 +4869,18 @@ "visibility": "internal" } ], - "id": 1849, + "id": 2044, "initialValue": { "argumentTypes": null, "hexValue": "30", - "id": 1848, + "id": 2043, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1488:1:12", + "src": "1410:1:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -4922,12 +4889,12 @@ "value": "0" }, "nodeType": "VariableDeclarationStatement", - "src": "1476:13:12" + "src": "1398:13:18" }, "loopExpression": { "expression": { "argumentTypes": null, - "id": 1855, + "id": 2050, "isConstant": false, "isLValue": false, "isPure": false, @@ -4935,15 +4902,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "1512:3:12", + "src": "1434:3:18", "subExpression": { "argumentTypes": null, - "id": 1854, + "id": 2049, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1847, - "src": "1512:1:12", + "referencedDeclaration": 2042, + "src": "1434:1:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4954,29 +4921,29 @@ "typeString": "uint256" } }, - "id": 1856, + "id": 2051, "nodeType": "ExpressionStatement", - "src": "1512:3:12" + "src": "1434:3:18" }, "nodeType": "ForStatement", - "src": "1471:210:12" + "src": "1393:210:18" }, { "expression": { "argumentTypes": null, - "id": 1886, + "id": 2081, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1884, + "id": 2079, "name": "friends", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1797, - "src": "1690:7:12", + "referencedDeclaration": 1992, + "src": "1612:7:18", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" @@ -4986,43 +4953,43 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1885, + "id": 2080, "name": "_friends", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1825, - "src": "1700:8:12", + "referencedDeclaration": 2020, + "src": "1622:8:18", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "src": "1690:18:12", + "src": "1612:18:18", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, - "id": 1887, + "id": 2082, "nodeType": "ExpressionStatement", - "src": "1690:18:12" + "src": "1612:18:18" }, { "expression": { "argumentTypes": null, - "id": 1890, + "id": 2085, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1888, + "id": 2083, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1794, - "src": "1718:9:12", + "referencedDeclaration": 1989, + "src": "1640:9:18", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -5032,31 +4999,31 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1889, + "id": 2084, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1827, - "src": "1730:10:12", + "referencedDeclaration": 2022, + "src": "1652:10:18", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "src": "1718:22:12", + "src": "1640:22:18", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "id": 1891, + "id": 2086, "nodeType": "ExpressionStatement", - "src": "1718:22:12" + "src": "1640:22:18" } ] }, "documentation": "@dev Setup function sets initial storage of contract.\n @param _friends List of friends' addresses.\n @param _threshold Required number of friends to confirm replacement.", - "id": 1893, + "id": 2088, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -5064,16 +5031,16 @@ "name": "setup", "nodeType": "FunctionDefinition", "parameters": { - "id": 1828, + "id": 2023, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1825, + "id": 2020, "name": "_friends", "nodeType": "VariableDeclaration", - "scope": 1893, - "src": "1268:18:12", + "scope": 2088, + "src": "1190:18:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5082,19 +5049,19 @@ }, "typeName": { "baseType": { - "id": 1823, + "id": 2018, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1268:7:12", + "src": "1190:7:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1824, + "id": 2019, "length": null, "nodeType": "ArrayTypeName", - "src": "1268:9:12", + "src": "1190:9:18", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" @@ -5105,11 +5072,11 @@ }, { "constant": false, - "id": 1827, + "id": 2022, "name": "_threshold", "nodeType": "VariableDeclaration", - "scope": 1893, - "src": "1288:16:12", + "scope": 2088, + "src": "1210:16:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5117,10 +5084,10 @@ "typeString": "uint8" }, "typeName": { - "id": 1826, + "id": 2021, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "1288:5:12", + "src": "1210:5:18", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -5130,26 +5097,26 @@ "visibility": "internal" } ], - "src": "1267:38:12" + "src": "1189:38:18" }, "payable": false, "returnParameters": { - "id": 1829, + "id": 2024, "nodeType": "ParameterList", "parameters": [], - "src": "1325:0:12" + "src": "1247:0:18" }, - "scope": 2035, - "src": "1253:494:12", + "scope": 2234, + "src": "1175:494:18", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1916, + "id": 2111, "nodeType": "Block", - "src": "1944:97:12", + "src": "1866:97:18", "statements": [ { "expression": { @@ -5157,7 +5124,7 @@ "arguments": [ { "argumentTypes": null, - "id": 1904, + "id": 2099, "isConstant": false, "isLValue": false, "isPure": false, @@ -5165,31 +5132,31 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "1962:21:12", + "src": "1884:21:18", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1901, + "id": 2096, "name": "isExecuted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1805, - "src": "1963:10:12", + "referencedDeclaration": 2000, + "src": "1885:10:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" } }, - "id": 1903, + "id": 2098, "indexExpression": { "argumentTypes": null, - "id": 1902, + "id": 2097, "name": "dataHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1895, - "src": "1974:8:12", + "referencedDeclaration": 2090, + "src": "1896:8:18", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -5200,7 +5167,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1963:20:12", + "src": "1885:20:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5219,21 +5186,21 @@ "typeString": "bool" } ], - "id": 1900, + "id": 2095, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "1954:7:12", + "referencedDeclaration": 2601, + "src": "1876:7:18", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1905, + "id": 2100, "isConstant": false, "isLValue": false, "isPure": false, @@ -5241,20 +5208,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1954:30:12", + "src": "1876:30:18", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1906, + "id": 2101, "nodeType": "ExpressionStatement", - "src": "1954:30:12" + "src": "1876:30:18" }, { "expression": { "argumentTypes": null, - "id": 1914, + "id": 2109, "isConstant": false, "isLValue": false, "isPure": false, @@ -5265,26 +5232,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1907, + "id": 2102, "name": "isConfirmed", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1811, - "src": "1994:11:12", + "referencedDeclaration": 2006, + "src": "1916:11:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", "typeString": "mapping(bytes32 => mapping(address => bool))" } }, - "id": 1911, + "id": 2106, "indexExpression": { "argumentTypes": null, - "id": 1908, + "id": 2103, "name": "dataHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1895, - "src": "2006:8:12", + "referencedDeclaration": 2090, + "src": "1928:8:18", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -5295,29 +5262,29 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1994:21:12", + "src": "1916:21:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 1912, + "id": 2107, "indexExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1909, + "id": 2104, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2396, - "src": "2016:3:12", + "referencedDeclaration": 2598, + "src": "1938:3:18", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 1910, + "id": 2105, "isConstant": false, "isLValue": false, "isPure": false, @@ -5325,7 +5292,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2016:10:12", + "src": "1938:10:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5336,7 +5303,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1994:33:12", + "src": "1916:33:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5347,14 +5314,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 1913, + "id": 2108, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "2030:4:12", + "src": "1952:4:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -5362,57 +5329,57 @@ }, "value": "true" }, - "src": "1994:40:12", + "src": "1916:40:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 1915, + "id": 2110, "nodeType": "ExpressionStatement", - "src": "1994:40:12" + "src": "1916:40:18" } ] }, "documentation": "@dev Allows a friend to confirm a Safe transaction.\n @param dataHash Safe transaction hash.", - "id": 1917, + "id": 2112, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 1898, + "id": 2093, "modifierName": { "argumentTypes": null, - "id": 1897, + "id": 2092, "name": "onlyFriend", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1822, - "src": "1929:10:12", + "referencedDeclaration": 2017, + "src": "1851:10:18", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "1929:10:12" + "src": "1851:10:18" } ], "name": "confirmTransaction", "nodeType": "FunctionDefinition", "parameters": { - "id": 1896, + "id": 2091, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1895, + "id": 2090, "name": "dataHash", "nodeType": "VariableDeclaration", - "scope": 1917, - "src": "1888:16:12", + "scope": 2112, + "src": "1810:16:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5420,10 +5387,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 1894, + "id": 2089, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "1888:7:12", + "src": "1810:7:18", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -5433,26 +5400,26 @@ "visibility": "internal" } ], - "src": "1887:18:12" + "src": "1809:18:18" }, "payable": false, "returnParameters": { - "id": 1899, + "id": 2094, "nodeType": "ParameterList", "parameters": [], - "src": "1944:0:12" + "src": "1866:0:18" }, - "scope": 2035, - "src": "1860:181:12", + "scope": 2234, + "src": "1782:181:18", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1978, + "id": 2177, "nodeType": "Block", - "src": "2299:722:12", + "src": "2393:512:18", "statements": [ { "expression": { @@ -5462,34 +5429,34 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1923, + "id": 2122, "name": "isFriend", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1801, - "src": "2381:8:12", + "referencedDeclaration": 1996, + "src": "2475:8:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 1926, + "id": 2125, "indexExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1924, + "id": 2123, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2396, - "src": "2390:3:12", + "referencedDeclaration": 2598, + "src": "2484:3:18", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 1925, + "id": 2124, "isConstant": false, "isLValue": false, "isPure": false, @@ -5497,7 +5464,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2390:10:12", + "src": "2484:10:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5508,7 +5475,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2381:20:12", + "src": "2475:20:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5522,21 +5489,21 @@ "typeString": "bool" } ], - "id": 1922, + "id": 2121, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "2373:7:12", + "referencedDeclaration": 2601, + "src": "2467:7:18", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1927, + "id": 2126, "isConstant": false, "isLValue": false, "isPure": false, @@ -5544,149 +5511,157 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2373:29:12", + "src": "2467:29:18", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1928, + "id": 2127, "nodeType": "ExpressionStatement", - "src": "2373:29:12" + "src": "2467:29:18" }, { - "assignments": [], + "assignments": [ + 2129 + ], "declarations": [ { "constant": false, - "id": 1930, - "name": "functionIdentifier", + "id": 2129, + "name": "data", "nodeType": "VariableDeclaration", - "scope": 1979, - "src": "2485:25:12", + "scope": 2178, + "src": "2506:17:18", "stateVariable": false, - "storageLocation": "default", + "storageLocation": "memory", "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" }, "typeName": { - "id": 1929, - "name": "bytes4", + "id": 2128, + "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "2485:6:12", + "src": "2506:5:18", "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" } }, "value": null, "visibility": "internal" } ], - "id": 1931, - "initialValue": null, - "nodeType": "VariableDeclarationStatement", - "src": "2485:25:12" - }, - { - "externalReferences": [ - { - "functionIdentifier": { - "declaration": 1930, - "isOffset": false, - "isSlot": false, - "src": "2607:18:12", - "valueSize": 1 - } - }, - { - "data": { - "declaration": 1919, - "isOffset": false, - "isSlot": false, - "src": "2639:4:12", - "valueSize": 1 - } - } - ], - "id": 1932, - "nodeType": "InlineAssembly", - "operations": "{\n functionIdentifier := mload(add(data, 0x20))\n}", - "src": "2584:93:12" - }, - { - "expression": { + "id": 2137, + "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - }, - "id": 1936, + "hexValue": "737761704f776e657228616464726573732c616464726573732c6164647265737329", + "id": 2132, "isConstant": false, "isLValue": false, - "isPure": false, + "isPure": true, + "kind": "string", "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1934, - "name": "functionIdentifier", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1930, - "src": "2678:18:12", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "id": 1935, - "name": "REPLACE_OWNER_FUNCTION_IDENTIFIER", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1792, - "src": "2700:33:12", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - "src": "2678:55:12", + "nodeType": "Literal", + "src": "2550:36:18", + "subdenomination": null, "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_stringliteral_e318b52b9bee2870ac7ee0af86866eb2e8f9569b34de6028eb487e7983ba6df8", + "typeString": "literal_string \"swapOwner(address,address,address)\"" + }, + "value": "swapOwner(address,address,address)" + }, + { + "argumentTypes": null, + "id": 2133, + "name": "prevOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2114, + "src": "2588:9:18", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2134, + "name": "oldOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2116, + "src": "2599:8:18", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2135, + "name": "newOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2118, + "src": "2609:8:18", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } } ], "expression": { "argumentTypes": [ { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_stringliteral_e318b52b9bee2870ac7ee0af86866eb2e8f9569b34de6028eb487e7983ba6df8", + "typeString": "literal_string \"swapOwner(address,address,address)\"" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" } ], - "id": 1933, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 2399, - 2400 - ], - "referencedDeclaration": 2399, - "src": "2670:7:12", + "expression": { + "argumentTypes": null, + "id": 2130, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2585, + "src": "2526:3:18", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 2131, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodeWithSignature", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2526:23:18", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (string memory) pure returns (bytes memory)" } }, - "id": 1937, + "id": 2136, "isConstant": false, "isLValue": false, "isPure": false, @@ -5694,28 +5669,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2670:64:12", + "src": "2526:92:18", "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" } }, - "id": 1938, - "nodeType": "ExpressionStatement", - "src": "2670:64:12" + "nodeType": "VariableDeclarationStatement", + "src": "2506:112:18" }, { "assignments": [ - 1940 + 2139 ], "declarations": [ { "constant": false, - "id": 1940, + "id": 2139, "name": "dataHash", "nodeType": "VariableDeclaration", - "scope": 1979, - "src": "2744:16:12", + "scope": 2178, + "src": "2628:16:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5723,10 +5697,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 1939, + "id": 2138, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "2744:7:12", + "src": "2628:7:18", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -5736,18 +5710,18 @@ "visibility": "internal" } ], - "id": 1944, + "id": 2143, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 1942, + "id": 2141, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1919, - "src": "2775:4:12", + "referencedDeclaration": 2129, + "src": "2659:4:18", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -5761,18 +5735,18 @@ "typeString": "bytes memory" } ], - "id": 1941, + "id": 2140, "name": "getDataHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2034, - "src": "2763:11:12", + "referencedDeclaration": 2233, + "src": "2647:11:18", "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$_t_bytes32_$", - "typeString": "function (bytes memory) view returns (bytes32)" + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" } }, - "id": 1943, + "id": 2142, "isConstant": false, "isLValue": false, "isPure": false, @@ -5780,14 +5754,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2763:17:12", + "src": "2647:17:18", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "VariableDeclarationStatement", - "src": "2744:36:12" + "src": "2628:36:18" }, { "expression": { @@ -5795,7 +5769,7 @@ "arguments": [ { "argumentTypes": null, - "id": 1949, + "id": 2148, "isConstant": false, "isLValue": false, "isPure": false, @@ -5803,31 +5777,31 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "2798:21:12", + "src": "2682:21:18", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1946, + "id": 2145, "name": "isExecuted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1805, - "src": "2799:10:12", + "referencedDeclaration": 2000, + "src": "2683:10:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" } }, - "id": 1948, + "id": 2147, "indexExpression": { "argumentTypes": null, - "id": 1947, + "id": 2146, "name": "dataHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1940, - "src": "2810:8:12", + "referencedDeclaration": 2139, + "src": "2694:8:18", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -5838,7 +5812,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2799:20:12", + "src": "2683:20:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5857,21 +5831,21 @@ "typeString": "bool" } ], - "id": 1945, + "id": 2144, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "2790:7:12", + "referencedDeclaration": 2601, + "src": "2674:7:18", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1950, + "id": 2149, "isConstant": false, "isLValue": false, "isPure": false, @@ -5879,15 +5853,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2790:30:12", + "src": "2674:30:18", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1951, + "id": 2150, "nodeType": "ExpressionStatement", - "src": "2790:30:12" + "src": "2674:30:18" }, { "expression": { @@ -5898,12 +5872,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1954, + "id": 2153, "name": "dataHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1940, - "src": "2867:8:12", + "referencedDeclaration": 2139, + "src": "2751:8:18", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -5917,18 +5891,18 @@ "typeString": "bytes32" } ], - "id": 1953, + "id": 2152, "name": "isConfirmedByRequiredFriends", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2022, - "src": "2838:28:12", + "referencedDeclaration": 2221, + "src": "2722:28:18", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bool_$", "typeString": "function (bytes32) view returns (bool)" } }, - "id": 1955, + "id": 2154, "isConstant": false, "isLValue": false, "isPure": false, @@ -5936,7 +5910,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2838:38:12", + "src": "2722:38:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5950,21 +5924,21 @@ "typeString": "bool" } ], - "id": 1952, + "id": 2151, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "2830:7:12", + "referencedDeclaration": 2601, + "src": "2714:7:18", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1956, + "id": 2155, "isConstant": false, "isLValue": false, "isPure": false, @@ -5972,20 +5946,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2830:47:12", + "src": "2714:47:18", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1957, + "id": 2156, "nodeType": "ExpressionStatement", - "src": "2830:47:12" + "src": "2714:47:18" }, { "expression": { "argumentTypes": null, - "id": 1962, + "id": 2161, "isConstant": false, "isLValue": false, "isPure": false, @@ -5994,26 +5968,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1958, + "id": 2157, "name": "isExecuted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1805, - "src": "2887:10:12", + "referencedDeclaration": 2000, + "src": "2771:10:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" } }, - "id": 1960, + "id": 2159, "indexExpression": { "argumentTypes": null, - "id": 1959, + "id": 2158, "name": "dataHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1940, - "src": "2898:8:12", + "referencedDeclaration": 2139, + "src": "2782:8:18", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -6024,7 +5998,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "2887:20:12", + "src": "2771:20:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6035,14 +6009,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 1961, + "id": 2160, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "2910:4:12", + "src": "2794:4:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -6050,15 +6024,15 @@ }, "value": "true" }, - "src": "2887:27:12", + "src": "2771:27:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 1963, + "id": 2162, "nodeType": "ExpressionStatement", - "src": "2887:27:12" + "src": "2771:27:18" }, { "expression": { @@ -6072,14 +6046,14 @@ "arguments": [ { "argumentTypes": null, - "id": 1968, + "id": 2167, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 588, - "src": "2974:7:12", + "referencedDeclaration": 717, + "src": "2858:7:18", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$971", + "typeIdentifier": "t_contract$_ModuleManager_$1100", "typeString": "contract ModuleManager" } } @@ -6087,24 +6061,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_ModuleManager_$971", + "typeIdentifier": "t_contract$_ModuleManager_$1100", "typeString": "contract ModuleManager" } ], - "id": 1967, + "id": 2166, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2966:7:12", + "src": "2850:7:18", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 1969, + "id": 2168, "isConstant": false, "isLValue": false, "isPure": false, @@ -6112,7 +6086,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2966:16:12", + "src": "2850:16:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6121,14 +6095,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 1970, + "id": 2169, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2984:1:12", + "src": "2868:1:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -6138,12 +6112,12 @@ }, { "argumentTypes": null, - "id": 1971, + "id": 2170, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1919, - "src": "2987:4:12", + "referencedDeclaration": 2129, + "src": "2871:4:18", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -6155,32 +6129,32 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1972, + "id": 2171, "name": "Enum", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6, - "src": "2993:4:12", + "referencedDeclaration": 30, + "src": "2877:4:18", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Enum_$6_$", + "typeIdentifier": "t_type$_t_contract$_Enum_$30_$", "typeString": "type(contract Enum)" } }, - "id": 1973, + "id": 2172, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "Operation", "nodeType": "MemberAccess", - "referencedDeclaration": 5, - "src": "2993:14:12", + "referencedDeclaration": 29, + "src": "2877:14:18", "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_Operation_$5_$", + "typeIdentifier": "t_type$_t_enum$_Operation_$29_$", "typeString": "type(enum Enum.Operation)" } }, - "id": 1974, + "id": 2173, "isConstant": false, "isLValue": false, "isPure": true, @@ -6188,9 +6162,9 @@ "memberName": "Call", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2993:19:12", + "src": "2877:19:18", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } } @@ -6210,38 +6184,38 @@ "typeString": "bytes memory" }, { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } ], "expression": { "argumentTypes": null, - "id": 1965, + "id": 2164, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 588, - "src": "2932:7:12", + "referencedDeclaration": 717, + "src": "2816:7:18", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$971", + "typeIdentifier": "t_contract$_ModuleManager_$1100", "typeString": "contract ModuleManager" } }, - "id": 1966, + "id": 2165, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "execTransactionFromModule", "nodeType": "MemberAccess", - "referencedDeclaration": 798, - "src": "2932:33:12", + "referencedDeclaration": 927, + "src": "2816:33:18", "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$5_$returns$_t_bool_$", + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$returns$_t_bool_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation) external returns (bool)" } }, - "id": 1975, + "id": 2174, "isConstant": false, "isLValue": false, "isPure": false, @@ -6249,7 +6223,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2932:81:12", + "src": "2816:81:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6263,21 +6237,21 @@ "typeString": "bool" } ], - "id": 1964, + "id": 2163, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "2924:7:12", + "referencedDeclaration": 2601, + "src": "2808:7:18", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1976, + "id": 2175, "isConstant": false, "isLValue": false, "isPure": false, @@ -6285,20 +6259,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2924:90:12", + "src": "2808:90:18", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1977, + "id": 2176, "nodeType": "ExpressionStatement", - "src": "2924:90:12" + "src": "2808:90:18" } ] }, - "documentation": "@dev Returns if Safe transaction is a valid owner replacement transaction.\n @param data Encoded owner replacement transaction.\n @return Returns if transaction can be executed.", - "id": 1979, + "documentation": "@dev Returns if Safe transaction is a valid owner replacement transaction.\n @param prevOwner Owner that pointed to the owner to be replaced in the linked list\n @param oldOwner Owner address to be replaced.\n @param newOwner New owner address.\n @return Returns if transaction can be executed.", + "id": 2178, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -6306,67 +6280,119 @@ "name": "recoverAccess", "nodeType": "FunctionDefinition", "parameters": { - "id": 1920, + "id": 2119, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1919, - "name": "data", + "id": 2114, + "name": "prevOwner", "nodeType": "VariableDeclaration", - "scope": 1979, - "src": "2268:10:12", + "scope": 2178, + "src": "2319:17:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" + "typeIdentifier": "t_address", + "typeString": "address" }, "typeName": { - "id": 1918, - "name": "bytes", + "id": 2113, + "name": "address", "nodeType": "ElementaryTypeName", - "src": "2268:5:12", + "src": "2319:7:18", "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2116, + "name": "oldOwner", + "nodeType": "VariableDeclaration", + "scope": 2178, + "src": "2338:16:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2115, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2338:7:18", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2118, + "name": "newOwner", + "nodeType": "VariableDeclaration", + "scope": 2178, + "src": "2356:16:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2117, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2356:7:18", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, "value": null, "visibility": "internal" } ], - "src": "2267:12:12" + "src": "2318:55:18" }, "payable": false, "returnParameters": { - "id": 1921, + "id": 2120, "nodeType": "ParameterList", "parameters": [], - "src": "2299:0:12" + "src": "2393:0:18" }, - "scope": 2035, - "src": "2245:776:12", + "scope": 2234, + "src": "2296:609:18", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 2021, + "id": 2220, "nodeType": "Block", - "src": "3293:294:12", + "src": "3177:294:18", "statements": [ { "assignments": [], "declarations": [ { "constant": false, - "id": 1987, + "id": 2186, "name": "confirmationCount", "nodeType": "VariableDeclaration", - "scope": 2022, - "src": "3303:25:12", + "scope": 2221, + "src": "3187:25:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6374,10 +6400,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1986, + "id": 2185, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3303:7:12", + "src": "3187:7:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6387,16 +6413,16 @@ "visibility": "internal" } ], - "id": 1988, + "id": 2187, "initialValue": null, "nodeType": "VariableDeclarationStatement", - "src": "3303:25:12" + "src": "3187:25:18" }, { "body": { - "id": 2017, + "id": 2216, "nodeType": "Block", - "src": "3383:176:12", + "src": "3267:176:18", "statements": [ { "condition": { @@ -6405,26 +6431,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2000, + "id": 2199, "name": "isConfirmed", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1811, - "src": "3401:11:12", + "referencedDeclaration": 2006, + "src": "3285:11:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", "typeString": "mapping(bytes32 => mapping(address => bool))" } }, - "id": 2002, + "id": 2201, "indexExpression": { "argumentTypes": null, - "id": 2001, + "id": 2200, "name": "dataHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1981, - "src": "3413:8:12", + "referencedDeclaration": 2180, + "src": "3297:8:18", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -6435,37 +6461,37 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3401:21:12", + "src": "3285:21:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 2006, + "id": 2205, "indexExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2003, + "id": 2202, "name": "friends", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1797, - "src": "3423:7:12", + "referencedDeclaration": 1992, + "src": "3307:7:18", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, - "id": 2005, + "id": 2204, "indexExpression": { "argumentTypes": null, - "id": 2004, + "id": 2203, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1990, - "src": "3431:1:12", + "referencedDeclaration": 2189, + "src": "3315:1:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6476,7 +6502,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3423:10:12", + "src": "3307:10:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6487,20 +6513,20 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3401:33:12", + "src": "3285:33:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 2010, + "id": 2209, "nodeType": "IfStatement", - "src": "3397:74:12", + "src": "3281:74:18", "trueBody": { "expression": { "argumentTypes": null, - "id": 2008, + "id": 2207, "isConstant": false, "isLValue": false, "isPure": false, @@ -6508,15 +6534,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "3452:19:12", + "src": "3336:19:18", "subExpression": { "argumentTypes": null, - "id": 2007, + "id": 2206, "name": "confirmationCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1987, - "src": "3452:17:12", + "referencedDeclaration": 2186, + "src": "3336:17:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6527,9 +6553,9 @@ "typeString": "uint256" } }, - "id": 2009, + "id": 2208, "nodeType": "ExpressionStatement", - "src": "3452:19:12" + "src": "3336:19:18" } }, { @@ -6539,19 +6565,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 2013, + "id": 2212, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 2011, + "id": 2210, "name": "confirmationCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1987, - "src": "3489:17:12", + "referencedDeclaration": 2186, + "src": "3373:17:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6561,39 +6587,39 @@ "operator": "==", "rightExpression": { "argumentTypes": null, - "id": 2012, + "id": 2211, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1794, - "src": "3510:9:12", + "referencedDeclaration": 1989, + "src": "3394:9:18", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "src": "3489:30:12", + "src": "3373:30:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 2016, + "id": 2215, "nodeType": "IfStatement", - "src": "3485:63:12", + "src": "3369:63:18", "trueBody": { "expression": { "argumentTypes": null, "hexValue": "74727565", - "id": 2014, + "id": 2213, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "3544:4:12", + "src": "3428:4:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -6601,10 +6627,10 @@ }, "value": "true" }, - "functionReturnParameters": 1985, - "id": 2015, + "functionReturnParameters": 2184, + "id": 2214, "nodeType": "Return", - "src": "3537:11:12" + "src": "3421:11:18" } } ] @@ -6615,19 +6641,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1996, + "id": 2195, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1993, + "id": 2192, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1990, - "src": "3358:1:12", + "referencedDeclaration": 2189, + "src": "3242:1:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6639,18 +6665,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1994, + "id": 2193, "name": "friends", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1797, - "src": "3362:7:12", + "referencedDeclaration": 1992, + "src": "3246:7:18", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, - "id": 1995, + "id": 2194, "isConstant": false, "isLValue": true, "isPure": false, @@ -6658,31 +6684,31 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "3362:14:12", + "src": "3246:14:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3358:18:12", + "src": "3242:18:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 2018, + "id": 2217, "initializationExpression": { "assignments": [ - 1990 + 2189 ], "declarations": [ { "constant": false, - "id": 1990, + "id": 2189, "name": "i", "nodeType": "VariableDeclaration", - "scope": 2022, - "src": "3343:9:12", + "scope": 2221, + "src": "3227:9:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6690,10 +6716,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1989, + "id": 2188, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3343:7:12", + "src": "3227:7:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6703,18 +6729,18 @@ "visibility": "internal" } ], - "id": 1992, + "id": 2191, "initialValue": { "argumentTypes": null, "hexValue": "30", - "id": 1991, + "id": 2190, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3355:1:12", + "src": "3239:1:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -6723,12 +6749,12 @@ "value": "0" }, "nodeType": "VariableDeclarationStatement", - "src": "3343:13:12" + "src": "3227:13:18" }, "loopExpression": { "expression": { "argumentTypes": null, - "id": 1998, + "id": 2197, "isConstant": false, "isLValue": false, "isPure": false, @@ -6736,15 +6762,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "3378:3:12", + "src": "3262:3:18", "subExpression": { "argumentTypes": null, - "id": 1997, + "id": 2196, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1990, - "src": "3378:1:12", + "referencedDeclaration": 2189, + "src": "3262:1:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6755,25 +6781,25 @@ "typeString": "uint256" } }, - "id": 1999, + "id": 2198, "nodeType": "ExpressionStatement", - "src": "3378:3:12" + "src": "3262:3:18" }, "nodeType": "ForStatement", - "src": "3338:221:12" + "src": "3222:221:18" }, { "expression": { "argumentTypes": null, "hexValue": "66616c7365", - "id": 2019, + "id": 2218, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "3575:5:12", + "src": "3459:5:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -6781,15 +6807,15 @@ }, "value": "false" }, - "functionReturnParameters": 1985, - "id": 2020, + "functionReturnParameters": 2184, + "id": 2219, "nodeType": "Return", - "src": "3568:12:12" + "src": "3452:12:18" } ] }, "documentation": "@dev Returns if Safe transaction is a valid owner replacement transaction.\n @param dataHash Data hash.\n @return Confirmation status.", - "id": 2022, + "id": 2221, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -6797,16 +6823,16 @@ "name": "isConfirmedByRequiredFriends", "nodeType": "FunctionDefinition", "parameters": { - "id": 1982, + "id": 2181, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1981, + "id": 2180, "name": "dataHash", "nodeType": "VariableDeclaration", - "scope": 2022, - "src": "3220:16:12", + "scope": 2221, + "src": "3104:16:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6814,10 +6840,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 1980, + "id": 2179, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "3220:7:12", + "src": "3104:7:18", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -6827,20 +6853,20 @@ "visibility": "internal" } ], - "src": "3219:18:12" + "src": "3103:18:18" }, "payable": false, "returnParameters": { - "id": 1985, + "id": 2184, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1984, + "id": 2183, "name": "", "nodeType": "VariableDeclaration", - "scope": 2022, - "src": "3283:4:12", + "scope": 2221, + "src": "3167:4:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6848,10 +6874,10 @@ "typeString": "bool" }, "typeName": { - "id": 1983, + "id": 2182, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "3283:4:12", + "src": "3167:4:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6861,19 +6887,19 @@ "visibility": "internal" } ], - "src": "3282:6:12" + "src": "3166:6:18" }, - "scope": 2035, - "src": "3182:405:12", + "scope": 2234, + "src": "3066:405:18", "stateMutability": "view", "superFunction": null, "visibility": "public" }, { "body": { - "id": 2033, + "id": 2232, "nodeType": "Block", - "src": "3807:39:12", + "src": "3691:39:18", "statements": [ { "expression": { @@ -6881,12 +6907,12 @@ "arguments": [ { "argumentTypes": null, - "id": 2030, + "id": 2229, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2024, - "src": "3834:4:12", + "referencedDeclaration": 2223, + "src": "3718:4:18", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -6900,18 +6926,18 @@ "typeString": "bytes memory" } ], - "id": 2029, + "id": 2228, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2390, - "src": "3824:9:12", + "referencedDeclaration": 2592, + "src": "3708:9:18", "typeDescriptions": { "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", "typeString": "function () pure returns (bytes32)" } }, - "id": 2031, + "id": 2230, "isConstant": false, "isLValue": false, "isPure": false, @@ -6919,21 +6945,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3824:15:12", + "src": "3708:15:18", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "functionReturnParameters": 2028, - "id": 2032, + "functionReturnParameters": 2227, + "id": 2231, "nodeType": "Return", - "src": "3817:22:12" + "src": "3701:22:18" } ] }, "documentation": "@dev Returns hash of data encoding owner replacement.\n @param data Data payload.\n @return Data hash.", - "id": 2034, + "id": 2233, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -6941,16 +6967,16 @@ "name": "getDataHash", "nodeType": "FunctionDefinition", "parameters": { - "id": 2025, + "id": 2224, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2024, + "id": 2223, "name": "data", "nodeType": "VariableDeclaration", - "scope": 2034, - "src": "3737:10:12", + "scope": 2233, + "src": "3621:10:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6958,10 +6984,10 @@ "typeString": "bytes" }, "typeName": { - "id": 2023, + "id": 2222, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "3737:5:12", + "src": "3621:5:18", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -6971,20 +6997,20 @@ "visibility": "internal" } ], - "src": "3736:12:12" + "src": "3620:12:18" }, "payable": false, "returnParameters": { - "id": 2028, + "id": 2227, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2027, + "id": 2226, "name": "", "nodeType": "VariableDeclaration", - "scope": 2034, - "src": "3794:7:12", + "scope": 2233, + "src": "3678:7:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6992,10 +7018,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 2026, + "id": 2225, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "3794:7:12", + "src": "3678:7:18", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -7005,63 +7031,45 @@ "visibility": "internal" } ], - "src": "3793:9:12" + "src": "3677:9:18" }, - "scope": 2035, - "src": "3716:130:12", - "stateMutability": "view", + "scope": 2234, + "src": "3600:130:18", + "stateMutability": "pure", "superFunction": null, "visibility": "public" } ], - "scope": 2036, - "src": "306:3542:12" + "scope": 2235, + "src": "306:3426:18" } ], - "src": "0:3849:12" + "src": "0:3733:18" }, "compiler": { "name": "solc", - "version": "0.4.23+commit.124ca40d.Emscripten.clang" + "version": "0.4.24+commit.e67f0147.Emscripten.clang" }, "networks": { "4": { "events": {}, "links": {}, - "address": "0x1d851ebb3a205deb27104b7bef2a5633fba06154", - "transactionHash": "0xf2590f3fc263b11656e7dbcce8d8f02605b6856cade967e1720cc0c5dd2608d5" - }, - "1525950336085": { - "events": {}, - "links": {}, - "address": "0xfe2114e016fa8d92959754f25d4f63f155ad1a6a", - "transactionHash": "0xa514f0c5c6fcab99a16bba503b6ed893935cedfafe2e5c8c825dfc117e1e266d" - }, - "1526283540628": { - "events": {}, - "links": {}, - "address": "0x12fb2fe4f6d4c08b14c694e163b9bee65697e708", - "transactionHash": "0xa514f0c5c6fcab99a16bba503b6ed893935cedfafe2e5c8c825dfc117e1e266d" - }, - "1526478212260": { - "events": {}, - "links": {}, - "address": "0x1a92687d3982d12a985c4c35447673ff1fd312d1", - "transactionHash": "0x44896356866fb32a30fe5b74e2e5b2ce3383ffef7f3190f5f10a98b5fa4406de" - }, - "1526973574996": { - "events": {}, - "links": {}, - "address": "0xadaea58298d3f8087ac9a8d9c70ed90bb47719c3", - "transactionHash": "0x44896356866fb32a30fe5b74e2e5b2ce3383ffef7f3190f5f10a98b5fa4406de" + "address": "0xf1f0987c2fb0a6fc7ca75465e34318ff64fb24c6", + "transactionHash": "0x9a1262d8d385b0ec7979a9141249dc703f74e98cf9c9f4060ad16ecd92f67dad" }, "1527316019334": { "events": {}, "links": {}, - "address": "0x2ee2d6323f9595963caece8280b6e6a81d4f9d49", - "transactionHash": "0x44896356866fb32a30fe5b74e2e5b2ce3383ffef7f3190f5f10a98b5fa4406de" + "address": "0x268518ad20d3faa34e233e8685d726ad2ec10b4b", + "transactionHash": "0x3b404f9bf2e58e33eeaba336d431c1d819a719b0765dfe2a33831b97d9036a2e" + }, + "1527420696956": { + "events": {}, + "links": {}, + "address": "0x99d67fc14c6d86cf065a844515916bfbb3ec764d", + "transactionHash": "0x05db0b84de2c38f22917f5a5372ee159959c99ae966e9b07fb99c11a3e099d4d" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-26T06:28:28.363Z" + "updatedAt": "2018-05-27T11:31:46.341Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/StateChannelModule.json b/safe-contracts/build/contracts/StateChannelModule.json index 860bda1b..04194abe 100644 --- a/safe-contracts/build/contracts/StateChannelModule.json +++ b/safe-contracts/build/contracts/StateChannelModule.json @@ -163,51 +163,51 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50610e5a806100206000396000f30060806040526004361061008e576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806319604647146100935780632b50004114610206578063481c6a75146102cc5780637de7edef14610323578063a3f4df7e14610366578063ba0bba40146103f6578063e52cb36a1461040d578063ffa1ad7414610456575b600080fd5b34801561009f57600080fd5b50610204600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190803590602001909291908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192905050506104e6565b005b34801561021257600080fd5b506102ae600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919080359060200190929190505050610705565b60405180826000191660001916815260200191505060405180910390f35b3480156102d857600080fd5b506102e1610921565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561032f57600080fd5b50610364600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610947565b005b34801561037257600080fd5b5061037b610a0c565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103bb5780820151818401526020810190506103a0565b50505050905090810190601f1680156103e85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561040257600080fd5b5061040b610a45565b005b34801561041957600080fd5b5061043c6004803603810190808035600019169060200190929190505050610a4f565b604051808215151515815260200191505060405180910390f35b34801561046257600080fd5b5061046b610a6f565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104ab578082015181840152602081019050610490565b50505050905090810190601f1680156104d85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60006104f58989898989610705565b905060026000826000191660001916815260200190815260200160002060009054906101000a900460ff1615151561052c57600080fd5b61053881858585610aa8565b600160026000836000191660001916815260200190815260200160002060006101000a81548160ff021916908315150217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a78a8a8a8a6040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018060200183600281111561062557fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b8381101561066557808201518184015260208101905061064a565b50505050905090810190601f1680156106925780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b1580156106b457600080fd5b505af11580156106c8573d6000803e3d6000fd5b505050506040513d60208110156106de57600080fd5b810190808051906020019092919050505015156106fa57600080fd5b505050505050505050565b600060197f01000000000000000000000000000000000000000000000000000000000000000260007f01000000000000000000000000000000000000000000000000000000000000000230888888888860405180897effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101887effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140185815260200184805190602001908083835b6020831015156108a65780518252602082019150602081019050602083039250610881565b6001836020036101000a0380198251168184511680821785525050505050509050018360028111156108d457fe5b60ff167f0100000000000000000000000000000000000000000000000000000000000000028152600101828152602001985050505050505050506040518091039020905095945050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156109a357600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141515156109c957600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6040805190810160405280601481526020017f5374617465204368616e6e656c204d6f64756c6500000000000000000000000081525081565b610a4d610da4565b565b60026020528060005260406000206000915054906101000a900460ff1681565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b60008060008060009350600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e75235b86040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015610b3857600080fd5b505af1158015610b4c573d6000803e3d6000fd5b505050506040513d6020811015610b6257600080fd5b81019080805190602001909291905050509050600091505b8060ff16821015610d9a576001888884815181101515610b9657fe5b906020019060200201518885815181101515610bae57fe5b906020019060200201518886815181101515610bc657fe5b90602001906020020151604051600081526020016040526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000865af1158015610c41573d6000803e3d6000fd5b505050602060405103519250600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f54bf6e846040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015610d0a57600080fd5b505af1158015610d1e573d6000803e3d6000fd5b505050506040513d6020811015610d3457600080fd5b81019080805190602001909291905050501515610d5057600080fd5b8373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16111515610d8a57600080fd5b8293508180600101925050610b7a565b5050505050505050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610deb57600080fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505600a165627a7a72305820a4183092cbe869320dacc60413aa4faaa13aa1779d1603c8db847137fdfc7df10029", - "deployedBytecode": "0x60806040526004361061008e576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806319604647146100935780632b50004114610206578063481c6a75146102cc5780637de7edef14610323578063a3f4df7e14610366578063ba0bba40146103f6578063e52cb36a1461040d578063ffa1ad7414610456575b600080fd5b34801561009f57600080fd5b50610204600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190803590602001909291908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192905050506104e6565b005b34801561021257600080fd5b506102ae600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919080359060200190929190505050610705565b60405180826000191660001916815260200191505060405180910390f35b3480156102d857600080fd5b506102e1610921565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561032f57600080fd5b50610364600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610947565b005b34801561037257600080fd5b5061037b610a0c565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103bb5780820151818401526020810190506103a0565b50505050905090810190601f1680156103e85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561040257600080fd5b5061040b610a45565b005b34801561041957600080fd5b5061043c6004803603810190808035600019169060200190929190505050610a4f565b604051808215151515815260200191505060405180910390f35b34801561046257600080fd5b5061046b610a6f565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104ab578082015181840152602081019050610490565b50505050905090810190601f1680156104d85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60006104f58989898989610705565b905060026000826000191660001916815260200190815260200160002060009054906101000a900460ff1615151561052c57600080fd5b61053881858585610aa8565b600160026000836000191660001916815260200190815260200160002060006101000a81548160ff021916908315150217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a78a8a8a8a6040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018060200183600281111561062557fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b8381101561066557808201518184015260208101905061064a565b50505050905090810190601f1680156106925780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b1580156106b457600080fd5b505af11580156106c8573d6000803e3d6000fd5b505050506040513d60208110156106de57600080fd5b810190808051906020019092919050505015156106fa57600080fd5b505050505050505050565b600060197f01000000000000000000000000000000000000000000000000000000000000000260007f01000000000000000000000000000000000000000000000000000000000000000230888888888860405180897effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101887effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140185815260200184805190602001908083835b6020831015156108a65780518252602082019150602081019050602083039250610881565b6001836020036101000a0380198251168184511680821785525050505050509050018360028111156108d457fe5b60ff167f0100000000000000000000000000000000000000000000000000000000000000028152600101828152602001985050505050505050506040518091039020905095945050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156109a357600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141515156109c957600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6040805190810160405280601481526020017f5374617465204368616e6e656c204d6f64756c6500000000000000000000000081525081565b610a4d610da4565b565b60026020528060005260406000206000915054906101000a900460ff1681565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b60008060008060009350600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e75235b86040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015610b3857600080fd5b505af1158015610b4c573d6000803e3d6000fd5b505050506040513d6020811015610b6257600080fd5b81019080805190602001909291905050509050600091505b8060ff16821015610d9a576001888884815181101515610b9657fe5b906020019060200201518885815181101515610bae57fe5b906020019060200201518886815181101515610bc657fe5b90602001906020020151604051600081526020016040526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000865af1158015610c41573d6000803e3d6000fd5b505050602060405103519250600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f54bf6e846040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015610d0a57600080fd5b505af1158015610d1e573d6000803e3d6000fd5b505050506040513d6020811015610d3457600080fd5b81019080805190602001909291905050501515610d5057600080fd5b8373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16111515610d8a57600080fd5b8293508180600101925050610b7a565b5050505050505050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610deb57600080fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505600a165627a7a72305820a4183092cbe869320dacc60413aa4faaa13aa1779d1603c8db847137fdfc7df10029", - "sourceMap": "269:2840:13:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;269:2840:13;;;;;;;", - "deployedSourceMap": "269:2840:13:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1265:602;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1265:602:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2796:311;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2796:311:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;262:28:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;262:28:5;;;;;;;;;;;;;;;;;;;;;;;;;;;626:208:4;;8:9:-1;5:2;;;30:1;27;20:12;5:2;626:208:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;314:52:13;;8:9:-1;5:2;;;30:1;27;20:12;5:2;314:52:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;314:52:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;601:65;;8:9:-1;5:2;;;30:1;27;20:12;5:2;601:65:13;;;;;;510:43;;8:9:-1;5:2;;;30:1;27;20:12;5:2;510:43:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;372:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;372:40:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;372:40:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1265:602;1512:23;1538:53;1557:2;1561:5;1568:4;1574:9;1585:5;1538:18;:53::i;:::-;1512:79;;1610:10;:27;1621:15;1610:27;;;;;;;;;;;;;;;;;;;;;;;;;;;1609:28;1601:37;;;;;;;;1648:35;1658:15;1675:1;1678;1681;1648:9;:35::i;:::-;1776:4;1746:10;:27;1757:15;1746:27;;;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;1798:7;;;;;;;;;;;:33;;;1832:2;1836:5;1843:4;1849:9;1798:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;1798:61:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1798:61:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1798:61:13;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1798:61:13;;;;;;;;;;;;;;;;1790:70;;;;;;;;1265:602;;;;;;;;;:::o;2796:311::-;2999:7;3044:4;3039:10;;3056:1;3051:7;;3060:4;3066:2;3070:5;3077:4;3083:9;3094:5;3029:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;;;3029:71:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3022:78;;2796:311;;;;;;;:::o;262:28:5:-;;;;;;;;;;;;;:::o;626:208:4:-;359:7:5;;;;;;;;;;;337:30;;:10;:30;;;329:39;;;;;;;;791:1:4;776:11;:16;;;;768:25;;;;;;;;816:11;803:10;;:24;;;;;;;;;;;;;;;;;;626:208;:::o;314:52:13:-;;;;;;;;;;;;;;;;;;;;:::o;601:65::-;647:12;:10;:12::i;:::-;601:65::o;510:43::-;;;;;;;;;;;;;;;;;;;;;;:::o;372:40::-;;;;;;;;;;;;;;;;;;;;:::o;1873:645::-;2050:17;2090:20;2120:9;2139:15;2078:1;2050:30;;2170:7;;;;;;;;;;;2157:34;;;:36;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2157:36:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2157:36:13;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2157:36:13;;;;;;;;;;;;;;;;2139:54;;2254:1;2250:5;;2245:267;2261:9;2257:13;;:1;:13;2245:267;;;2306:44;2316:15;2333:1;2335;2333:4;;;;;;;;;;;;;;;;;;2339:1;2341;2339:4;;;;;;;;;;;;;;;;;;2345:1;2347;2345:4;;;;;;;;;;;;;;;;;;2306:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2306:44:13;;;;;;;;2291:59;;2385:7;;;;;;;;;;;2372:29;;;2402:12;2372:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2372:43:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2372:43:13;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2372:43:13;;;;;;;;;;;;;;;;2364:52;;;;;;;;2453:9;2438:24;;:12;:24;;;2430:33;;;;;;;;2489:12;2477:24;;2272:3;;;;;;;2245:267;;;1873:645;;;;;;;;:::o;392:268:5:-;606:1;594:7;;;;;;;;;;;586:21;;;578:30;;;;;;;;642:10;618:7;;:35;;;;;;;;;;;;;;;;;;392:268::o", - "source": "pragma solidity 0.4.23;\nimport \"../Module.sol\";\nimport \"../OwnerManager.sol\";\n\n\n/// @title Gnosis Safe State Module - A module that allows interaction with statechannels.\n/// @author Stefan George - \n/// @author Richard Meissner - \ncontract StateChannelModule is Module {\n\n string public constant NAME = \"State Channel Module\";\n string public constant VERSION = \"0.0.1\";\n\n // isExecuted mapping allows to check if a transaction (by hash) was already executed.\n mapping (bytes32 => bool) public isExecuted;\n\n /// @dev Setup function sets manager\n function setup()\n public\n {\n setManager();\n }\n\n /// @dev Allows to execute a Safe transaction confirmed by required number of owners.\n /// @param to Destination address of Safe transaction.\n /// @param value Ether value of Safe transaction.\n /// @param data Data payload of Safe transaction.\n /// @param operation Operation type of Safe transaction.\n /// @param nonce Nonce used for this Safe transaction.\n /// @param v Array of signature V values sorted by owner addresses.\n /// @param r Array of signature R values sorted by owner addresses.\n /// @param s Array of signature S values sorted by owner addresses.\n function execTransaction(\n address to, \n uint256 value, \n bytes data, \n Enum.Operation operation, \n uint256 nonce,\n uint8[] v, \n bytes32[] r, \n bytes32[] s\n )\n public\n {\n bytes32 transactionHash = getTransactionHash(to, value, data, operation, nonce);\n require(!isExecuted[transactionHash]);\n checkHash(transactionHash, v, r, s);\n // Mark as executed and execute transaction.\n isExecuted[transactionHash] = true;\n require(manager.execTransactionFromModule(to, value, data, operation));\n }\n\n function checkHash(bytes32 transactionHash, uint8[] v, bytes32[] r, bytes32[] s)\n internal\n view\n {\n // There cannot be an owner with address 0.\n address lastOwner = address(0);\n address currentOwner;\n uint256 i;\n uint8 threshold = OwnerManager(manager).getThreshold();\n // Validate threshold is reached.\n for (i = 0; i < threshold; i++) {\n currentOwner = ecrecover(transactionHash, v[i], r[i], s[i]);\n require(OwnerManager(manager).isOwner(currentOwner));\n require(currentOwner > lastOwner);\n lastOwner = currentOwner;\n }\n }\n\n /// @dev Returns hash to be signed by owners.\n /// @param to Destination address.\n /// @param value Ether value.\n /// @param data Data payload.\n /// @param operation Operation type.\n /// @param nonce Transaction nonce.\n /// @return Transaction hash.\n function getTransactionHash(\n address to, \n uint256 value, \n bytes data, \n Enum.Operation operation, \n uint256 nonce\n )\n public\n view\n returns (bytes32)\n {\n return keccak256(byte(0x19), byte(0), this, to, value, data, operation, nonce);\n }\n}\n", + "bytecode": "0x608060405234801561001057600080fd5b50610ec6806100206000396000f30060806040526004361061008e576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806319604647146100935780632b50004114610206578063481c6a75146102cc5780637de7edef14610323578063a3f4df7e14610366578063ba0bba40146103f6578063e52cb36a1461040d578063ffa1ad7414610456575b600080fd5b34801561009f57600080fd5b50610204600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190803590602001909291908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192905050506104e6565b005b34801561021257600080fd5b506102ae600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919080359060200190929190505050610705565b60405180826000191660001916815260200191505060405180910390f35b3480156102d857600080fd5b506102e161098d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561032f57600080fd5b50610364600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506109b3565b005b34801561037257600080fd5b5061037b610a78565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103bb5780820151818401526020810190506103a0565b50505050905090810190601f1680156103e85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561040257600080fd5b5061040b610ab1565b005b34801561041957600080fd5b5061043c6004803603810190808035600019169060200190929190505050610abb565b604051808215151515815260200191505060405180910390f35b34801561046257600080fd5b5061046b610adb565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104ab578082015181840152602081019050610490565b50505050905090810190601f1680156104d85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60006104f58989898989610705565b905060026000826000191660001916815260200190815260200160002060009054906101000a900460ff1615151561052c57600080fd5b61053881858585610b14565b600160026000836000191660001916815260200190815260200160002060006101000a81548160ff021916908315150217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a78a8a8a8a6040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018060200183600281111561062557fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b8381101561066557808201518184015260208101905061064a565b50505050905090810190601f1680156106925780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b1580156106b457600080fd5b505af11580156106c8573d6000803e3d6000fd5b505050506040513d60208110156106de57600080fd5b810190808051906020019092919050505015156106fa57600080fd5b505050505050505050565b600060197f01000000000000000000000000000000000000000000000000000000000000000260007f01000000000000000000000000000000000000000000000000000000000000000230888888888860405160200180897effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101887effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140185815260200184805190602001908083835b6020831015156108a95780518252602082019150602081019050602083039250610884565b6001836020036101000a0380198251168184511680821785525050505050509050018360028111156108d757fe5b60ff167f0100000000000000000000000000000000000000000000000000000000000000028152600101828152602001985050505050505050506040516020818303038152906040526040518082805190602001908083835b6020831015156109555780518252602082019150602081019050602083039250610930565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020905095945050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610a0f57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515610a3557600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6040805190810160405280601481526020017f5374617465204368616e6e656c204d6f64756c6500000000000000000000000081525081565b610ab9610e10565b565b60026020528060005260406000206000915054906101000a900460ff1681565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b60008060008060009350600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e75235b86040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015610ba457600080fd5b505af1158015610bb8573d6000803e3d6000fd5b505050506040513d6020811015610bce57600080fd5b81019080805190602001909291905050509050600091505b8060ff16821015610e06576001888884815181101515610c0257fe5b906020019060200201518885815181101515610c1a57fe5b906020019060200201518886815181101515610c3257fe5b90602001906020020151604051600081526020016040526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000865af1158015610cad573d6000803e3d6000fd5b505050602060405103519250600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f54bf6e846040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015610d7657600080fd5b505af1158015610d8a573d6000803e3d6000fd5b505050506040513d6020811015610da057600080fd5b81019080805190602001909291905050501515610dbc57600080fd5b8373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16111515610df657600080fd5b8293508180600101925050610be6565b5050505050505050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610e5757600080fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505600a165627a7a72305820453c6630df1510723e7c76ad0ed06d384408c3c25066f1e25e55db38ef5842e90029", + "deployedBytecode": "0x60806040526004361061008e576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806319604647146100935780632b50004114610206578063481c6a75146102cc5780637de7edef14610323578063a3f4df7e14610366578063ba0bba40146103f6578063e52cb36a1461040d578063ffa1ad7414610456575b600080fd5b34801561009f57600080fd5b50610204600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190803590602001909291908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192905050506104e6565b005b34801561021257600080fd5b506102ae600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919080359060200190929190505050610705565b60405180826000191660001916815260200191505060405180910390f35b3480156102d857600080fd5b506102e161098d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561032f57600080fd5b50610364600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506109b3565b005b34801561037257600080fd5b5061037b610a78565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103bb5780820151818401526020810190506103a0565b50505050905090810190601f1680156103e85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561040257600080fd5b5061040b610ab1565b005b34801561041957600080fd5b5061043c6004803603810190808035600019169060200190929190505050610abb565b604051808215151515815260200191505060405180910390f35b34801561046257600080fd5b5061046b610adb565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104ab578082015181840152602081019050610490565b50505050905090810190601f1680156104d85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60006104f58989898989610705565b905060026000826000191660001916815260200190815260200160002060009054906101000a900460ff1615151561052c57600080fd5b61053881858585610b14565b600160026000836000191660001916815260200190815260200160002060006101000a81548160ff021916908315150217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a78a8a8a8a6040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018060200183600281111561062557fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b8381101561066557808201518184015260208101905061064a565b50505050905090810190601f1680156106925780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b1580156106b457600080fd5b505af11580156106c8573d6000803e3d6000fd5b505050506040513d60208110156106de57600080fd5b810190808051906020019092919050505015156106fa57600080fd5b505050505050505050565b600060197f01000000000000000000000000000000000000000000000000000000000000000260007f01000000000000000000000000000000000000000000000000000000000000000230888888888860405160200180897effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101887effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140185815260200184805190602001908083835b6020831015156108a95780518252602082019150602081019050602083039250610884565b6001836020036101000a0380198251168184511680821785525050505050509050018360028111156108d757fe5b60ff167f0100000000000000000000000000000000000000000000000000000000000000028152600101828152602001985050505050505050506040516020818303038152906040526040518082805190602001908083835b6020831015156109555780518252602082019150602081019050602083039250610930565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020905095945050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610a0f57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515610a3557600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6040805190810160405280601481526020017f5374617465204368616e6e656c204d6f64756c6500000000000000000000000081525081565b610ab9610e10565b565b60026020528060005260406000206000915054906101000a900460ff1681565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b60008060008060009350600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e75235b86040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015610ba457600080fd5b505af1158015610bb8573d6000803e3d6000fd5b505050506040513d6020811015610bce57600080fd5b81019080805190602001909291905050509050600091505b8060ff16821015610e06576001888884815181101515610c0257fe5b906020019060200201518885815181101515610c1a57fe5b906020019060200201518886815181101515610c3257fe5b90602001906020020151604051600081526020016040526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000865af1158015610cad573d6000803e3d6000fd5b505050602060405103519250600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f54bf6e846040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015610d7657600080fd5b505af1158015610d8a573d6000803e3d6000fd5b505050506040513d6020811015610da057600080fd5b81019080805190602001909291905050501515610dbc57600080fd5b8373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16111515610df657600080fd5b8293508180600101925050610be6565b5050505050505050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610e5757600080fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505600a165627a7a72305820453c6630df1510723e7c76ad0ed06d384408c3c25066f1e25e55db38ef5842e90029", + "sourceMap": "269:2858:19:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;269:2858:19;;;;;;;", + "deployedSourceMap": "269:2858:19:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1265:602;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1265:602:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2796:329;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2796:329:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;262:28:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;262:28:7;;;;;;;;;;;;;;;;;;;;;;;;;;;626:208:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;626:208:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;314:52:19;;8:9:-1;5:2;;;30:1;27;20:12;5:2;314:52:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;314:52:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;601:65;;8:9:-1;5:2;;;30:1;27;20:12;5:2;601:65:19;;;;;;510:43;;8:9:-1;5:2;;;30:1;27;20:12;5:2;510:43:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;372:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;372:40:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;372:40:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1265:602;1512:23;1538:53;1557:2;1561:5;1568:4;1574:9;1585:5;1538:18;:53::i;:::-;1512:79;;1610:10;:27;1621:15;1610:27;;;;;;;;;;;;;;;;;;;;;;;;;;;1609:28;1601:37;;;;;;;;1648:35;1658:15;1675:1;1678;1681;1648:9;:35::i;:::-;1776:4;1746:10;:27;1757:15;1746:27;;;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;1798:7;;;;;;;;;;;:33;;;1832:2;1836:5;1843:4;1849:9;1798:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;1798:61:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1798:61:19;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1798:61:19;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1798:61:19;;;;;;;;;;;;;;;;1790:70;;;;;;;;1265:602;;;;;;;;;:::o;2796:329::-;2999:7;3061:4;3056:10;;3073:1;3068:7;;3077:4;3083:2;3087:5;3094:4;3100:9;3111:5;3039:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;;;3039:78:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3039:78:19;;;3029:89;;;;;;;;;;;;;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;;;3029:89:19;;;;;;;;;;;;;;;;3022:96;;2796:329;;;;;;;:::o;262:28:7:-;;;;;;;;;;;;;:::o;626:208:5:-;359:7:7;;;;;;;;;;;337:30;;:10;:30;;;329:39;;;;;;;;791:1:5;776:11;:16;;;;768:25;;;;;;;;816:11;803:10;;:24;;;;;;;;;;;;;;;;;;626:208;:::o;314:52:19:-;;;;;;;;;;;;;;;;;;;;:::o;601:65::-;647:12;:10;:12::i;:::-;601:65::o;510:43::-;;;;;;;;;;;;;;;;;;;;;;:::o;372:40::-;;;;;;;;;;;;;;;;;;;;:::o;1873:645::-;2050:17;2090:20;2120:9;2139:15;2078:1;2050:30;;2170:7;;;;;;;;;;;2157:34;;;:36;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2157:36:19;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2157:36:19;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2157:36:19;;;;;;;;;;;;;;;;2139:54;;2254:1;2250:5;;2245:267;2261:9;2257:13;;:1;:13;2245:267;;;2306:44;2316:15;2333:1;2335;2333:4;;;;;;;;;;;;;;;;;;2339:1;2341;2339:4;;;;;;;;;;;;;;;;;;2345:1;2347;2345:4;;;;;;;;;;;;;;;;;;2306:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2306:44:19;;;;;;;;2291:59;;2385:7;;;;;;;;;;;2372:29;;;2402:12;2372:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2372:43:19;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2372:43:19;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2372:43:19;;;;;;;;;;;;;;;;2364:52;;;;;;;;2453:9;2438:24;;:12;:24;;;2430:33;;;;;;;;2489:12;2477:24;;2272:3;;;;;;;2245:267;;;1873:645;;;;;;;;:::o;392:268:7:-;606:1;594:7;;;;;;;;;;;586:21;;;578:30;;;;;;;;642:10;618:7;;:35;;;;;;;;;;;;;;;;;;392:268::o", + "source": "pragma solidity 0.4.24;\nimport \"../Module.sol\";\nimport \"../OwnerManager.sol\";\n\n\n/// @title Gnosis Safe State Module - A module that allows interaction with statechannels.\n/// @author Stefan George - \n/// @author Richard Meissner - \ncontract StateChannelModule is Module {\n\n string public constant NAME = \"State Channel Module\";\n string public constant VERSION = \"0.0.1\";\n\n // isExecuted mapping allows to check if a transaction (by hash) was already executed.\n mapping (bytes32 => bool) public isExecuted;\n\n /// @dev Setup function sets manager\n function setup()\n public\n {\n setManager();\n }\n\n /// @dev Allows to execute a Safe transaction confirmed by required number of owners.\n /// @param to Destination address of Safe transaction.\n /// @param value Ether value of Safe transaction.\n /// @param data Data payload of Safe transaction.\n /// @param operation Operation type of Safe transaction.\n /// @param nonce Nonce used for this Safe transaction.\n /// @param v Array of signature V values sorted by owner addresses.\n /// @param r Array of signature R values sorted by owner addresses.\n /// @param s Array of signature S values sorted by owner addresses.\n function execTransaction(\n address to, \n uint256 value, \n bytes data, \n Enum.Operation operation, \n uint256 nonce,\n uint8[] v, \n bytes32[] r, \n bytes32[] s\n )\n public\n {\n bytes32 transactionHash = getTransactionHash(to, value, data, operation, nonce);\n require(!isExecuted[transactionHash]);\n checkHash(transactionHash, v, r, s);\n // Mark as executed and execute transaction.\n isExecuted[transactionHash] = true;\n require(manager.execTransactionFromModule(to, value, data, operation));\n }\n\n function checkHash(bytes32 transactionHash, uint8[] v, bytes32[] r, bytes32[] s)\n internal\n view\n {\n // There cannot be an owner with address 0.\n address lastOwner = address(0);\n address currentOwner;\n uint256 i;\n uint8 threshold = OwnerManager(manager).getThreshold();\n // Validate threshold is reached.\n for (i = 0; i < threshold; i++) {\n currentOwner = ecrecover(transactionHash, v[i], r[i], s[i]);\n require(OwnerManager(manager).isOwner(currentOwner));\n require(currentOwner > lastOwner);\n lastOwner = currentOwner;\n }\n }\n\n /// @dev Returns hash to be signed by owners.\n /// @param to Destination address.\n /// @param value Ether value.\n /// @param data Data payload.\n /// @param operation Operation type.\n /// @param nonce Transaction nonce.\n /// @return Transaction hash.\n function getTransactionHash(\n address to, \n uint256 value, \n bytes data, \n Enum.Operation operation, \n uint256 nonce\n )\n public\n view\n returns (bytes32)\n {\n return keccak256(abi.encodePacked(byte(0x19), byte(0), this, to, value, data, operation, nonce));\n }\n}\n", "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/modules/StateChannelModule.sol", "ast": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/modules/StateChannelModule.sol", "exportedSymbols": { "StateChannelModule": [ - 2234 + 2436 ] }, - "id": 2235, + "id": 2437, "nodeType": "SourceUnit", "nodes": [ { - "id": 2037, + "id": 2236, "literals": [ "solidity", "0.4", - ".23" + ".24" ], "nodeType": "PragmaDirective", - "src": "0:23:13" + "src": "0:23:19" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Module.sol", "file": "../Module.sol", - "id": 2038, + "id": 2237, "nodeType": "ImportDirective", - "scope": 2235, - "sourceUnit": 622, - "src": "24:23:13", + "scope": 2437, + "sourceUnit": 751, + "src": "24:23:19", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/OwnerManager.sol", "file": "../OwnerManager.sol", - "id": 2039, + "id": 2238, "nodeType": "ImportDirective", - "scope": 2235, - "sourceUnit": 1344, - "src": "48:29:13", + "scope": 2437, + "sourceUnit": 1473, + "src": "48:29:19", "symbolAliases": [], "unitAlias": "" }, @@ -217,46 +217,46 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 2040, + "id": 2239, "name": "Module", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 621, - "src": "300:6:13", + "referencedDeclaration": 750, + "src": "300:6:19", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$621", + "typeIdentifier": "t_contract$_Module_$750", "typeString": "contract Module" } }, - "id": 2041, + "id": 2240, "nodeType": "InheritanceSpecifier", - "src": "300:6:13" + "src": "300:6:19" } ], "contractDependencies": [ - 580, - 621, - 1359 + 652, + 750, + 1619 ], "contractKind": "contract", "documentation": "@title Gnosis Safe State Module - A module that allows interaction with statechannels.\n @author Stefan George - \n @author Richard Meissner - ", "fullyImplemented": true, - "id": 2234, + "id": 2436, "linearizedBaseContracts": [ - 2234, - 621, - 580, - 1359 + 2436, + 750, + 652, + 1619 ], "name": "StateChannelModule", "nodeType": "ContractDefinition", "nodes": [ { "constant": true, - "id": 2044, + "id": 2243, "name": "NAME", "nodeType": "VariableDeclaration", - "scope": 2234, - "src": "314:52:13", + "scope": 2436, + "src": "314:52:19", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -264,10 +264,10 @@ "typeString": "string" }, "typeName": { - "id": 2042, + "id": 2241, "name": "string", "nodeType": "ElementaryTypeName", - "src": "314:6:13", + "src": "314:6:19", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -276,14 +276,14 @@ "value": { "argumentTypes": null, "hexValue": "5374617465204368616e6e656c204d6f64756c65", - "id": 2043, + "id": 2242, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "344:22:13", + "src": "344:22:19", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_e66fa361bdba11103aaf2321b03707a79b393abf1f410f3f609398777fd3a713", @@ -295,11 +295,11 @@ }, { "constant": true, - "id": 2047, + "id": 2246, "name": "VERSION", "nodeType": "VariableDeclaration", - "scope": 2234, - "src": "372:40:13", + "scope": 2436, + "src": "372:40:19", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -307,10 +307,10 @@ "typeString": "string" }, "typeName": { - "id": 2045, + "id": 2244, "name": "string", "nodeType": "ElementaryTypeName", - "src": "372:6:13", + "src": "372:6:19", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -319,14 +319,14 @@ "value": { "argumentTypes": null, "hexValue": "302e302e31", - "id": 2046, + "id": 2245, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "405:7:13", + "src": "405:7:19", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_ae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc199163811885", @@ -338,11 +338,11 @@ }, { "constant": false, - "id": 2051, + "id": 2250, "name": "isExecuted", "nodeType": "VariableDeclaration", - "scope": 2234, - "src": "510:43:13", + "scope": 2436, + "src": "510:43:19", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -350,28 +350,28 @@ "typeString": "mapping(bytes32 => bool)" }, "typeName": { - "id": 2050, + "id": 2249, "keyType": { - "id": 2048, + "id": 2247, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "519:7:13", + "src": "519:7:19", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "Mapping", - "src": "510:25:13", + "src": "510:25:19", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" }, "valueType": { - "id": 2049, + "id": 2248, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "530:4:13", + "src": "530:4:19", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -383,9 +383,9 @@ }, { "body": { - "id": 2057, + "id": 2256, "nodeType": "Block", - "src": "637:29:13", + "src": "637:29:19", "statements": [ { "expression": { @@ -393,18 +393,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 2054, + "id": 2253, "name": "setManager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 620, - "src": "647:10:13", + "referencedDeclaration": 749, + "src": "647:10:19", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()" } }, - "id": 2055, + "id": 2254, "isConstant": false, "isLValue": false, "isPure": false, @@ -412,20 +412,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "647:12:13", + "src": "647:12:19", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2056, + "id": 2255, "nodeType": "ExpressionStatement", - "src": "647:12:13" + "src": "647:12:19" } ] }, "documentation": "@dev Setup function sets manager", - "id": 2058, + "id": 2257, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -433,42 +433,42 @@ "name": "setup", "nodeType": "FunctionDefinition", "parameters": { - "id": 2052, + "id": 2251, "nodeType": "ParameterList", "parameters": [], - "src": "615:2:13" + "src": "615:2:19" }, "payable": false, "returnParameters": { - "id": 2053, + "id": 2252, "nodeType": "ParameterList", "parameters": [], - "src": "637:0:13" + "src": "637:0:19" }, - "scope": 2234, - "src": "601:65:13", + "scope": 2436, + "src": "601:65:19", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 2120, + "id": 2319, "nodeType": "Block", - "src": "1502:365:13", + "src": "1502:365:19", "statements": [ { "assignments": [ - 2081 + 2280 ], "declarations": [ { "constant": false, - "id": 2081, + "id": 2280, "name": "transactionHash", "nodeType": "VariableDeclaration", - "scope": 2121, - "src": "1512:23:13", + "scope": 2320, + "src": "1512:23:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -476,10 +476,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 2080, + "id": 2279, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "1512:7:13", + "src": "1512:7:19", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -489,18 +489,18 @@ "visibility": "internal" } ], - "id": 2089, + "id": 2288, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 2083, + "id": 2282, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2060, - "src": "1557:2:13", + "referencedDeclaration": 2259, + "src": "1557:2:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -508,12 +508,12 @@ }, { "argumentTypes": null, - "id": 2084, + "id": 2283, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2062, - "src": "1561:5:13", + "referencedDeclaration": 2261, + "src": "1561:5:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -521,12 +521,12 @@ }, { "argumentTypes": null, - "id": 2085, + "id": 2284, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2064, - "src": "1568:4:13", + "referencedDeclaration": 2263, + "src": "1568:4:19", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -534,25 +534,25 @@ }, { "argumentTypes": null, - "id": 2086, + "id": 2285, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2066, - "src": "1574:9:13", + "referencedDeclaration": 2265, + "src": "1574:9:19", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, { "argumentTypes": null, - "id": 2087, + "id": 2286, "name": "nonce", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2068, - "src": "1585:5:13", + "referencedDeclaration": 2267, + "src": "1585:5:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -574,7 +574,7 @@ "typeString": "bytes memory" }, { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, { @@ -582,18 +582,18 @@ "typeString": "uint256" } ], - "id": 2082, + "id": 2281, "name": "getTransactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2233, - "src": "1538:18:13", + "referencedDeclaration": 2435, + "src": "1538:18:19", "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$5_$_t_uint256_$returns$_t_bytes32_$", + "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$_t_uint256_$returns$_t_bytes32_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256) view returns (bytes32)" } }, - "id": 2088, + "id": 2287, "isConstant": false, "isLValue": false, "isPure": false, @@ -601,14 +601,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1538:53:13", + "src": "1538:53:19", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "VariableDeclarationStatement", - "src": "1512:79:13" + "src": "1512:79:19" }, { "expression": { @@ -616,7 +616,7 @@ "arguments": [ { "argumentTypes": null, - "id": 2094, + "id": 2293, "isConstant": false, "isLValue": false, "isPure": false, @@ -624,31 +624,31 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "1609:28:13", + "src": "1609:28:19", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2091, + "id": 2290, "name": "isExecuted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2051, - "src": "1610:10:13", + "referencedDeclaration": 2250, + "src": "1610:10:19", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" } }, - "id": 2093, + "id": 2292, "indexExpression": { "argumentTypes": null, - "id": 2092, + "id": 2291, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2081, - "src": "1621:15:13", + "referencedDeclaration": 2280, + "src": "1621:15:19", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -659,7 +659,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1610:27:13", + "src": "1610:27:19", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -678,21 +678,21 @@ "typeString": "bool" } ], - "id": 2090, + "id": 2289, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "1601:7:13", + "referencedDeclaration": 2601, + "src": "1601:7:19", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 2095, + "id": 2294, "isConstant": false, "isLValue": false, "isPure": false, @@ -700,15 +700,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1601:37:13", + "src": "1601:37:19", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2096, + "id": 2295, "nodeType": "ExpressionStatement", - "src": "1601:37:13" + "src": "1601:37:19" }, { "expression": { @@ -716,12 +716,12 @@ "arguments": [ { "argumentTypes": null, - "id": 2098, + "id": 2297, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2081, - "src": "1658:15:13", + "referencedDeclaration": 2280, + "src": "1658:15:19", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -729,12 +729,12 @@ }, { "argumentTypes": null, - "id": 2099, + "id": 2298, "name": "v", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2071, - "src": "1675:1:13", + "referencedDeclaration": 2270, + "src": "1675:1:19", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr", "typeString": "uint8[] memory" @@ -742,12 +742,12 @@ }, { "argumentTypes": null, - "id": 2100, + "id": 2299, "name": "r", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2074, - "src": "1678:1:13", + "referencedDeclaration": 2273, + "src": "1678:1:19", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", "typeString": "bytes32[] memory" @@ -755,12 +755,12 @@ }, { "argumentTypes": null, - "id": 2101, + "id": 2300, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2077, - "src": "1681:1:13", + "referencedDeclaration": 2276, + "src": "1681:1:19", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", "typeString": "bytes32[] memory" @@ -786,18 +786,18 @@ "typeString": "bytes32[] memory" } ], - "id": 2097, + "id": 2296, "name": "checkHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2202, - "src": "1648:9:13", + "referencedDeclaration": 2401, + "src": "1648:9:19", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_array$_t_uint8_$dyn_memory_ptr_$_t_array$_t_bytes32_$dyn_memory_ptr_$_t_array$_t_bytes32_$dyn_memory_ptr_$returns$__$", "typeString": "function (bytes32,uint8[] memory,bytes32[] memory,bytes32[] memory) view" } }, - "id": 2102, + "id": 2301, "isConstant": false, "isLValue": false, "isPure": false, @@ -805,20 +805,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1648:35:13", + "src": "1648:35:19", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2103, + "id": 2302, "nodeType": "ExpressionStatement", - "src": "1648:35:13" + "src": "1648:35:19" }, { "expression": { "argumentTypes": null, - "id": 2108, + "id": 2307, "isConstant": false, "isLValue": false, "isPure": false, @@ -827,26 +827,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2104, + "id": 2303, "name": "isExecuted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2051, - "src": "1746:10:13", + "referencedDeclaration": 2250, + "src": "1746:10:19", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" } }, - "id": 2106, + "id": 2305, "indexExpression": { "argumentTypes": null, - "id": 2105, + "id": 2304, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2081, - "src": "1757:15:13", + "referencedDeclaration": 2280, + "src": "1757:15:19", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -857,7 +857,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1746:27:13", + "src": "1746:27:19", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -868,14 +868,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 2107, + "id": 2306, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "1776:4:13", + "src": "1776:4:19", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -883,15 +883,15 @@ }, "value": "true" }, - "src": "1746:34:13", + "src": "1746:34:19", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 2109, + "id": 2308, "nodeType": "ExpressionStatement", - "src": "1746:34:13" + "src": "1746:34:19" }, { "expression": { @@ -902,12 +902,12 @@ "arguments": [ { "argumentTypes": null, - "id": 2113, + "id": 2312, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2060, - "src": "1832:2:13", + "referencedDeclaration": 2259, + "src": "1832:2:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -915,12 +915,12 @@ }, { "argumentTypes": null, - "id": 2114, + "id": 2313, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2062, - "src": "1836:5:13", + "referencedDeclaration": 2261, + "src": "1836:5:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -928,12 +928,12 @@ }, { "argumentTypes": null, - "id": 2115, + "id": 2314, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2064, - "src": "1843:4:13", + "referencedDeclaration": 2263, + "src": "1843:4:19", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -941,14 +941,14 @@ }, { "argumentTypes": null, - "id": 2116, + "id": 2315, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2066, - "src": "1849:9:13", + "referencedDeclaration": 2265, + "src": "1849:9:19", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } } @@ -968,38 +968,38 @@ "typeString": "bytes memory" }, { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } ], "expression": { "argumentTypes": null, - "id": 2111, + "id": 2310, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 588, - "src": "1798:7:13", + "referencedDeclaration": 717, + "src": "1798:7:19", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$971", + "typeIdentifier": "t_contract$_ModuleManager_$1100", "typeString": "contract ModuleManager" } }, - "id": 2112, + "id": 2311, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "execTransactionFromModule", "nodeType": "MemberAccess", - "referencedDeclaration": 798, - "src": "1798:33:13", + "referencedDeclaration": 927, + "src": "1798:33:19", "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$5_$returns$_t_bool_$", + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$returns$_t_bool_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation) external returns (bool)" } }, - "id": 2117, + "id": 2316, "isConstant": false, "isLValue": false, "isPure": false, @@ -1007,7 +1007,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1798:61:13", + "src": "1798:61:19", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1021,21 +1021,21 @@ "typeString": "bool" } ], - "id": 2110, + "id": 2309, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "1790:7:13", + "referencedDeclaration": 2601, + "src": "1790:7:19", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 2118, + "id": 2317, "isConstant": false, "isLValue": false, "isPure": false, @@ -1043,20 +1043,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1790:70:13", + "src": "1790:70:19", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2119, + "id": 2318, "nodeType": "ExpressionStatement", - "src": "1790:70:13" + "src": "1790:70:19" } ] }, "documentation": "@dev Allows to execute a Safe transaction confirmed by required number of owners.\n @param to Destination address of Safe transaction.\n @param value Ether value of Safe transaction.\n @param data Data payload of Safe transaction.\n @param operation Operation type of Safe transaction.\n @param nonce Nonce used for this Safe transaction.\n @param v Array of signature V values sorted by owner addresses.\n @param r Array of signature R values sorted by owner addresses.\n @param s Array of signature S values sorted by owner addresses.", - "id": 2121, + "id": 2320, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -1064,16 +1064,16 @@ "name": "execTransaction", "nodeType": "FunctionDefinition", "parameters": { - "id": 2078, + "id": 2277, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2060, + "id": 2259, "name": "to", "nodeType": "VariableDeclaration", - "scope": 2121, - "src": "1299:10:13", + "scope": 2320, + "src": "1299:10:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1081,10 +1081,10 @@ "typeString": "address" }, "typeName": { - "id": 2059, + "id": 2258, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1299:7:13", + "src": "1299:7:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1095,11 +1095,11 @@ }, { "constant": false, - "id": 2062, + "id": 2261, "name": "value", "nodeType": "VariableDeclaration", - "scope": 2121, - "src": "1320:13:13", + "scope": 2320, + "src": "1320:13:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1107,10 +1107,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2061, + "id": 2260, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1320:7:13", + "src": "1320:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1121,11 +1121,11 @@ }, { "constant": false, - "id": 2064, + "id": 2263, "name": "data", "nodeType": "VariableDeclaration", - "scope": 2121, - "src": "1344:10:13", + "scope": 2320, + "src": "1344:10:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1133,10 +1133,10 @@ "typeString": "bytes" }, "typeName": { - "id": 2063, + "id": 2262, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "1344:5:13", + "src": "1344:5:19", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -1147,26 +1147,26 @@ }, { "constant": false, - "id": 2066, + "id": 2265, "name": "operation", "nodeType": "VariableDeclaration", - "scope": 2121, - "src": "1365:24:13", + "scope": 2320, + "src": "1365:24:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, "typeName": { "contractScope": null, - "id": 2065, + "id": 2264, "name": "Enum.Operation", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 5, - "src": "1365:14:13", + "referencedDeclaration": 29, + "src": "1365:14:19", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, @@ -1175,11 +1175,11 @@ }, { "constant": false, - "id": 2068, + "id": 2267, "name": "nonce", "nodeType": "VariableDeclaration", - "scope": 2121, - "src": "1400:13:13", + "scope": 2320, + "src": "1400:13:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1187,10 +1187,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2067, + "id": 2266, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1400:7:13", + "src": "1400:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1201,11 +1201,11 @@ }, { "constant": false, - "id": 2071, + "id": 2270, "name": "v", "nodeType": "VariableDeclaration", - "scope": 2121, - "src": "1423:9:13", + "scope": 2320, + "src": "1423:9:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1214,19 +1214,19 @@ }, "typeName": { "baseType": { - "id": 2069, + "id": 2268, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "1423:5:13", + "src": "1423:5:19", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "id": 2070, + "id": 2269, "length": null, "nodeType": "ArrayTypeName", - "src": "1423:7:13", + "src": "1423:7:19", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint8_$dyn_storage_ptr", "typeString": "uint8[]" @@ -1237,11 +1237,11 @@ }, { "constant": false, - "id": 2074, + "id": 2273, "name": "r", "nodeType": "VariableDeclaration", - "scope": 2121, - "src": "1443:11:13", + "scope": 2320, + "src": "1443:11:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1250,19 +1250,19 @@ }, "typeName": { "baseType": { - "id": 2072, + "id": 2271, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "1443:7:13", + "src": "1443:7:19", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "id": 2073, + "id": 2272, "length": null, "nodeType": "ArrayTypeName", - "src": "1443:9:13", + "src": "1443:9:19", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", "typeString": "bytes32[]" @@ -1273,11 +1273,11 @@ }, { "constant": false, - "id": 2077, + "id": 2276, "name": "s", "nodeType": "VariableDeclaration", - "scope": 2121, - "src": "1465:11:13", + "scope": 2320, + "src": "1465:11:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1286,19 +1286,19 @@ }, "typeName": { "baseType": { - "id": 2075, + "id": 2274, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "1465:7:13", + "src": "1465:7:19", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "id": 2076, + "id": 2275, "length": null, "nodeType": "ArrayTypeName", - "src": "1465:9:13", + "src": "1465:9:19", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", "typeString": "bytes32[]" @@ -1308,39 +1308,39 @@ "visibility": "internal" } ], - "src": "1289:193:13" + "src": "1289:193:19" }, "payable": false, "returnParameters": { - "id": 2079, + "id": 2278, "nodeType": "ParameterList", "parameters": [], - "src": "1502:0:13" + "src": "1502:0:19" }, - "scope": 2234, - "src": "1265:602:13", + "scope": 2436, + "src": "1265:602:19", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 2201, + "id": 2400, "nodeType": "Block", - "src": "1988:530:13", + "src": "1988:530:19", "statements": [ { "assignments": [ - 2136 + 2335 ], "declarations": [ { "constant": false, - "id": 2136, + "id": 2335, "name": "lastOwner", "nodeType": "VariableDeclaration", - "scope": 2202, - "src": "2050:17:13", + "scope": 2401, + "src": "2050:17:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1348,10 +1348,10 @@ "typeString": "address" }, "typeName": { - "id": 2135, + "id": 2334, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2050:7:13", + "src": "2050:7:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1361,21 +1361,21 @@ "visibility": "internal" } ], - "id": 2140, + "id": 2339, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", - "id": 2138, + "id": 2337, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2078:1:13", + "src": "2078:1:19", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -1391,20 +1391,20 @@ "typeString": "int_const 0" } ], - "id": 2137, + "id": 2336, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2070:7:13", + "src": "2070:7:19", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 2139, + "id": 2338, "isConstant": false, "isLValue": false, "isPure": true, @@ -1412,25 +1412,25 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2070:10:13", + "src": "2070:10:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", - "src": "2050:30:13" + "src": "2050:30:19" }, { "assignments": [], "declarations": [ { "constant": false, - "id": 2142, + "id": 2341, "name": "currentOwner", "nodeType": "VariableDeclaration", - "scope": 2202, - "src": "2090:20:13", + "scope": 2401, + "src": "2090:20:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1438,10 +1438,10 @@ "typeString": "address" }, "typeName": { - "id": 2141, + "id": 2340, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2090:7:13", + "src": "2090:7:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1451,21 +1451,21 @@ "visibility": "internal" } ], - "id": 2143, + "id": 2342, "initialValue": null, "nodeType": "VariableDeclarationStatement", - "src": "2090:20:13" + "src": "2090:20:19" }, { "assignments": [], "declarations": [ { "constant": false, - "id": 2145, + "id": 2344, "name": "i", "nodeType": "VariableDeclaration", - "scope": 2202, - "src": "2120:9:13", + "scope": 2401, + "src": "2120:9:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1473,10 +1473,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2144, + "id": 2343, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2120:7:13", + "src": "2120:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1486,23 +1486,23 @@ "visibility": "internal" } ], - "id": 2146, + "id": 2345, "initialValue": null, "nodeType": "VariableDeclarationStatement", - "src": "2120:9:13" + "src": "2120:9:19" }, { "assignments": [ - 2148 + 2347 ], "declarations": [ { "constant": false, - "id": 2148, + "id": 2347, "name": "threshold", "nodeType": "VariableDeclaration", - "scope": 2202, - "src": "2139:15:13", + "scope": 2401, + "src": "2139:15:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1510,10 +1510,10 @@ "typeString": "uint8" }, "typeName": { - "id": 2147, + "id": 2346, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "2139:5:13", + "src": "2139:5:19", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -1523,7 +1523,7 @@ "visibility": "internal" } ], - "id": 2154, + "id": 2353, "initialValue": { "argumentTypes": null, "arguments": [], @@ -1534,14 +1534,14 @@ "arguments": [ { "argumentTypes": null, - "id": 2150, + "id": 2349, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 588, - "src": "2170:7:13", + "referencedDeclaration": 717, + "src": "2170:7:19", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$971", + "typeIdentifier": "t_contract$_ModuleManager_$1100", "typeString": "contract ModuleManager" } } @@ -1549,22 +1549,22 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_ModuleManager_$971", + "typeIdentifier": "t_contract$_ModuleManager_$1100", "typeString": "contract ModuleManager" } ], - "id": 2149, + "id": 2348, "name": "OwnerManager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1343, - "src": "2157:12:13", + "referencedDeclaration": 1472, + "src": "2157:12:19", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_OwnerManager_$1343_$", + "typeIdentifier": "t_type$_t_contract$_OwnerManager_$1472_$", "typeString": "type(contract OwnerManager)" } }, - "id": 2151, + "id": 2350, "isConstant": false, "isLValue": false, "isPure": false, @@ -1572,27 +1572,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2157:21:13", + "src": "2157:21:19", "typeDescriptions": { - "typeIdentifier": "t_contract$_OwnerManager_$1343", + "typeIdentifier": "t_contract$_OwnerManager_$1472", "typeString": "contract OwnerManager" } }, - "id": 2152, + "id": 2351, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "getThreshold", "nodeType": "MemberAccess", - "referencedDeclaration": 1279, - "src": "2157:34:13", + "referencedDeclaration": 1408, + "src": "2157:34:19", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$", "typeString": "function () view external returns (uint8)" } }, - "id": 2153, + "id": 2352, "isConstant": false, "isLValue": false, "isPure": false, @@ -1600,37 +1600,37 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2157:36:13", + "src": "2157:36:19", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "VariableDeclarationStatement", - "src": "2139:54:13" + "src": "2139:54:19" }, { "body": { - "id": 2199, + "id": 2398, "nodeType": "Block", - "src": "2277:235:13", + "src": "2277:235:19", "statements": [ { "expression": { "argumentTypes": null, - "id": 2178, + "id": 2377, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 2165, + "id": 2364, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2142, - "src": "2291:12:13", + "referencedDeclaration": 2341, + "src": "2291:12:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1643,12 +1643,12 @@ "arguments": [ { "argumentTypes": null, - "id": 2167, + "id": 2366, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2123, - "src": "2316:15:13", + "referencedDeclaration": 2322, + "src": "2316:15:19", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1658,26 +1658,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2168, + "id": 2367, "name": "v", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2126, - "src": "2333:1:13", + "referencedDeclaration": 2325, + "src": "2333:1:19", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr", "typeString": "uint8[] memory" } }, - "id": 2170, + "id": 2369, "indexExpression": { "argumentTypes": null, - "id": 2169, + "id": 2368, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2145, - "src": "2335:1:13", + "referencedDeclaration": 2344, + "src": "2335:1:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1688,7 +1688,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2333:4:13", + "src": "2333:4:19", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -1698,26 +1698,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2171, + "id": 2370, "name": "r", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2129, - "src": "2339:1:13", + "referencedDeclaration": 2328, + "src": "2339:1:19", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", "typeString": "bytes32[] memory" } }, - "id": 2173, + "id": 2372, "indexExpression": { "argumentTypes": null, - "id": 2172, + "id": 2371, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2145, - "src": "2341:1:13", + "referencedDeclaration": 2344, + "src": "2341:1:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1728,7 +1728,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2339:4:13", + "src": "2339:4:19", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1738,26 +1738,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2174, + "id": 2373, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2132, - "src": "2345:1:13", + "referencedDeclaration": 2331, + "src": "2345:1:19", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", "typeString": "bytes32[] memory" } }, - "id": 2176, + "id": 2375, "indexExpression": { "argumentTypes": null, - "id": 2175, + "id": 2374, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2145, - "src": "2347:1:13", + "referencedDeclaration": 2344, + "src": "2347:1:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1768,7 +1768,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2345:4:13", + "src": "2345:4:19", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1794,18 +1794,18 @@ "typeString": "bytes32" } ], - "id": 2166, + "id": 2365, "name": "ecrecover", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2388, - "src": "2306:9:13", + "referencedDeclaration": 2590, + "src": "2306:9:19", "typeDescriptions": { "typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$", "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)" } }, - "id": 2177, + "id": 2376, "isConstant": false, "isLValue": false, "isPure": false, @@ -1813,21 +1813,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2306:44:13", + "src": "2306:44:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2291:59:13", + "src": "2291:59:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 2179, + "id": 2378, "nodeType": "ExpressionStatement", - "src": "2291:59:13" + "src": "2291:59:19" }, { "expression": { @@ -1838,12 +1838,12 @@ "arguments": [ { "argumentTypes": null, - "id": 2185, + "id": 2384, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2142, - "src": "2402:12:13", + "referencedDeclaration": 2341, + "src": "2402:12:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1862,14 +1862,14 @@ "arguments": [ { "argumentTypes": null, - "id": 2182, + "id": 2381, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 588, - "src": "2385:7:13", + "referencedDeclaration": 717, + "src": "2385:7:19", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$971", + "typeIdentifier": "t_contract$_ModuleManager_$1100", "typeString": "contract ModuleManager" } } @@ -1877,22 +1877,22 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_ModuleManager_$971", + "typeIdentifier": "t_contract$_ModuleManager_$1100", "typeString": "contract ModuleManager" } ], - "id": 2181, + "id": 2380, "name": "OwnerManager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1343, - "src": "2372:12:13", + "referencedDeclaration": 1472, + "src": "2372:12:19", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_OwnerManager_$1343_$", + "typeIdentifier": "t_type$_t_contract$_OwnerManager_$1472_$", "typeString": "type(contract OwnerManager)" } }, - "id": 2183, + "id": 2382, "isConstant": false, "isLValue": false, "isPure": false, @@ -1900,27 +1900,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2372:21:13", + "src": "2372:21:19", "typeDescriptions": { - "typeIdentifier": "t_contract$_OwnerManager_$1343", + "typeIdentifier": "t_contract$_OwnerManager_$1472", "typeString": "contract OwnerManager" } }, - "id": 2184, + "id": 2383, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "isOwner", "nodeType": "MemberAccess", - "referencedDeclaration": 1293, - "src": "2372:29:13", + "referencedDeclaration": 1422, + "src": "2372:29:19", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view external returns (bool)" } }, - "id": 2186, + "id": 2385, "isConstant": false, "isLValue": false, "isPure": false, @@ -1928,7 +1928,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2372:43:13", + "src": "2372:43:19", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1942,21 +1942,21 @@ "typeString": "bool" } ], - "id": 2180, + "id": 2379, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "2364:7:13", + "referencedDeclaration": 2601, + "src": "2364:7:19", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 2187, + "id": 2386, "isConstant": false, "isLValue": false, "isPure": false, @@ -1964,15 +1964,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2364:52:13", + "src": "2364:52:19", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2188, + "id": 2387, "nodeType": "ExpressionStatement", - "src": "2364:52:13" + "src": "2364:52:19" }, { "expression": { @@ -1984,19 +1984,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 2192, + "id": 2391, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 2190, + "id": 2389, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2142, - "src": "2438:12:13", + "referencedDeclaration": 2341, + "src": "2438:12:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2006,18 +2006,18 @@ "operator": ">", "rightExpression": { "argumentTypes": null, - "id": 2191, + "id": 2390, "name": "lastOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2136, - "src": "2453:9:13", + "referencedDeclaration": 2335, + "src": "2453:9:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2438:24:13", + "src": "2438:24:19", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2031,21 +2031,21 @@ "typeString": "bool" } ], - "id": 2189, + "id": 2388, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "2430:7:13", + "referencedDeclaration": 2601, + "src": "2430:7:19", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 2193, + "id": 2392, "isConstant": false, "isLValue": false, "isPure": false, @@ -2053,32 +2053,32 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2430:33:13", + "src": "2430:33:19", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2194, + "id": 2393, "nodeType": "ExpressionStatement", - "src": "2430:33:13" + "src": "2430:33:19" }, { "expression": { "argumentTypes": null, - "id": 2197, + "id": 2396, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 2195, + "id": 2394, "name": "lastOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2136, - "src": "2477:9:13", + "referencedDeclaration": 2335, + "src": "2477:9:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2088,26 +2088,26 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 2196, + "id": 2395, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2142, - "src": "2489:12:13", + "referencedDeclaration": 2341, + "src": "2489:12:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2477:24:13", + "src": "2477:24:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 2198, + "id": 2397, "nodeType": "ExpressionStatement", - "src": "2477:24:13" + "src": "2477:24:19" } ] }, @@ -2117,19 +2117,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 2161, + "id": 2360, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 2159, + "id": 2358, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2145, - "src": "2257:1:13", + "referencedDeclaration": 2344, + "src": "2257:1:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2139,40 +2139,40 @@ "operator": "<", "rightExpression": { "argumentTypes": null, - "id": 2160, + "id": 2359, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2148, - "src": "2261:9:13", + "referencedDeclaration": 2347, + "src": "2261:9:19", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "src": "2257:13:13", + "src": "2257:13:19", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 2200, + "id": 2399, "initializationExpression": { "expression": { "argumentTypes": null, - "id": 2157, + "id": 2356, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 2155, + "id": 2354, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2145, - "src": "2250:1:13", + "referencedDeclaration": 2344, + "src": "2250:1:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2183,14 +2183,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "30", - "id": 2156, + "id": 2355, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2254:1:13", + "src": "2254:1:19", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -2198,20 +2198,20 @@ }, "value": "0" }, - "src": "2250:5:13", + "src": "2250:5:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 2158, + "id": 2357, "nodeType": "ExpressionStatement", - "src": "2250:5:13" + "src": "2250:5:19" }, "loopExpression": { "expression": { "argumentTypes": null, - "id": 2163, + "id": 2362, "isConstant": false, "isLValue": false, "isPure": false, @@ -2219,15 +2219,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "2272:3:13", + "src": "2272:3:19", "subExpression": { "argumentTypes": null, - "id": 2162, + "id": 2361, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2145, - "src": "2272:1:13", + "referencedDeclaration": 2344, + "src": "2272:1:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2238,17 +2238,17 @@ "typeString": "uint256" } }, - "id": 2164, + "id": 2363, "nodeType": "ExpressionStatement", - "src": "2272:3:13" + "src": "2272:3:19" }, "nodeType": "ForStatement", - "src": "2245:267:13" + "src": "2245:267:19" } ] }, "documentation": null, - "id": 2202, + "id": 2401, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -2256,16 +2256,16 @@ "name": "checkHash", "nodeType": "FunctionDefinition", "parameters": { - "id": 2133, + "id": 2332, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2123, + "id": 2322, "name": "transactionHash", "nodeType": "VariableDeclaration", - "scope": 2202, - "src": "1892:23:13", + "scope": 2401, + "src": "1892:23:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2273,10 +2273,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 2122, + "id": 2321, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "1892:7:13", + "src": "1892:7:19", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -2287,11 +2287,11 @@ }, { "constant": false, - "id": 2126, + "id": 2325, "name": "v", "nodeType": "VariableDeclaration", - "scope": 2202, - "src": "1917:9:13", + "scope": 2401, + "src": "1917:9:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2300,19 +2300,19 @@ }, "typeName": { "baseType": { - "id": 2124, + "id": 2323, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "1917:5:13", + "src": "1917:5:19", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "id": 2125, + "id": 2324, "length": null, "nodeType": "ArrayTypeName", - "src": "1917:7:13", + "src": "1917:7:19", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint8_$dyn_storage_ptr", "typeString": "uint8[]" @@ -2323,11 +2323,11 @@ }, { "constant": false, - "id": 2129, + "id": 2328, "name": "r", "nodeType": "VariableDeclaration", - "scope": 2202, - "src": "1928:11:13", + "scope": 2401, + "src": "1928:11:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2336,19 +2336,19 @@ }, "typeName": { "baseType": { - "id": 2127, + "id": 2326, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "1928:7:13", + "src": "1928:7:19", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "id": 2128, + "id": 2327, "length": null, "nodeType": "ArrayTypeName", - "src": "1928:9:13", + "src": "1928:9:19", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", "typeString": "bytes32[]" @@ -2359,11 +2359,11 @@ }, { "constant": false, - "id": 2132, + "id": 2331, "name": "s", "nodeType": "VariableDeclaration", - "scope": 2202, - "src": "1941:11:13", + "scope": 2401, + "src": "1941:11:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2372,19 +2372,19 @@ }, "typeName": { "baseType": { - "id": 2130, + "id": 2329, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "1941:7:13", + "src": "1941:7:19", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "id": 2131, + "id": 2330, "length": null, "nodeType": "ArrayTypeName", - "src": "1941:9:13", + "src": "1941:9:19", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", "typeString": "bytes32[]" @@ -2394,26 +2394,26 @@ "visibility": "internal" } ], - "src": "1891:62:13" + "src": "1891:62:19" }, "payable": false, "returnParameters": { - "id": 2134, + "id": 2333, "nodeType": "ParameterList", "parameters": [], - "src": "1988:0:13" + "src": "1988:0:19" }, - "scope": 2234, - "src": "1873:645:13", + "scope": 2436, + "src": "1873:645:19", "stateMutability": "view", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 2232, + "id": 2434, "nodeType": "Block", - "src": "3012:95:13", + "src": "3012:113:19", "statements": [ { "expression": { @@ -2424,239 +2424,291 @@ "arguments": [ { "argumentTypes": null, - "hexValue": "30783139", - "id": 2219, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30783139", + "id": 2420, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3061:4:19", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_25_by_1", + "typeString": "int_const 25" + }, + "value": "0x19" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_25_by_1", + "typeString": "int_const 25" + } + ], + "id": 2419, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3056:4:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes1_$", + "typeString": "type(bytes1)" + }, + "typeName": "byte" + }, + "id": 2421, "isConstant": false, "isLValue": false, "isPure": true, - "kind": "number", + "kind": "typeConversion", "lValueRequested": false, - "nodeType": "Literal", - "src": "3044:4:13", - "subdenomination": null, + "names": [], + "nodeType": "FunctionCall", + "src": "3056:10:19", "typeDescriptions": { - "typeIdentifier": "t_rational_25_by_1", - "typeString": "int_const 25" - }, - "value": "0x19" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_25_by_1", - "typeString": "int_const 25" + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" } - ], - "id": 2218, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "3039:4:13", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes1_$", - "typeString": "type(bytes1)" }, - "typeName": "byte" - }, - "id": 2220, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3039:10:13", - "typeDescriptions": { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - } - }, - { - "argumentTypes": null, - "arguments": [ { "argumentTypes": null, - "hexValue": "30", - "id": 2222, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 2423, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3073:1:19", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 2422, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3068:4:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes1_$", + "typeString": "type(bytes1)" + }, + "typeName": "byte" + }, + "id": 2424, "isConstant": false, "isLValue": false, "isPure": true, - "kind": "number", + "kind": "typeConversion", "lValueRequested": false, - "nodeType": "Literal", - "src": "3056:1:13", - "subdenomination": null, + "names": [], + "nodeType": "FunctionCall", + "src": "3068:7:19", "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + { + "argumentTypes": null, + "id": 2425, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2649, + "src": "3077:4:19", + "typeDescriptions": { + "typeIdentifier": "t_contract$_StateChannelModule_$2436", + "typeString": "contract StateChannelModule" + } + }, + { + "argumentTypes": null, + "id": 2426, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2403, + "src": "3083:2:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2427, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2405, + "src": "3087:5:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 2428, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2407, + "src": "3094:4:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 2429, + "name": "operation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2409, + "src": "3100:9:19", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + } + }, + { + "argumentTypes": null, + "id": 2430, + "name": "nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2411, + "src": "3111:5:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } } ], "expression": { "argumentTypes": [ { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + }, + { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + }, + { + "typeIdentifier": "t_contract$_StateChannelModule_$2436", + "typeString": "contract StateChannelModule" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } ], - "id": 2221, + "expression": { + "argumentTypes": null, + "id": 2417, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2585, + "src": "3039:3:19", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 2418, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "3051:4:13", + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3039:16:19", "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes1_$", - "typeString": "type(bytes1)" - }, - "typeName": "byte" + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } }, - "id": 2223, + "id": 2431, "isConstant": false, "isLValue": false, - "isPure": true, - "kind": "typeConversion", + "isPure": false, + "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3051:7:13", - "typeDescriptions": { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - } - }, - { - "argumentTypes": null, - "id": 2224, - "name": "this", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2435, - "src": "3060:4:13", - "typeDescriptions": { - "typeIdentifier": "t_contract$_StateChannelModule_$2234", - "typeString": "contract StateChannelModule" - } - }, - { - "argumentTypes": null, - "id": 2225, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2204, - "src": "3066:2:13", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 2226, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2206, - "src": "3070:5:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 2227, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2208, - "src": "3077:4:13", + "src": "3039:78:19", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } - }, - { - "argumentTypes": null, - "id": 2228, - "name": "operation", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2210, - "src": "3083:9:13", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", - "typeString": "enum Enum.Operation" - } - }, - { - "argumentTypes": null, - "id": 2229, - "name": "nonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2212, - "src": "3094:5:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } } ], "expression": { "argumentTypes": [ - { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - }, - { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - }, - { - "typeIdentifier": "t_contract$_StateChannelModule_$2234", - "typeString": "contract StateChannelModule" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_enum$_Operation_$5", - "typeString": "enum Enum.Operation" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" } ], - "id": 2217, + "id": 2416, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2390, - "src": "3029:9:13", + "referencedDeclaration": 2592, + "src": "3029:9:19", "typeDescriptions": { "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", "typeString": "function () pure returns (bytes32)" } }, - "id": 2230, + "id": 2432, "isConstant": false, "isLValue": false, "isPure": false, @@ -2664,21 +2716,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3029:71:13", + "src": "3029:89:19", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "functionReturnParameters": 2216, - "id": 2231, + "functionReturnParameters": 2415, + "id": 2433, "nodeType": "Return", - "src": "3022:78:13" + "src": "3022:96:19" } ] }, "documentation": "@dev Returns hash to be signed by owners.\n @param to Destination address.\n @param value Ether value.\n @param data Data payload.\n @param operation Operation type.\n @param nonce Transaction nonce.\n @return Transaction hash.", - "id": 2233, + "id": 2435, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -2686,16 +2738,16 @@ "name": "getTransactionHash", "nodeType": "FunctionDefinition", "parameters": { - "id": 2213, + "id": 2412, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2204, + "id": 2403, "name": "to", "nodeType": "VariableDeclaration", - "scope": 2233, - "src": "2833:10:13", + "scope": 2435, + "src": "2833:10:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2703,10 +2755,10 @@ "typeString": "address" }, "typeName": { - "id": 2203, + "id": 2402, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2833:7:13", + "src": "2833:7:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2717,11 +2769,11 @@ }, { "constant": false, - "id": 2206, + "id": 2405, "name": "value", "nodeType": "VariableDeclaration", - "scope": 2233, - "src": "2854:13:13", + "scope": 2435, + "src": "2854:13:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2729,10 +2781,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2205, + "id": 2404, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2854:7:13", + "src": "2854:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2743,11 +2795,11 @@ }, { "constant": false, - "id": 2208, + "id": 2407, "name": "data", "nodeType": "VariableDeclaration", - "scope": 2233, - "src": "2878:10:13", + "scope": 2435, + "src": "2878:10:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2755,10 +2807,10 @@ "typeString": "bytes" }, "typeName": { - "id": 2207, + "id": 2406, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "2878:5:13", + "src": "2878:5:19", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -2769,26 +2821,26 @@ }, { "constant": false, - "id": 2210, + "id": 2409, "name": "operation", "nodeType": "VariableDeclaration", - "scope": 2233, - "src": "2899:24:13", + "scope": 2435, + "src": "2899:24:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, "typeName": { "contractScope": null, - "id": 2209, + "id": 2408, "name": "Enum.Operation", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 5, - "src": "2899:14:13", + "referencedDeclaration": 29, + "src": "2899:14:19", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, @@ -2797,11 +2849,11 @@ }, { "constant": false, - "id": 2212, + "id": 2411, "name": "nonce", "nodeType": "VariableDeclaration", - "scope": 2233, - "src": "2934:13:13", + "scope": 2435, + "src": "2934:13:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2809,10 +2861,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2211, + "id": 2410, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2934:7:13", + "src": "2934:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2822,20 +2874,20 @@ "visibility": "internal" } ], - "src": "2823:130:13" + "src": "2823:130:19" }, "payable": false, "returnParameters": { - "id": 2216, + "id": 2415, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2215, + "id": 2414, "name": "", "nodeType": "VariableDeclaration", - "scope": 2233, - "src": "2999:7:13", + "scope": 2435, + "src": "2999:7:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2843,10 +2895,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 2214, + "id": 2413, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "2999:7:13", + "src": "2999:7:19", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -2856,60 +2908,60 @@ "visibility": "internal" } ], - "src": "2998:9:13" + "src": "2998:9:19" }, - "scope": 2234, - "src": "2796:311:13", + "scope": 2436, + "src": "2796:329:19", "stateMutability": "view", "superFunction": null, "visibility": "public" } ], - "scope": 2235, - "src": "269:2840:13" + "scope": 2437, + "src": "269:2858:19" } ], - "src": "0:3110:13" + "src": "0:3128:19" }, "legacyAST": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/modules/StateChannelModule.sol", "exportedSymbols": { "StateChannelModule": [ - 2234 + 2436 ] }, - "id": 2235, + "id": 2437, "nodeType": "SourceUnit", "nodes": [ { - "id": 2037, + "id": 2236, "literals": [ "solidity", "0.4", - ".23" + ".24" ], "nodeType": "PragmaDirective", - "src": "0:23:13" + "src": "0:23:19" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Module.sol", "file": "../Module.sol", - "id": 2038, + "id": 2237, "nodeType": "ImportDirective", - "scope": 2235, - "sourceUnit": 622, - "src": "24:23:13", + "scope": 2437, + "sourceUnit": 751, + "src": "24:23:19", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/OwnerManager.sol", "file": "../OwnerManager.sol", - "id": 2039, + "id": 2238, "nodeType": "ImportDirective", - "scope": 2235, - "sourceUnit": 1344, - "src": "48:29:13", + "scope": 2437, + "sourceUnit": 1473, + "src": "48:29:19", "symbolAliases": [], "unitAlias": "" }, @@ -2919,46 +2971,46 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 2040, + "id": 2239, "name": "Module", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 621, - "src": "300:6:13", + "referencedDeclaration": 750, + "src": "300:6:19", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$621", + "typeIdentifier": "t_contract$_Module_$750", "typeString": "contract Module" } }, - "id": 2041, + "id": 2240, "nodeType": "InheritanceSpecifier", - "src": "300:6:13" + "src": "300:6:19" } ], "contractDependencies": [ - 580, - 621, - 1359 + 652, + 750, + 1619 ], "contractKind": "contract", "documentation": "@title Gnosis Safe State Module - A module that allows interaction with statechannels.\n @author Stefan George - \n @author Richard Meissner - ", "fullyImplemented": true, - "id": 2234, + "id": 2436, "linearizedBaseContracts": [ - 2234, - 621, - 580, - 1359 + 2436, + 750, + 652, + 1619 ], "name": "StateChannelModule", "nodeType": "ContractDefinition", "nodes": [ { "constant": true, - "id": 2044, + "id": 2243, "name": "NAME", "nodeType": "VariableDeclaration", - "scope": 2234, - "src": "314:52:13", + "scope": 2436, + "src": "314:52:19", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2966,10 +3018,10 @@ "typeString": "string" }, "typeName": { - "id": 2042, + "id": 2241, "name": "string", "nodeType": "ElementaryTypeName", - "src": "314:6:13", + "src": "314:6:19", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -2978,14 +3030,14 @@ "value": { "argumentTypes": null, "hexValue": "5374617465204368616e6e656c204d6f64756c65", - "id": 2043, + "id": 2242, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "344:22:13", + "src": "344:22:19", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_e66fa361bdba11103aaf2321b03707a79b393abf1f410f3f609398777fd3a713", @@ -2997,11 +3049,11 @@ }, { "constant": true, - "id": 2047, + "id": 2246, "name": "VERSION", "nodeType": "VariableDeclaration", - "scope": 2234, - "src": "372:40:13", + "scope": 2436, + "src": "372:40:19", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -3009,10 +3061,10 @@ "typeString": "string" }, "typeName": { - "id": 2045, + "id": 2244, "name": "string", "nodeType": "ElementaryTypeName", - "src": "372:6:13", + "src": "372:6:19", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -3021,14 +3073,14 @@ "value": { "argumentTypes": null, "hexValue": "302e302e31", - "id": 2046, + "id": 2245, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "405:7:13", + "src": "405:7:19", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_ae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc199163811885", @@ -3040,11 +3092,11 @@ }, { "constant": false, - "id": 2051, + "id": 2250, "name": "isExecuted", "nodeType": "VariableDeclaration", - "scope": 2234, - "src": "510:43:13", + "scope": 2436, + "src": "510:43:19", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -3052,28 +3104,28 @@ "typeString": "mapping(bytes32 => bool)" }, "typeName": { - "id": 2050, + "id": 2249, "keyType": { - "id": 2048, + "id": 2247, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "519:7:13", + "src": "519:7:19", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "Mapping", - "src": "510:25:13", + "src": "510:25:19", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" }, "valueType": { - "id": 2049, + "id": 2248, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "530:4:13", + "src": "530:4:19", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3085,9 +3137,9 @@ }, { "body": { - "id": 2057, + "id": 2256, "nodeType": "Block", - "src": "637:29:13", + "src": "637:29:19", "statements": [ { "expression": { @@ -3095,18 +3147,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 2054, + "id": 2253, "name": "setManager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 620, - "src": "647:10:13", + "referencedDeclaration": 749, + "src": "647:10:19", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()" } }, - "id": 2055, + "id": 2254, "isConstant": false, "isLValue": false, "isPure": false, @@ -3114,20 +3166,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "647:12:13", + "src": "647:12:19", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2056, + "id": 2255, "nodeType": "ExpressionStatement", - "src": "647:12:13" + "src": "647:12:19" } ] }, "documentation": "@dev Setup function sets manager", - "id": 2058, + "id": 2257, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -3135,42 +3187,42 @@ "name": "setup", "nodeType": "FunctionDefinition", "parameters": { - "id": 2052, + "id": 2251, "nodeType": "ParameterList", "parameters": [], - "src": "615:2:13" + "src": "615:2:19" }, "payable": false, "returnParameters": { - "id": 2053, + "id": 2252, "nodeType": "ParameterList", "parameters": [], - "src": "637:0:13" + "src": "637:0:19" }, - "scope": 2234, - "src": "601:65:13", + "scope": 2436, + "src": "601:65:19", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 2120, + "id": 2319, "nodeType": "Block", - "src": "1502:365:13", + "src": "1502:365:19", "statements": [ { "assignments": [ - 2081 + 2280 ], "declarations": [ { "constant": false, - "id": 2081, + "id": 2280, "name": "transactionHash", "nodeType": "VariableDeclaration", - "scope": 2121, - "src": "1512:23:13", + "scope": 2320, + "src": "1512:23:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3178,10 +3230,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 2080, + "id": 2279, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "1512:7:13", + "src": "1512:7:19", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -3191,18 +3243,18 @@ "visibility": "internal" } ], - "id": 2089, + "id": 2288, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 2083, + "id": 2282, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2060, - "src": "1557:2:13", + "referencedDeclaration": 2259, + "src": "1557:2:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3210,12 +3262,12 @@ }, { "argumentTypes": null, - "id": 2084, + "id": 2283, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2062, - "src": "1561:5:13", + "referencedDeclaration": 2261, + "src": "1561:5:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3223,12 +3275,12 @@ }, { "argumentTypes": null, - "id": 2085, + "id": 2284, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2064, - "src": "1568:4:13", + "referencedDeclaration": 2263, + "src": "1568:4:19", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -3236,25 +3288,25 @@ }, { "argumentTypes": null, - "id": 2086, + "id": 2285, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2066, - "src": "1574:9:13", + "referencedDeclaration": 2265, + "src": "1574:9:19", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, { "argumentTypes": null, - "id": 2087, + "id": 2286, "name": "nonce", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2068, - "src": "1585:5:13", + "referencedDeclaration": 2267, + "src": "1585:5:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3276,7 +3328,7 @@ "typeString": "bytes memory" }, { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, { @@ -3284,18 +3336,18 @@ "typeString": "uint256" } ], - "id": 2082, + "id": 2281, "name": "getTransactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2233, - "src": "1538:18:13", + "referencedDeclaration": 2435, + "src": "1538:18:19", "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$5_$_t_uint256_$returns$_t_bytes32_$", + "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$_t_uint256_$returns$_t_bytes32_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256) view returns (bytes32)" } }, - "id": 2088, + "id": 2287, "isConstant": false, "isLValue": false, "isPure": false, @@ -3303,14 +3355,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1538:53:13", + "src": "1538:53:19", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "VariableDeclarationStatement", - "src": "1512:79:13" + "src": "1512:79:19" }, { "expression": { @@ -3318,7 +3370,7 @@ "arguments": [ { "argumentTypes": null, - "id": 2094, + "id": 2293, "isConstant": false, "isLValue": false, "isPure": false, @@ -3326,31 +3378,31 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "1609:28:13", + "src": "1609:28:19", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2091, + "id": 2290, "name": "isExecuted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2051, - "src": "1610:10:13", + "referencedDeclaration": 2250, + "src": "1610:10:19", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" } }, - "id": 2093, + "id": 2292, "indexExpression": { "argumentTypes": null, - "id": 2092, + "id": 2291, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2081, - "src": "1621:15:13", + "referencedDeclaration": 2280, + "src": "1621:15:19", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -3361,7 +3413,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1610:27:13", + "src": "1610:27:19", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3380,21 +3432,21 @@ "typeString": "bool" } ], - "id": 2090, + "id": 2289, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "1601:7:13", + "referencedDeclaration": 2601, + "src": "1601:7:19", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 2095, + "id": 2294, "isConstant": false, "isLValue": false, "isPure": false, @@ -3402,15 +3454,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1601:37:13", + "src": "1601:37:19", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2096, + "id": 2295, "nodeType": "ExpressionStatement", - "src": "1601:37:13" + "src": "1601:37:19" }, { "expression": { @@ -3418,12 +3470,12 @@ "arguments": [ { "argumentTypes": null, - "id": 2098, + "id": 2297, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2081, - "src": "1658:15:13", + "referencedDeclaration": 2280, + "src": "1658:15:19", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -3431,12 +3483,12 @@ }, { "argumentTypes": null, - "id": 2099, + "id": 2298, "name": "v", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2071, - "src": "1675:1:13", + "referencedDeclaration": 2270, + "src": "1675:1:19", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr", "typeString": "uint8[] memory" @@ -3444,12 +3496,12 @@ }, { "argumentTypes": null, - "id": 2100, + "id": 2299, "name": "r", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2074, - "src": "1678:1:13", + "referencedDeclaration": 2273, + "src": "1678:1:19", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", "typeString": "bytes32[] memory" @@ -3457,12 +3509,12 @@ }, { "argumentTypes": null, - "id": 2101, + "id": 2300, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2077, - "src": "1681:1:13", + "referencedDeclaration": 2276, + "src": "1681:1:19", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", "typeString": "bytes32[] memory" @@ -3488,18 +3540,18 @@ "typeString": "bytes32[] memory" } ], - "id": 2097, + "id": 2296, "name": "checkHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2202, - "src": "1648:9:13", + "referencedDeclaration": 2401, + "src": "1648:9:19", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_array$_t_uint8_$dyn_memory_ptr_$_t_array$_t_bytes32_$dyn_memory_ptr_$_t_array$_t_bytes32_$dyn_memory_ptr_$returns$__$", "typeString": "function (bytes32,uint8[] memory,bytes32[] memory,bytes32[] memory) view" } }, - "id": 2102, + "id": 2301, "isConstant": false, "isLValue": false, "isPure": false, @@ -3507,20 +3559,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1648:35:13", + "src": "1648:35:19", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2103, + "id": 2302, "nodeType": "ExpressionStatement", - "src": "1648:35:13" + "src": "1648:35:19" }, { "expression": { "argumentTypes": null, - "id": 2108, + "id": 2307, "isConstant": false, "isLValue": false, "isPure": false, @@ -3529,26 +3581,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2104, + "id": 2303, "name": "isExecuted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2051, - "src": "1746:10:13", + "referencedDeclaration": 2250, + "src": "1746:10:19", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" } }, - "id": 2106, + "id": 2305, "indexExpression": { "argumentTypes": null, - "id": 2105, + "id": 2304, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2081, - "src": "1757:15:13", + "referencedDeclaration": 2280, + "src": "1757:15:19", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -3559,7 +3611,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1746:27:13", + "src": "1746:27:19", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3570,14 +3622,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 2107, + "id": 2306, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "1776:4:13", + "src": "1776:4:19", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -3585,15 +3637,15 @@ }, "value": "true" }, - "src": "1746:34:13", + "src": "1746:34:19", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 2109, + "id": 2308, "nodeType": "ExpressionStatement", - "src": "1746:34:13" + "src": "1746:34:19" }, { "expression": { @@ -3604,12 +3656,12 @@ "arguments": [ { "argumentTypes": null, - "id": 2113, + "id": 2312, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2060, - "src": "1832:2:13", + "referencedDeclaration": 2259, + "src": "1832:2:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3617,12 +3669,12 @@ }, { "argumentTypes": null, - "id": 2114, + "id": 2313, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2062, - "src": "1836:5:13", + "referencedDeclaration": 2261, + "src": "1836:5:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3630,12 +3682,12 @@ }, { "argumentTypes": null, - "id": 2115, + "id": 2314, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2064, - "src": "1843:4:13", + "referencedDeclaration": 2263, + "src": "1843:4:19", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -3643,14 +3695,14 @@ }, { "argumentTypes": null, - "id": 2116, + "id": 2315, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2066, - "src": "1849:9:13", + "referencedDeclaration": 2265, + "src": "1849:9:19", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } } @@ -3670,38 +3722,38 @@ "typeString": "bytes memory" }, { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } ], "expression": { "argumentTypes": null, - "id": 2111, + "id": 2310, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 588, - "src": "1798:7:13", + "referencedDeclaration": 717, + "src": "1798:7:19", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$971", + "typeIdentifier": "t_contract$_ModuleManager_$1100", "typeString": "contract ModuleManager" } }, - "id": 2112, + "id": 2311, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "execTransactionFromModule", "nodeType": "MemberAccess", - "referencedDeclaration": 798, - "src": "1798:33:13", + "referencedDeclaration": 927, + "src": "1798:33:19", "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$5_$returns$_t_bool_$", + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$returns$_t_bool_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation) external returns (bool)" } }, - "id": 2117, + "id": 2316, "isConstant": false, "isLValue": false, "isPure": false, @@ -3709,7 +3761,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1798:61:13", + "src": "1798:61:19", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3723,21 +3775,21 @@ "typeString": "bool" } ], - "id": 2110, + "id": 2309, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "1790:7:13", + "referencedDeclaration": 2601, + "src": "1790:7:19", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 2118, + "id": 2317, "isConstant": false, "isLValue": false, "isPure": false, @@ -3745,20 +3797,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1790:70:13", + "src": "1790:70:19", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2119, + "id": 2318, "nodeType": "ExpressionStatement", - "src": "1790:70:13" + "src": "1790:70:19" } ] }, "documentation": "@dev Allows to execute a Safe transaction confirmed by required number of owners.\n @param to Destination address of Safe transaction.\n @param value Ether value of Safe transaction.\n @param data Data payload of Safe transaction.\n @param operation Operation type of Safe transaction.\n @param nonce Nonce used for this Safe transaction.\n @param v Array of signature V values sorted by owner addresses.\n @param r Array of signature R values sorted by owner addresses.\n @param s Array of signature S values sorted by owner addresses.", - "id": 2121, + "id": 2320, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -3766,16 +3818,16 @@ "name": "execTransaction", "nodeType": "FunctionDefinition", "parameters": { - "id": 2078, + "id": 2277, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2060, + "id": 2259, "name": "to", "nodeType": "VariableDeclaration", - "scope": 2121, - "src": "1299:10:13", + "scope": 2320, + "src": "1299:10:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3783,10 +3835,10 @@ "typeString": "address" }, "typeName": { - "id": 2059, + "id": 2258, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1299:7:13", + "src": "1299:7:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3797,11 +3849,11 @@ }, { "constant": false, - "id": 2062, + "id": 2261, "name": "value", "nodeType": "VariableDeclaration", - "scope": 2121, - "src": "1320:13:13", + "scope": 2320, + "src": "1320:13:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3809,10 +3861,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2061, + "id": 2260, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1320:7:13", + "src": "1320:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3823,11 +3875,11 @@ }, { "constant": false, - "id": 2064, + "id": 2263, "name": "data", "nodeType": "VariableDeclaration", - "scope": 2121, - "src": "1344:10:13", + "scope": 2320, + "src": "1344:10:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3835,10 +3887,10 @@ "typeString": "bytes" }, "typeName": { - "id": 2063, + "id": 2262, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "1344:5:13", + "src": "1344:5:19", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -3849,26 +3901,26 @@ }, { "constant": false, - "id": 2066, + "id": 2265, "name": "operation", "nodeType": "VariableDeclaration", - "scope": 2121, - "src": "1365:24:13", + "scope": 2320, + "src": "1365:24:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, "typeName": { "contractScope": null, - "id": 2065, + "id": 2264, "name": "Enum.Operation", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 5, - "src": "1365:14:13", + "referencedDeclaration": 29, + "src": "1365:14:19", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, @@ -3877,11 +3929,11 @@ }, { "constant": false, - "id": 2068, + "id": 2267, "name": "nonce", "nodeType": "VariableDeclaration", - "scope": 2121, - "src": "1400:13:13", + "scope": 2320, + "src": "1400:13:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3889,10 +3941,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2067, + "id": 2266, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1400:7:13", + "src": "1400:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3903,11 +3955,11 @@ }, { "constant": false, - "id": 2071, + "id": 2270, "name": "v", "nodeType": "VariableDeclaration", - "scope": 2121, - "src": "1423:9:13", + "scope": 2320, + "src": "1423:9:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3916,19 +3968,19 @@ }, "typeName": { "baseType": { - "id": 2069, + "id": 2268, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "1423:5:13", + "src": "1423:5:19", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "id": 2070, + "id": 2269, "length": null, "nodeType": "ArrayTypeName", - "src": "1423:7:13", + "src": "1423:7:19", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint8_$dyn_storage_ptr", "typeString": "uint8[]" @@ -3939,11 +3991,11 @@ }, { "constant": false, - "id": 2074, + "id": 2273, "name": "r", "nodeType": "VariableDeclaration", - "scope": 2121, - "src": "1443:11:13", + "scope": 2320, + "src": "1443:11:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3952,19 +4004,19 @@ }, "typeName": { "baseType": { - "id": 2072, + "id": 2271, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "1443:7:13", + "src": "1443:7:19", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "id": 2073, + "id": 2272, "length": null, "nodeType": "ArrayTypeName", - "src": "1443:9:13", + "src": "1443:9:19", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", "typeString": "bytes32[]" @@ -3975,11 +4027,11 @@ }, { "constant": false, - "id": 2077, + "id": 2276, "name": "s", "nodeType": "VariableDeclaration", - "scope": 2121, - "src": "1465:11:13", + "scope": 2320, + "src": "1465:11:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3988,19 +4040,19 @@ }, "typeName": { "baseType": { - "id": 2075, + "id": 2274, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "1465:7:13", + "src": "1465:7:19", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "id": 2076, + "id": 2275, "length": null, "nodeType": "ArrayTypeName", - "src": "1465:9:13", + "src": "1465:9:19", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", "typeString": "bytes32[]" @@ -4010,39 +4062,39 @@ "visibility": "internal" } ], - "src": "1289:193:13" + "src": "1289:193:19" }, "payable": false, "returnParameters": { - "id": 2079, + "id": 2278, "nodeType": "ParameterList", "parameters": [], - "src": "1502:0:13" + "src": "1502:0:19" }, - "scope": 2234, - "src": "1265:602:13", + "scope": 2436, + "src": "1265:602:19", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 2201, + "id": 2400, "nodeType": "Block", - "src": "1988:530:13", + "src": "1988:530:19", "statements": [ { "assignments": [ - 2136 + 2335 ], "declarations": [ { "constant": false, - "id": 2136, + "id": 2335, "name": "lastOwner", "nodeType": "VariableDeclaration", - "scope": 2202, - "src": "2050:17:13", + "scope": 2401, + "src": "2050:17:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4050,10 +4102,10 @@ "typeString": "address" }, "typeName": { - "id": 2135, + "id": 2334, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2050:7:13", + "src": "2050:7:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4063,21 +4115,21 @@ "visibility": "internal" } ], - "id": 2140, + "id": 2339, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", - "id": 2138, + "id": 2337, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2078:1:13", + "src": "2078:1:19", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -4093,20 +4145,20 @@ "typeString": "int_const 0" } ], - "id": 2137, + "id": 2336, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2070:7:13", + "src": "2070:7:19", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 2139, + "id": 2338, "isConstant": false, "isLValue": false, "isPure": true, @@ -4114,25 +4166,25 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2070:10:13", + "src": "2070:10:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", - "src": "2050:30:13" + "src": "2050:30:19" }, { "assignments": [], "declarations": [ { "constant": false, - "id": 2142, + "id": 2341, "name": "currentOwner", "nodeType": "VariableDeclaration", - "scope": 2202, - "src": "2090:20:13", + "scope": 2401, + "src": "2090:20:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4140,10 +4192,10 @@ "typeString": "address" }, "typeName": { - "id": 2141, + "id": 2340, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2090:7:13", + "src": "2090:7:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4153,21 +4205,21 @@ "visibility": "internal" } ], - "id": 2143, + "id": 2342, "initialValue": null, "nodeType": "VariableDeclarationStatement", - "src": "2090:20:13" + "src": "2090:20:19" }, { "assignments": [], "declarations": [ { "constant": false, - "id": 2145, + "id": 2344, "name": "i", "nodeType": "VariableDeclaration", - "scope": 2202, - "src": "2120:9:13", + "scope": 2401, + "src": "2120:9:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4175,10 +4227,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2144, + "id": 2343, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2120:7:13", + "src": "2120:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4188,23 +4240,23 @@ "visibility": "internal" } ], - "id": 2146, + "id": 2345, "initialValue": null, "nodeType": "VariableDeclarationStatement", - "src": "2120:9:13" + "src": "2120:9:19" }, { "assignments": [ - 2148 + 2347 ], "declarations": [ { "constant": false, - "id": 2148, + "id": 2347, "name": "threshold", "nodeType": "VariableDeclaration", - "scope": 2202, - "src": "2139:15:13", + "scope": 2401, + "src": "2139:15:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4212,10 +4264,10 @@ "typeString": "uint8" }, "typeName": { - "id": 2147, + "id": 2346, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "2139:5:13", + "src": "2139:5:19", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -4225,7 +4277,7 @@ "visibility": "internal" } ], - "id": 2154, + "id": 2353, "initialValue": { "argumentTypes": null, "arguments": [], @@ -4236,14 +4288,14 @@ "arguments": [ { "argumentTypes": null, - "id": 2150, + "id": 2349, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 588, - "src": "2170:7:13", + "referencedDeclaration": 717, + "src": "2170:7:19", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$971", + "typeIdentifier": "t_contract$_ModuleManager_$1100", "typeString": "contract ModuleManager" } } @@ -4251,22 +4303,22 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_ModuleManager_$971", + "typeIdentifier": "t_contract$_ModuleManager_$1100", "typeString": "contract ModuleManager" } ], - "id": 2149, + "id": 2348, "name": "OwnerManager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1343, - "src": "2157:12:13", + "referencedDeclaration": 1472, + "src": "2157:12:19", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_OwnerManager_$1343_$", + "typeIdentifier": "t_type$_t_contract$_OwnerManager_$1472_$", "typeString": "type(contract OwnerManager)" } }, - "id": 2151, + "id": 2350, "isConstant": false, "isLValue": false, "isPure": false, @@ -4274,27 +4326,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2157:21:13", + "src": "2157:21:19", "typeDescriptions": { - "typeIdentifier": "t_contract$_OwnerManager_$1343", + "typeIdentifier": "t_contract$_OwnerManager_$1472", "typeString": "contract OwnerManager" } }, - "id": 2152, + "id": 2351, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "getThreshold", "nodeType": "MemberAccess", - "referencedDeclaration": 1279, - "src": "2157:34:13", + "referencedDeclaration": 1408, + "src": "2157:34:19", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$", "typeString": "function () view external returns (uint8)" } }, - "id": 2153, + "id": 2352, "isConstant": false, "isLValue": false, "isPure": false, @@ -4302,37 +4354,37 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2157:36:13", + "src": "2157:36:19", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "VariableDeclarationStatement", - "src": "2139:54:13" + "src": "2139:54:19" }, { "body": { - "id": 2199, + "id": 2398, "nodeType": "Block", - "src": "2277:235:13", + "src": "2277:235:19", "statements": [ { "expression": { "argumentTypes": null, - "id": 2178, + "id": 2377, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 2165, + "id": 2364, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2142, - "src": "2291:12:13", + "referencedDeclaration": 2341, + "src": "2291:12:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4345,12 +4397,12 @@ "arguments": [ { "argumentTypes": null, - "id": 2167, + "id": 2366, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2123, - "src": "2316:15:13", + "referencedDeclaration": 2322, + "src": "2316:15:19", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -4360,26 +4412,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2168, + "id": 2367, "name": "v", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2126, - "src": "2333:1:13", + "referencedDeclaration": 2325, + "src": "2333:1:19", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr", "typeString": "uint8[] memory" } }, - "id": 2170, + "id": 2369, "indexExpression": { "argumentTypes": null, - "id": 2169, + "id": 2368, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2145, - "src": "2335:1:13", + "referencedDeclaration": 2344, + "src": "2335:1:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4390,7 +4442,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2333:4:13", + "src": "2333:4:19", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -4400,26 +4452,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2171, + "id": 2370, "name": "r", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2129, - "src": "2339:1:13", + "referencedDeclaration": 2328, + "src": "2339:1:19", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", "typeString": "bytes32[] memory" } }, - "id": 2173, + "id": 2372, "indexExpression": { "argumentTypes": null, - "id": 2172, + "id": 2371, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2145, - "src": "2341:1:13", + "referencedDeclaration": 2344, + "src": "2341:1:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4430,7 +4482,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2339:4:13", + "src": "2339:4:19", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -4440,26 +4492,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2174, + "id": 2373, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2132, - "src": "2345:1:13", + "referencedDeclaration": 2331, + "src": "2345:1:19", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", "typeString": "bytes32[] memory" } }, - "id": 2176, + "id": 2375, "indexExpression": { "argumentTypes": null, - "id": 2175, + "id": 2374, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2145, - "src": "2347:1:13", + "referencedDeclaration": 2344, + "src": "2347:1:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4470,7 +4522,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2345:4:13", + "src": "2345:4:19", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -4496,18 +4548,18 @@ "typeString": "bytes32" } ], - "id": 2166, + "id": 2365, "name": "ecrecover", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2388, - "src": "2306:9:13", + "referencedDeclaration": 2590, + "src": "2306:9:19", "typeDescriptions": { "typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$", "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)" } }, - "id": 2177, + "id": 2376, "isConstant": false, "isLValue": false, "isPure": false, @@ -4515,21 +4567,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2306:44:13", + "src": "2306:44:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2291:59:13", + "src": "2291:59:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 2179, + "id": 2378, "nodeType": "ExpressionStatement", - "src": "2291:59:13" + "src": "2291:59:19" }, { "expression": { @@ -4540,12 +4592,12 @@ "arguments": [ { "argumentTypes": null, - "id": 2185, + "id": 2384, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2142, - "src": "2402:12:13", + "referencedDeclaration": 2341, + "src": "2402:12:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4564,14 +4616,14 @@ "arguments": [ { "argumentTypes": null, - "id": 2182, + "id": 2381, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 588, - "src": "2385:7:13", + "referencedDeclaration": 717, + "src": "2385:7:19", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$971", + "typeIdentifier": "t_contract$_ModuleManager_$1100", "typeString": "contract ModuleManager" } } @@ -4579,22 +4631,22 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_ModuleManager_$971", + "typeIdentifier": "t_contract$_ModuleManager_$1100", "typeString": "contract ModuleManager" } ], - "id": 2181, + "id": 2380, "name": "OwnerManager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1343, - "src": "2372:12:13", + "referencedDeclaration": 1472, + "src": "2372:12:19", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_OwnerManager_$1343_$", + "typeIdentifier": "t_type$_t_contract$_OwnerManager_$1472_$", "typeString": "type(contract OwnerManager)" } }, - "id": 2183, + "id": 2382, "isConstant": false, "isLValue": false, "isPure": false, @@ -4602,27 +4654,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2372:21:13", + "src": "2372:21:19", "typeDescriptions": { - "typeIdentifier": "t_contract$_OwnerManager_$1343", + "typeIdentifier": "t_contract$_OwnerManager_$1472", "typeString": "contract OwnerManager" } }, - "id": 2184, + "id": 2383, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "isOwner", "nodeType": "MemberAccess", - "referencedDeclaration": 1293, - "src": "2372:29:13", + "referencedDeclaration": 1422, + "src": "2372:29:19", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view external returns (bool)" } }, - "id": 2186, + "id": 2385, "isConstant": false, "isLValue": false, "isPure": false, @@ -4630,7 +4682,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2372:43:13", + "src": "2372:43:19", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4644,21 +4696,21 @@ "typeString": "bool" } ], - "id": 2180, + "id": 2379, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "2364:7:13", + "referencedDeclaration": 2601, + "src": "2364:7:19", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 2187, + "id": 2386, "isConstant": false, "isLValue": false, "isPure": false, @@ -4666,15 +4718,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2364:52:13", + "src": "2364:52:19", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2188, + "id": 2387, "nodeType": "ExpressionStatement", - "src": "2364:52:13" + "src": "2364:52:19" }, { "expression": { @@ -4686,19 +4738,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 2192, + "id": 2391, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 2190, + "id": 2389, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2142, - "src": "2438:12:13", + "referencedDeclaration": 2341, + "src": "2438:12:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4708,18 +4760,18 @@ "operator": ">", "rightExpression": { "argumentTypes": null, - "id": 2191, + "id": 2390, "name": "lastOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2136, - "src": "2453:9:13", + "referencedDeclaration": 2335, + "src": "2453:9:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2438:24:13", + "src": "2438:24:19", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4733,21 +4785,21 @@ "typeString": "bool" } ], - "id": 2189, + "id": 2388, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "2430:7:13", + "referencedDeclaration": 2601, + "src": "2430:7:19", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 2193, + "id": 2392, "isConstant": false, "isLValue": false, "isPure": false, @@ -4755,32 +4807,32 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2430:33:13", + "src": "2430:33:19", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2194, + "id": 2393, "nodeType": "ExpressionStatement", - "src": "2430:33:13" + "src": "2430:33:19" }, { "expression": { "argumentTypes": null, - "id": 2197, + "id": 2396, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 2195, + "id": 2394, "name": "lastOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2136, - "src": "2477:9:13", + "referencedDeclaration": 2335, + "src": "2477:9:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4790,26 +4842,26 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 2196, + "id": 2395, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2142, - "src": "2489:12:13", + "referencedDeclaration": 2341, + "src": "2489:12:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2477:24:13", + "src": "2477:24:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 2198, + "id": 2397, "nodeType": "ExpressionStatement", - "src": "2477:24:13" + "src": "2477:24:19" } ] }, @@ -4819,19 +4871,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 2161, + "id": 2360, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 2159, + "id": 2358, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2145, - "src": "2257:1:13", + "referencedDeclaration": 2344, + "src": "2257:1:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4841,40 +4893,40 @@ "operator": "<", "rightExpression": { "argumentTypes": null, - "id": 2160, + "id": 2359, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2148, - "src": "2261:9:13", + "referencedDeclaration": 2347, + "src": "2261:9:19", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "src": "2257:13:13", + "src": "2257:13:19", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 2200, + "id": 2399, "initializationExpression": { "expression": { "argumentTypes": null, - "id": 2157, + "id": 2356, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 2155, + "id": 2354, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2145, - "src": "2250:1:13", + "referencedDeclaration": 2344, + "src": "2250:1:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4885,14 +4937,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "30", - "id": 2156, + "id": 2355, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2254:1:13", + "src": "2254:1:19", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -4900,20 +4952,20 @@ }, "value": "0" }, - "src": "2250:5:13", + "src": "2250:5:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 2158, + "id": 2357, "nodeType": "ExpressionStatement", - "src": "2250:5:13" + "src": "2250:5:19" }, "loopExpression": { "expression": { "argumentTypes": null, - "id": 2163, + "id": 2362, "isConstant": false, "isLValue": false, "isPure": false, @@ -4921,15 +4973,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "2272:3:13", + "src": "2272:3:19", "subExpression": { "argumentTypes": null, - "id": 2162, + "id": 2361, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2145, - "src": "2272:1:13", + "referencedDeclaration": 2344, + "src": "2272:1:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4940,17 +4992,17 @@ "typeString": "uint256" } }, - "id": 2164, + "id": 2363, "nodeType": "ExpressionStatement", - "src": "2272:3:13" + "src": "2272:3:19" }, "nodeType": "ForStatement", - "src": "2245:267:13" + "src": "2245:267:19" } ] }, "documentation": null, - "id": 2202, + "id": 2401, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -4958,16 +5010,16 @@ "name": "checkHash", "nodeType": "FunctionDefinition", "parameters": { - "id": 2133, + "id": 2332, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2123, + "id": 2322, "name": "transactionHash", "nodeType": "VariableDeclaration", - "scope": 2202, - "src": "1892:23:13", + "scope": 2401, + "src": "1892:23:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4975,10 +5027,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 2122, + "id": 2321, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "1892:7:13", + "src": "1892:7:19", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -4989,11 +5041,11 @@ }, { "constant": false, - "id": 2126, + "id": 2325, "name": "v", "nodeType": "VariableDeclaration", - "scope": 2202, - "src": "1917:9:13", + "scope": 2401, + "src": "1917:9:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5002,19 +5054,19 @@ }, "typeName": { "baseType": { - "id": 2124, + "id": 2323, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "1917:5:13", + "src": "1917:5:19", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "id": 2125, + "id": 2324, "length": null, "nodeType": "ArrayTypeName", - "src": "1917:7:13", + "src": "1917:7:19", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint8_$dyn_storage_ptr", "typeString": "uint8[]" @@ -5025,11 +5077,11 @@ }, { "constant": false, - "id": 2129, + "id": 2328, "name": "r", "nodeType": "VariableDeclaration", - "scope": 2202, - "src": "1928:11:13", + "scope": 2401, + "src": "1928:11:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5038,19 +5090,19 @@ }, "typeName": { "baseType": { - "id": 2127, + "id": 2326, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "1928:7:13", + "src": "1928:7:19", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "id": 2128, + "id": 2327, "length": null, "nodeType": "ArrayTypeName", - "src": "1928:9:13", + "src": "1928:9:19", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", "typeString": "bytes32[]" @@ -5061,11 +5113,11 @@ }, { "constant": false, - "id": 2132, + "id": 2331, "name": "s", "nodeType": "VariableDeclaration", - "scope": 2202, - "src": "1941:11:13", + "scope": 2401, + "src": "1941:11:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5074,19 +5126,19 @@ }, "typeName": { "baseType": { - "id": 2130, + "id": 2329, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "1941:7:13", + "src": "1941:7:19", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "id": 2131, + "id": 2330, "length": null, "nodeType": "ArrayTypeName", - "src": "1941:9:13", + "src": "1941:9:19", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", "typeString": "bytes32[]" @@ -5096,26 +5148,26 @@ "visibility": "internal" } ], - "src": "1891:62:13" + "src": "1891:62:19" }, "payable": false, "returnParameters": { - "id": 2134, + "id": 2333, "nodeType": "ParameterList", "parameters": [], - "src": "1988:0:13" + "src": "1988:0:19" }, - "scope": 2234, - "src": "1873:645:13", + "scope": 2436, + "src": "1873:645:19", "stateMutability": "view", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 2232, + "id": 2434, "nodeType": "Block", - "src": "3012:95:13", + "src": "3012:113:19", "statements": [ { "expression": { @@ -5126,239 +5178,291 @@ "arguments": [ { "argumentTypes": null, - "hexValue": "30783139", - "id": 2219, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30783139", + "id": 2420, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3061:4:19", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_25_by_1", + "typeString": "int_const 25" + }, + "value": "0x19" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_25_by_1", + "typeString": "int_const 25" + } + ], + "id": 2419, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3056:4:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes1_$", + "typeString": "type(bytes1)" + }, + "typeName": "byte" + }, + "id": 2421, "isConstant": false, "isLValue": false, "isPure": true, - "kind": "number", + "kind": "typeConversion", "lValueRequested": false, - "nodeType": "Literal", - "src": "3044:4:13", - "subdenomination": null, + "names": [], + "nodeType": "FunctionCall", + "src": "3056:10:19", "typeDescriptions": { - "typeIdentifier": "t_rational_25_by_1", - "typeString": "int_const 25" - }, - "value": "0x19" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_25_by_1", - "typeString": "int_const 25" + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" } - ], - "id": 2218, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "3039:4:13", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes1_$", - "typeString": "type(bytes1)" }, - "typeName": "byte" - }, - "id": 2220, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3039:10:13", - "typeDescriptions": { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - } - }, - { - "argumentTypes": null, - "arguments": [ { "argumentTypes": null, - "hexValue": "30", - "id": 2222, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 2423, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3073:1:19", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 2422, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3068:4:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes1_$", + "typeString": "type(bytes1)" + }, + "typeName": "byte" + }, + "id": 2424, "isConstant": false, "isLValue": false, "isPure": true, - "kind": "number", + "kind": "typeConversion", "lValueRequested": false, - "nodeType": "Literal", - "src": "3056:1:13", - "subdenomination": null, + "names": [], + "nodeType": "FunctionCall", + "src": "3068:7:19", "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + { + "argumentTypes": null, + "id": 2425, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2649, + "src": "3077:4:19", + "typeDescriptions": { + "typeIdentifier": "t_contract$_StateChannelModule_$2436", + "typeString": "contract StateChannelModule" + } + }, + { + "argumentTypes": null, + "id": 2426, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2403, + "src": "3083:2:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2427, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2405, + "src": "3087:5:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 2428, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2407, + "src": "3094:4:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 2429, + "name": "operation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2409, + "src": "3100:9:19", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + } + }, + { + "argumentTypes": null, + "id": 2430, + "name": "nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2411, + "src": "3111:5:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } } ], "expression": { "argumentTypes": [ { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + }, + { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + }, + { + "typeIdentifier": "t_contract$_StateChannelModule_$2436", + "typeString": "contract StateChannelModule" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } ], - "id": 2221, + "expression": { + "argumentTypes": null, + "id": 2417, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2585, + "src": "3039:3:19", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 2418, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "3051:4:13", + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3039:16:19", "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes1_$", - "typeString": "type(bytes1)" - }, - "typeName": "byte" + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } }, - "id": 2223, + "id": 2431, "isConstant": false, "isLValue": false, - "isPure": true, - "kind": "typeConversion", + "isPure": false, + "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3051:7:13", - "typeDescriptions": { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - } - }, - { - "argumentTypes": null, - "id": 2224, - "name": "this", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2435, - "src": "3060:4:13", - "typeDescriptions": { - "typeIdentifier": "t_contract$_StateChannelModule_$2234", - "typeString": "contract StateChannelModule" - } - }, - { - "argumentTypes": null, - "id": 2225, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2204, - "src": "3066:2:13", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 2226, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2206, - "src": "3070:5:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 2227, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2208, - "src": "3077:4:13", + "src": "3039:78:19", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } - }, - { - "argumentTypes": null, - "id": 2228, - "name": "operation", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2210, - "src": "3083:9:13", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", - "typeString": "enum Enum.Operation" - } - }, - { - "argumentTypes": null, - "id": 2229, - "name": "nonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2212, - "src": "3094:5:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } } ], "expression": { "argumentTypes": [ - { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - }, - { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - }, - { - "typeIdentifier": "t_contract$_StateChannelModule_$2234", - "typeString": "contract StateChannelModule" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_enum$_Operation_$5", - "typeString": "enum Enum.Operation" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" } ], - "id": 2217, + "id": 2416, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2390, - "src": "3029:9:13", + "referencedDeclaration": 2592, + "src": "3029:9:19", "typeDescriptions": { "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", "typeString": "function () pure returns (bytes32)" } }, - "id": 2230, + "id": 2432, "isConstant": false, "isLValue": false, "isPure": false, @@ -5366,21 +5470,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3029:71:13", + "src": "3029:89:19", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "functionReturnParameters": 2216, - "id": 2231, + "functionReturnParameters": 2415, + "id": 2433, "nodeType": "Return", - "src": "3022:78:13" + "src": "3022:96:19" } ] }, "documentation": "@dev Returns hash to be signed by owners.\n @param to Destination address.\n @param value Ether value.\n @param data Data payload.\n @param operation Operation type.\n @param nonce Transaction nonce.\n @return Transaction hash.", - "id": 2233, + "id": 2435, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -5388,16 +5492,16 @@ "name": "getTransactionHash", "nodeType": "FunctionDefinition", "parameters": { - "id": 2213, + "id": 2412, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2204, + "id": 2403, "name": "to", "nodeType": "VariableDeclaration", - "scope": 2233, - "src": "2833:10:13", + "scope": 2435, + "src": "2833:10:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5405,10 +5509,10 @@ "typeString": "address" }, "typeName": { - "id": 2203, + "id": 2402, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2833:7:13", + "src": "2833:7:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5419,11 +5523,11 @@ }, { "constant": false, - "id": 2206, + "id": 2405, "name": "value", "nodeType": "VariableDeclaration", - "scope": 2233, - "src": "2854:13:13", + "scope": 2435, + "src": "2854:13:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5431,10 +5535,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2205, + "id": 2404, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2854:7:13", + "src": "2854:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5445,11 +5549,11 @@ }, { "constant": false, - "id": 2208, + "id": 2407, "name": "data", "nodeType": "VariableDeclaration", - "scope": 2233, - "src": "2878:10:13", + "scope": 2435, + "src": "2878:10:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5457,10 +5561,10 @@ "typeString": "bytes" }, "typeName": { - "id": 2207, + "id": 2406, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "2878:5:13", + "src": "2878:5:19", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -5471,26 +5575,26 @@ }, { "constant": false, - "id": 2210, + "id": 2409, "name": "operation", "nodeType": "VariableDeclaration", - "scope": 2233, - "src": "2899:24:13", + "scope": 2435, + "src": "2899:24:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, "typeName": { "contractScope": null, - "id": 2209, + "id": 2408, "name": "Enum.Operation", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 5, - "src": "2899:14:13", + "referencedDeclaration": 29, + "src": "2899:14:19", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, @@ -5499,11 +5603,11 @@ }, { "constant": false, - "id": 2212, + "id": 2411, "name": "nonce", "nodeType": "VariableDeclaration", - "scope": 2233, - "src": "2934:13:13", + "scope": 2435, + "src": "2934:13:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5511,10 +5615,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2211, + "id": 2410, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2934:7:13", + "src": "2934:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5524,20 +5628,20 @@ "visibility": "internal" } ], - "src": "2823:130:13" + "src": "2823:130:19" }, "payable": false, "returnParameters": { - "id": 2216, + "id": 2415, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2215, + "id": 2414, "name": "", "nodeType": "VariableDeclaration", - "scope": 2233, - "src": "2999:7:13", + "scope": 2435, + "src": "2999:7:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5545,10 +5649,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 2214, + "id": 2413, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "2999:7:13", + "src": "2999:7:19", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -5558,51 +5662,45 @@ "visibility": "internal" } ], - "src": "2998:9:13" + "src": "2998:9:19" }, - "scope": 2234, - "src": "2796:311:13", + "scope": 2436, + "src": "2796:329:19", "stateMutability": "view", "superFunction": null, "visibility": "public" } ], - "scope": 2235, - "src": "269:2840:13" + "scope": 2437, + "src": "269:2858:19" } ], - "src": "0:3110:13" + "src": "0:3128:19" }, "compiler": { "name": "solc", - "version": "0.4.23+commit.124ca40d.Emscripten.clang" + "version": "0.4.24+commit.e67f0147.Emscripten.clang" }, "networks": { "4": { "events": {}, "links": {}, - "address": "0xe8ebcab56a44488742278fe3e5ed241b6b786032", - "transactionHash": "0x8285395632164bd2429394e47473065a620bcea7c066595b3b4e2eb1c8457d17" - }, - "1526478212260": { - "events": {}, - "links": {}, - "address": "0xb9597dbd8ed0c4c481d1677b3200b8c4d342750c", - "transactionHash": "0x7f1b3b4ba4694670b29675af571cb4a96b1c2d78d09d210e27482419aa6fff79" - }, - "1526973574996": { - "events": {}, - "links": {}, - "address": "0x79933939f70a2707380e371524050ecf6477da74", - "transactionHash": "0x7f1b3b4ba4694670b29675af571cb4a96b1c2d78d09d210e27482419aa6fff79" + "address": "0x8790f40ca24d228e6b81870eea3a67f4dc607035", + "transactionHash": "0x6ddc49abc9c794831925c1069990a2074a9700e60084596eef8e43a16c226be2" }, "1527316019334": { "events": {}, "links": {}, - "address": "0x07ef92f7b5ff64dc4d0757790281c23d54871b9a", - "transactionHash": "0x7f1b3b4ba4694670b29675af571cb4a96b1c2d78d09d210e27482419aa6fff79" + "address": "0x529daa14f15a5933ca1eccb5ddc077bb4c5c3e1e", + "transactionHash": "0x22f672e547fdb05f8c0c62f8f442864b8f3b650302c22409a90cb7f64adb6fd6" + }, + "1527420696956": { + "events": {}, + "links": {}, + "address": "0xef54fbda842be606286a8cfa51632312bc605b7d", + "transactionHash": "0x7f30a995aef0c0cf18b0ec902dde55e53b6ffd35610b06b23136ca628e430373" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-26T06:28:28.355Z" + "updatedAt": "2018-05-27T11:31:46.242Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/WhitelistModule.json b/safe-contracts/build/contracts/WhitelistModule.json index 9efae338..dc006576 100644 --- a/safe-contracts/build/contracts/WhitelistModule.json +++ b/safe-contracts/build/contracts/WhitelistModule.json @@ -146,73 +146,73 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50610c78806100206000396000f300608060405260043610610099576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632f2f3be11461009e5780633af32abf14610149578063481c6a75146101a45780637de7edef146101fb5780638ab1d6811461023e578063a3f4df7e14610281578063bd5b853b14610311578063e43252d714610377578063ffa1ad74146103ba575b600080fd5b3480156100aa57600080fd5b5061012f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505061044a565b604051808215151515815260200191505060405180910390f35b34801561015557600080fd5b5061018a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061073d565b604051808215151515815260200191505060405180910390f35b3480156101b057600080fd5b506101b961075d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561020757600080fd5b5061023c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610783565b005b34801561024a57600080fd5b5061027f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610848565b005b34801561028d57600080fd5b50610296610957565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102d65780820151818401526020810190506102bb565b50505050905090810190601f1680156103035780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561031d57600080fd5b5061037560048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050610990565b005b34801561038357600080fd5b506103b8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a53565b005b3480156103c657600080fd5b506103cf610b89565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561040f5780820151818401526020810190506103f4565b50505050905090810190601f16801561043c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f54bf6e336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561050957600080fd5b505af115801561051d573d6000803e3d6000fd5b505050506040513d602081101561053357600080fd5b8101908080519060200190929190505050151561054f57600080fd5b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156105a757600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a785858560006040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018060200183600281111561066157fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b838110156106a1578082015181840152602081019050610686565b50505050905090810190601f1680156106ce5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b1580156106f057600080fd5b505af1158015610704573d6000803e3d6000fd5b505050506040513d602081101561071a57600080fd5b8101908080519060200190929190505050151561073657600080fd5b9392505050565b60026020528060005260406000206000915054906101000a900460ff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156107df57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561080557600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156108a457600080fd5b600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156108fc57600080fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6040805190810160405280601081526020017f57686974656c697374204d6f64756c650000000000000000000000000000000081525081565b60008061099b610bc2565b600091505b8251821015610a4e5782828151811015156109b757fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff16141515156109e957600080fd5b6001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555081806001019250506109a0565b505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610aaf57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515610ad557600080fd5b600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515610b2e57600080fd5b6001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610c0957600080fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505600a165627a7a723058202f15d7927e2ed3723a36804ee24b65ed4b34edcd2b65d7a7a11d8729219f6a9e0029", - "deployedBytecode": "0x608060405260043610610099576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632f2f3be11461009e5780633af32abf14610149578063481c6a75146101a45780637de7edef146101fb5780638ab1d6811461023e578063a3f4df7e14610281578063bd5b853b14610311578063e43252d714610377578063ffa1ad74146103ba575b600080fd5b3480156100aa57600080fd5b5061012f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505061044a565b604051808215151515815260200191505060405180910390f35b34801561015557600080fd5b5061018a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061073d565b604051808215151515815260200191505060405180910390f35b3480156101b057600080fd5b506101b961075d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561020757600080fd5b5061023c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610783565b005b34801561024a57600080fd5b5061027f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610848565b005b34801561028d57600080fd5b50610296610957565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102d65780820151818401526020810190506102bb565b50505050905090810190601f1680156103035780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561031d57600080fd5b5061037560048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050610990565b005b34801561038357600080fd5b506103b8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a53565b005b3480156103c657600080fd5b506103cf610b89565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561040f5780820151818401526020810190506103f4565b50505050905090810190601f16801561043c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f54bf6e336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561050957600080fd5b505af115801561051d573d6000803e3d6000fd5b505050506040513d602081101561053357600080fd5b8101908080519060200190929190505050151561054f57600080fd5b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156105a757600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a785858560006040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018060200183600281111561066157fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b838110156106a1578082015181840152602081019050610686565b50505050905090810190601f1680156106ce5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b1580156106f057600080fd5b505af1158015610704573d6000803e3d6000fd5b505050506040513d602081101561071a57600080fd5b8101908080519060200190929190505050151561073657600080fd5b9392505050565b60026020528060005260406000206000915054906101000a900460ff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156107df57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561080557600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156108a457600080fd5b600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156108fc57600080fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6040805190810160405280601081526020017f57686974656c697374204d6f64756c650000000000000000000000000000000081525081565b60008061099b610bc2565b600091505b8251821015610a4e5782828151811015156109b757fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff16141515156109e957600080fd5b6001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555081806001019250506109a0565b505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610aaf57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515610ad557600080fd5b600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515610b2e57600080fd5b6001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610c0957600080fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505600a165627a7a723058202f15d7927e2ed3723a36804ee24b65ed4b34edcd2b65d7a7a11d8729219f6a9e0029", - "sourceMap": "289:1968:14:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;289:1968:14;;;;;;;", - "deployedSourceMap": "289:1968:14:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1864:391;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1864:391:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;498:46;;8:9:-1;5:2;;;30:1;27;20:12;5:2;498:46:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;262:28:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;262:28:5;;;;;;;;;;;;;;;;;;;;;;;;;;;626:208:4;;8:9:-1;5:2;;;30:1;27;20:12;5:2;626:208:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;1438:172:14;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1438:172:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;331:48;;8:9:-1;5:2;;;30:1;27;20:12;5:2;331:48:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;331:48:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;667:270;;8:9:-1;5:2;;;30:1;27;20:12;5:2;667:270:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1086:198;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1086:198:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;385:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;385:40:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;385:40:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1864:391;1963:4;2093:7;;;;;;;;;;;2080:29;;;2110:10;2080:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2080:41:14;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2080:41:14;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2080:41:14;;;;;;;;;;;;;;;;2072:50;;;;;;;;2140:13;:17;2154:2;2140:17;;;;;;;;;;;;;;;;;;;;;;;;;2132:26;;;;;;;;2176:7;;;;;;;;;;;:33;;;2210:2;2214:5;2221:4;2227:19;2176:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;2176:71:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2176:71:14;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2176:71:14;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2176:71:14;;;;;;;;;;;;;;;;2168:80;;;;;;;;1864:391;;;;;:::o;498:46::-;;;;;;;;;;;;;;;;;;;;;;:::o;262:28:5:-;;;;;;;;;;;;;:::o;626:208:4:-;359:7:5;;;;;;;;;;;337:30;;:10;:30;;;329:39;;;;;;;;791:1:4;776:11;:16;;;;768:25;;;;;;;;816:11;803:10;;:24;;;;;;;;;;;;;;;;;;626:208;:::o;1438:172:14:-;359:7:5;;;;;;;;;;;337:30;;:10;:30;;;329:39;;;;;;;;1540:13:14;:22;1554:7;1540:22;;;;;;;;;;;;;;;;;;;;;;;;;1532:31;;;;;;;;1598:5;1573:13;:22;1587:7;1573:22;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;1438:172;:::o;331:48::-;;;;;;;;;;;;;;;;;;;;:::o;667:270::-;758:9;813:15;731:12;:10;:12::i;:::-;770:1;758:13;;753:178;777:8;:15;773:1;:19;753:178;;;831:8;840:1;831:11;;;;;;;;;;;;;;;;;;813:29;;875:1;864:7;:12;;;;856:21;;;;;;;;916:4;891:13;:22;905:7;891:22;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;794:3;;;;;;;753:178;;;667:270;;;:::o;1086:198::-;359:7:5;;;;;;;;;;;337:30;;:10;:30;;;329:39;;;;;;;;1194:1:14;1183:7;:12;;;;1175:21;;;;;;;;1215:13;:22;1229:7;1215:22;;;;;;;;;;;;;;;;;;;;;;;;;1214:23;1206:32;;;;;;;;1273:4;1248:13;:22;1262:7;1248:22;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;1086:198;:::o;385:40::-;;;;;;;;;;;;;;;;;;;;:::o;392:268:5:-;606:1;594:7;;;;;;;;;;;586:21;;;578:30;;;;;;;;642:10;618:7;;:35;;;;;;;;;;;;;;;;;;392:268::o", - "source": "pragma solidity 0.4.23;\nimport \"../Enum.sol\";\nimport \"../Module.sol\";\nimport \"../ModuleManager.sol\";\nimport \"../OwnerManager.sol\";\n\n\n/// @title Whitelist Module - Allows to execute transactions to whitelisted addresses without confirmations.\n/// @author Stefan George - \ncontract WhitelistModule is Module {\n\n string public constant NAME = \"Whitelist Module\";\n string public constant VERSION = \"0.0.1\";\n\n // isWhitelisted mapping maps destination address to boolean.\n mapping (address => bool) public isWhitelisted;\n\n /// @dev Setup function sets initial storage of contract.\n /// @param accounts List of whitelisted accounts.\n function setup(address[] accounts)\n public\n {\n setManager();\n for (uint256 i = 0; i < accounts.length; i++) {\n address account = accounts[i];\n require(account != 0);\n isWhitelisted[account] = true;\n }\n }\n\n /// @dev Allows to add destination to whitelist. This can only be done via a Safe transaction.\n /// @param account Destination address.\n function addToWhitelist(address account)\n public\n authorized\n {\n require(account != 0);\n require(!isWhitelisted[account]);\n isWhitelisted[account] = true;\n }\n\n /// @dev Allows to remove destination from whitelist. This can only be done via a Safe transaction.\n /// @param account Destination address.\n function removeFromWhitelist(address account)\n public\n authorized\n {\n require(isWhitelisted[account]);\n isWhitelisted[account] = false;\n }\n\n /// @dev Returns if Safe transaction is to a whitelisted destination.\n /// @param to Whitelisted destination address.\n /// @param value Not checked.\n /// @param data Not checked.\n /// @return Returns if transaction can be executed.\n function executeWhitelisted(address to, uint256 value, bytes data)\n public\n returns (bool)\n {\n // Only Safe owners are allowed to execute transactions to whitelisted accounts.\n require(OwnerManager(manager).isOwner(msg.sender));\n require(isWhitelisted[to]);\n require(manager.execTransactionFromModule(to, value, data, Enum.Operation.Call));\n }\n}\n", + "bytecode": "0x608060405234801561001057600080fd5b50610c78806100206000396000f300608060405260043610610099576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632f2f3be11461009e5780633af32abf14610149578063481c6a75146101a45780637de7edef146101fb5780638ab1d6811461023e578063a3f4df7e14610281578063bd5b853b14610311578063e43252d714610377578063ffa1ad74146103ba575b600080fd5b3480156100aa57600080fd5b5061012f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505061044a565b604051808215151515815260200191505060405180910390f35b34801561015557600080fd5b5061018a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061073d565b604051808215151515815260200191505060405180910390f35b3480156101b057600080fd5b506101b961075d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561020757600080fd5b5061023c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610783565b005b34801561024a57600080fd5b5061027f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610848565b005b34801561028d57600080fd5b50610296610957565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102d65780820151818401526020810190506102bb565b50505050905090810190601f1680156103035780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561031d57600080fd5b5061037560048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050610990565b005b34801561038357600080fd5b506103b8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a53565b005b3480156103c657600080fd5b506103cf610b89565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561040f5780820151818401526020810190506103f4565b50505050905090810190601f16801561043c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f54bf6e336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561050957600080fd5b505af115801561051d573d6000803e3d6000fd5b505050506040513d602081101561053357600080fd5b8101908080519060200190929190505050151561054f57600080fd5b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156105a757600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a785858560006040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018060200183600281111561066157fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b838110156106a1578082015181840152602081019050610686565b50505050905090810190601f1680156106ce5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b1580156106f057600080fd5b505af1158015610704573d6000803e3d6000fd5b505050506040513d602081101561071a57600080fd5b8101908080519060200190929190505050151561073657600080fd5b9392505050565b60026020528060005260406000206000915054906101000a900460ff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156107df57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561080557600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156108a457600080fd5b600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156108fc57600080fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6040805190810160405280601081526020017f57686974656c697374204d6f64756c650000000000000000000000000000000081525081565b60008061099b610bc2565b600091505b8251821015610a4e5782828151811015156109b757fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff16141515156109e957600080fd5b6001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555081806001019250506109a0565b505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610aaf57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515610ad557600080fd5b600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515610b2e57600080fd5b6001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610c0957600080fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505600a165627a7a72305820a2e4acc18c7392c4cdfa06bb162c1c255b8fd38cb3756ecc9215b556928a15c10029", + "deployedBytecode": "0x608060405260043610610099576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632f2f3be11461009e5780633af32abf14610149578063481c6a75146101a45780637de7edef146101fb5780638ab1d6811461023e578063a3f4df7e14610281578063bd5b853b14610311578063e43252d714610377578063ffa1ad74146103ba575b600080fd5b3480156100aa57600080fd5b5061012f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505061044a565b604051808215151515815260200191505060405180910390f35b34801561015557600080fd5b5061018a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061073d565b604051808215151515815260200191505060405180910390f35b3480156101b057600080fd5b506101b961075d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561020757600080fd5b5061023c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610783565b005b34801561024a57600080fd5b5061027f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610848565b005b34801561028d57600080fd5b50610296610957565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102d65780820151818401526020810190506102bb565b50505050905090810190601f1680156103035780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561031d57600080fd5b5061037560048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050610990565b005b34801561038357600080fd5b506103b8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a53565b005b3480156103c657600080fd5b506103cf610b89565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561040f5780820151818401526020810190506103f4565b50505050905090810190601f16801561043c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f54bf6e336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561050957600080fd5b505af115801561051d573d6000803e3d6000fd5b505050506040513d602081101561053357600080fd5b8101908080519060200190929190505050151561054f57600080fd5b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156105a757600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a785858560006040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018060200183600281111561066157fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b838110156106a1578082015181840152602081019050610686565b50505050905090810190601f1680156106ce5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b1580156106f057600080fd5b505af1158015610704573d6000803e3d6000fd5b505050506040513d602081101561071a57600080fd5b8101908080519060200190929190505050151561073657600080fd5b9392505050565b60026020528060005260406000206000915054906101000a900460ff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156107df57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561080557600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156108a457600080fd5b600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156108fc57600080fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6040805190810160405280601081526020017f57686974656c697374204d6f64756c650000000000000000000000000000000081525081565b60008061099b610bc2565b600091505b8251821015610a4e5782828151811015156109b757fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff16141515156109e957600080fd5b6001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555081806001019250506109a0565b505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610aaf57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515610ad557600080fd5b600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515610b2e57600080fd5b6001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610c0957600080fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505600a165627a7a72305820a2e4acc18c7392c4cdfa06bb162c1c255b8fd38cb3756ecc9215b556928a15c10029", + "sourceMap": "289:1968:20:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;289:1968:20;;;;;;;", + "deployedSourceMap": "289:1968:20:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1864:391;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1864:391:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;498:46;;8:9:-1;5:2;;;30:1;27;20:12;5:2;498:46:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;262:28:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;262:28:7;;;;;;;;;;;;;;;;;;;;;;;;;;;626:208:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;626:208:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;1438:172:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1438:172:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;331:48;;8:9:-1;5:2;;;30:1;27;20:12;5:2;331:48:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;331:48:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;667:270;;8:9:-1;5:2;;;30:1;27;20:12;5:2;667:270:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1086:198;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1086:198:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;385:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;385:40:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;385:40:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1864:391;1963:4;2093:7;;;;;;;;;;;2080:29;;;2110:10;2080:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2080:41:20;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2080:41:20;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2080:41:20;;;;;;;;;;;;;;;;2072:50;;;;;;;;2140:13;:17;2154:2;2140:17;;;;;;;;;;;;;;;;;;;;;;;;;2132:26;;;;;;;;2176:7;;;;;;;;;;;:33;;;2210:2;2214:5;2221:4;2227:19;2176:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;2176:71:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2176:71:20;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2176:71:20;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2176:71:20;;;;;;;;;;;;;;;;2168:80;;;;;;;;1864:391;;;;;:::o;498:46::-;;;;;;;;;;;;;;;;;;;;;;:::o;262:28:7:-;;;;;;;;;;;;;:::o;626:208:5:-;359:7:7;;;;;;;;;;;337:30;;:10;:30;;;329:39;;;;;;;;791:1:5;776:11;:16;;;;768:25;;;;;;;;816:11;803:10;;:24;;;;;;;;;;;;;;;;;;626:208;:::o;1438:172:20:-;359:7:7;;;;;;;;;;;337:30;;:10;:30;;;329:39;;;;;;;;1540:13:20;:22;1554:7;1540:22;;;;;;;;;;;;;;;;;;;;;;;;;1532:31;;;;;;;;1598:5;1573:13;:22;1587:7;1573:22;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;1438:172;:::o;331:48::-;;;;;;;;;;;;;;;;;;;;:::o;667:270::-;758:9;813:15;731:12;:10;:12::i;:::-;770:1;758:13;;753:178;777:8;:15;773:1;:19;753:178;;;831:8;840:1;831:11;;;;;;;;;;;;;;;;;;813:29;;875:1;864:7;:12;;;;856:21;;;;;;;;916:4;891:13;:22;905:7;891:22;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;794:3;;;;;;;753:178;;;667:270;;;:::o;1086:198::-;359:7:7;;;;;;;;;;;337:30;;:10;:30;;;329:39;;;;;;;;1194:1:20;1183:7;:12;;;;1175:21;;;;;;;;1215:13;:22;1229:7;1215:22;;;;;;;;;;;;;;;;;;;;;;;;;1214:23;1206:32;;;;;;;;1273:4;1248:13;:22;1262:7;1248:22;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;1086:198;:::o;385:40::-;;;;;;;;;;;;;;;;;;;;:::o;392:268:7:-;606:1;594:7;;;;;;;;;;;586:21;;;578:30;;;;;;;;642:10;618:7;;:35;;;;;;;;;;;;;;;;;;392:268::o", + "source": "pragma solidity 0.4.24;\nimport \"../Enum.sol\";\nimport \"../Module.sol\";\nimport \"../ModuleManager.sol\";\nimport \"../OwnerManager.sol\";\n\n\n/// @title Whitelist Module - Allows to execute transactions to whitelisted addresses without confirmations.\n/// @author Stefan George - \ncontract WhitelistModule is Module {\n\n string public constant NAME = \"Whitelist Module\";\n string public constant VERSION = \"0.0.1\";\n\n // isWhitelisted mapping maps destination address to boolean.\n mapping (address => bool) public isWhitelisted;\n\n /// @dev Setup function sets initial storage of contract.\n /// @param accounts List of whitelisted accounts.\n function setup(address[] accounts)\n public\n {\n setManager();\n for (uint256 i = 0; i < accounts.length; i++) {\n address account = accounts[i];\n require(account != 0);\n isWhitelisted[account] = true;\n }\n }\n\n /// @dev Allows to add destination to whitelist. This can only be done via a Safe transaction.\n /// @param account Destination address.\n function addToWhitelist(address account)\n public\n authorized\n {\n require(account != 0);\n require(!isWhitelisted[account]);\n isWhitelisted[account] = true;\n }\n\n /// @dev Allows to remove destination from whitelist. This can only be done via a Safe transaction.\n /// @param account Destination address.\n function removeFromWhitelist(address account)\n public\n authorized\n {\n require(isWhitelisted[account]);\n isWhitelisted[account] = false;\n }\n\n /// @dev Returns if Safe transaction is to a whitelisted destination.\n /// @param to Whitelisted destination address.\n /// @param value Not checked.\n /// @param data Not checked.\n /// @return Returns if transaction can be executed.\n function executeWhitelisted(address to, uint256 value, bytes data)\n public\n returns (bool)\n {\n // Only Safe owners are allowed to execute transactions to whitelisted accounts.\n require(OwnerManager(manager).isOwner(msg.sender));\n require(isWhitelisted[to]);\n require(manager.execTransactionFromModule(to, value, data, Enum.Operation.Call));\n }\n}\n", "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/modules/WhitelistModule.sol", "ast": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/modules/WhitelistModule.sol", "exportedSymbols": { "WhitelistModule": [ - 2381 + 2583 ] }, - "id": 2382, + "id": 2584, "nodeType": "SourceUnit", "nodes": [ { - "id": 2236, + "id": 2438, "literals": [ "solidity", "0.4", - ".23" + ".24" ], "nodeType": "PragmaDirective", - "src": "0:23:14" + "src": "0:23:20" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Enum.sol", "file": "../Enum.sol", - "id": 2237, + "id": 2439, "nodeType": "ImportDirective", - "scope": 2382, - "sourceUnit": 7, - "src": "24:21:14", + "scope": 2584, + "sourceUnit": 31, + "src": "24:21:20", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Module.sol", "file": "../Module.sol", - "id": 2238, + "id": 2440, "nodeType": "ImportDirective", - "scope": 2382, - "sourceUnit": 622, - "src": "46:23:14", + "scope": 2584, + "sourceUnit": 751, + "src": "46:23:20", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/ModuleManager.sol", "file": "../ModuleManager.sol", - "id": 2239, + "id": 2441, "nodeType": "ImportDirective", - "scope": 2382, - "sourceUnit": 972, - "src": "70:30:14", + "scope": 2584, + "sourceUnit": 1101, + "src": "70:30:20", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/OwnerManager.sol", "file": "../OwnerManager.sol", - "id": 2240, + "id": 2442, "nodeType": "ImportDirective", - "scope": 2382, - "sourceUnit": 1344, - "src": "101:29:14", + "scope": 2584, + "sourceUnit": 1473, + "src": "101:29:20", "symbolAliases": [], "unitAlias": "" }, @@ -222,46 +222,46 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 2241, + "id": 2443, "name": "Module", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 621, - "src": "317:6:14", + "referencedDeclaration": 750, + "src": "317:6:20", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$621", + "typeIdentifier": "t_contract$_Module_$750", "typeString": "contract Module" } }, - "id": 2242, + "id": 2444, "nodeType": "InheritanceSpecifier", - "src": "317:6:14" + "src": "317:6:20" } ], "contractDependencies": [ - 580, - 621, - 1359 + 652, + 750, + 1619 ], "contractKind": "contract", "documentation": "@title Whitelist Module - Allows to execute transactions to whitelisted addresses without confirmations.\n @author Stefan George - ", "fullyImplemented": true, - "id": 2381, + "id": 2583, "linearizedBaseContracts": [ - 2381, - 621, - 580, - 1359 + 2583, + 750, + 652, + 1619 ], "name": "WhitelistModule", "nodeType": "ContractDefinition", "nodes": [ { "constant": true, - "id": 2245, + "id": 2447, "name": "NAME", "nodeType": "VariableDeclaration", - "scope": 2381, - "src": "331:48:14", + "scope": 2583, + "src": "331:48:20", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -269,10 +269,10 @@ "typeString": "string" }, "typeName": { - "id": 2243, + "id": 2445, "name": "string", "nodeType": "ElementaryTypeName", - "src": "331:6:14", + "src": "331:6:20", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -281,14 +281,14 @@ "value": { "argumentTypes": null, "hexValue": "57686974656c697374204d6f64756c65", - "id": 2244, + "id": 2446, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "361:18:14", + "src": "361:18:20", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_84d69d03a7c747e8eefe7cc2b9e87b566cfc57cc90e4ed88f03f9c9780b7d4e6", @@ -300,11 +300,11 @@ }, { "constant": true, - "id": 2248, + "id": 2450, "name": "VERSION", "nodeType": "VariableDeclaration", - "scope": 2381, - "src": "385:40:14", + "scope": 2583, + "src": "385:40:20", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -312,10 +312,10 @@ "typeString": "string" }, "typeName": { - "id": 2246, + "id": 2448, "name": "string", "nodeType": "ElementaryTypeName", - "src": "385:6:14", + "src": "385:6:20", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -324,14 +324,14 @@ "value": { "argumentTypes": null, "hexValue": "302e302e31", - "id": 2247, + "id": 2449, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "418:7:14", + "src": "418:7:20", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_ae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc199163811885", @@ -343,11 +343,11 @@ }, { "constant": false, - "id": 2252, + "id": 2454, "name": "isWhitelisted", "nodeType": "VariableDeclaration", - "scope": 2381, - "src": "498:46:14", + "scope": 2583, + "src": "498:46:20", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -355,28 +355,28 @@ "typeString": "mapping(address => bool)" }, "typeName": { - "id": 2251, + "id": 2453, "keyType": { - "id": 2249, + "id": 2451, "name": "address", "nodeType": "ElementaryTypeName", - "src": "507:7:14", + "src": "507:7:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", - "src": "498:25:14", + "src": "498:25:20", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" }, "valueType": { - "id": 2250, + "id": 2452, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "518:4:14", + "src": "518:4:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -388,9 +388,9 @@ }, { "body": { - "id": 2292, + "id": 2494, "nodeType": "Block", - "src": "721:216:14", + "src": "721:216:20", "statements": [ { "expression": { @@ -398,18 +398,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 2258, + "id": 2460, "name": "setManager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 620, - "src": "731:10:14", + "referencedDeclaration": 749, + "src": "731:10:20", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()" } }, - "id": 2259, + "id": 2461, "isConstant": false, "isLValue": false, "isPure": false, @@ -417,34 +417,34 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "731:12:14", + "src": "731:12:20", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2260, + "id": 2462, "nodeType": "ExpressionStatement", - "src": "731:12:14" + "src": "731:12:20" }, { "body": { - "id": 2290, + "id": 2492, "nodeType": "Block", - "src": "799:132:14", + "src": "799:132:20", "statements": [ { "assignments": [ - 2273 + 2475 ], "declarations": [ { "constant": false, - "id": 2273, + "id": 2475, "name": "account", "nodeType": "VariableDeclaration", - "scope": 2293, - "src": "813:15:14", + "scope": 2495, + "src": "813:15:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -452,10 +452,10 @@ "typeString": "address" }, "typeName": { - "id": 2272, + "id": 2474, "name": "address", "nodeType": "ElementaryTypeName", - "src": "813:7:14", + "src": "813:7:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -465,31 +465,31 @@ "visibility": "internal" } ], - "id": 2277, + "id": 2479, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2274, + "id": 2476, "name": "accounts", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2255, - "src": "831:8:14", + "referencedDeclaration": 2457, + "src": "831:8:20", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 2276, + "id": 2478, "indexExpression": { "argumentTypes": null, - "id": 2275, + "id": 2477, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2262, - "src": "840:1:14", + "referencedDeclaration": 2464, + "src": "840:1:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -500,14 +500,14 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "831:11:14", + "src": "831:11:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", - "src": "813:29:14" + "src": "813:29:20" }, { "expression": { @@ -519,19 +519,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 2281, + "id": 2483, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 2279, + "id": 2481, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2273, - "src": "864:7:14", + "referencedDeclaration": 2475, + "src": "864:7:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -542,14 +542,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 2280, + "id": 2482, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "875:1:14", + "src": "875:1:20", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -557,7 +557,7 @@ }, "value": "0" }, - "src": "864:12:14", + "src": "864:12:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -571,21 +571,21 @@ "typeString": "bool" } ], - "id": 2278, + "id": 2480, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "856:7:14", + "referencedDeclaration": 2601, + "src": "856:7:20", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 2282, + "id": 2484, "isConstant": false, "isLValue": false, "isPure": false, @@ -593,20 +593,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "856:21:14", + "src": "856:21:20", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2283, + "id": 2485, "nodeType": "ExpressionStatement", - "src": "856:21:14" + "src": "856:21:20" }, { "expression": { "argumentTypes": null, - "id": 2288, + "id": 2490, "isConstant": false, "isLValue": false, "isPure": false, @@ -615,26 +615,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2284, + "id": 2486, "name": "isWhitelisted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2252, - "src": "891:13:14", + "referencedDeclaration": 2454, + "src": "891:13:20", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 2286, + "id": 2488, "indexExpression": { "argumentTypes": null, - "id": 2285, + "id": 2487, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2273, - "src": "905:7:14", + "referencedDeclaration": 2475, + "src": "905:7:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -645,7 +645,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "891:22:14", + "src": "891:22:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -656,14 +656,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 2287, + "id": 2489, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "916:4:14", + "src": "916:4:20", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -671,15 +671,15 @@ }, "value": "true" }, - "src": "891:29:14", + "src": "891:29:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 2289, + "id": 2491, "nodeType": "ExpressionStatement", - "src": "891:29:14" + "src": "891:29:20" } ] }, @@ -689,19 +689,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 2268, + "id": 2470, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 2265, + "id": 2467, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2262, - "src": "773:1:14", + "referencedDeclaration": 2464, + "src": "773:1:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -713,18 +713,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2266, + "id": 2468, "name": "accounts", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2255, - "src": "777:8:14", + "referencedDeclaration": 2457, + "src": "777:8:20", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 2267, + "id": 2469, "isConstant": false, "isLValue": false, "isPure": false, @@ -732,31 +732,31 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "777:15:14", + "src": "777:15:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "773:19:14", + "src": "773:19:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 2291, + "id": 2493, "initializationExpression": { "assignments": [ - 2262 + 2464 ], "declarations": [ { "constant": false, - "id": 2262, + "id": 2464, "name": "i", "nodeType": "VariableDeclaration", - "scope": 2293, - "src": "758:9:14", + "scope": 2495, + "src": "758:9:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -764,10 +764,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2261, + "id": 2463, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "758:7:14", + "src": "758:7:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -777,18 +777,18 @@ "visibility": "internal" } ], - "id": 2264, + "id": 2466, "initialValue": { "argumentTypes": null, "hexValue": "30", - "id": 2263, + "id": 2465, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "770:1:14", + "src": "770:1:20", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -797,12 +797,12 @@ "value": "0" }, "nodeType": "VariableDeclarationStatement", - "src": "758:13:14" + "src": "758:13:20" }, "loopExpression": { "expression": { "argumentTypes": null, - "id": 2270, + "id": 2472, "isConstant": false, "isLValue": false, "isPure": false, @@ -810,15 +810,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "794:3:14", + "src": "794:3:20", "subExpression": { "argumentTypes": null, - "id": 2269, + "id": 2471, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2262, - "src": "794:1:14", + "referencedDeclaration": 2464, + "src": "794:1:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -829,17 +829,17 @@ "typeString": "uint256" } }, - "id": 2271, + "id": 2473, "nodeType": "ExpressionStatement", - "src": "794:3:14" + "src": "794:3:20" }, "nodeType": "ForStatement", - "src": "753:178:14" + "src": "753:178:20" } ] }, "documentation": "@dev Setup function sets initial storage of contract.\n @param accounts List of whitelisted accounts.", - "id": 2293, + "id": 2495, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -847,16 +847,16 @@ "name": "setup", "nodeType": "FunctionDefinition", "parameters": { - "id": 2256, + "id": 2458, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2255, + "id": 2457, "name": "accounts", "nodeType": "VariableDeclaration", - "scope": 2293, - "src": "682:18:14", + "scope": 2495, + "src": "682:18:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -865,19 +865,19 @@ }, "typeName": { "baseType": { - "id": 2253, + "id": 2455, "name": "address", "nodeType": "ElementaryTypeName", - "src": "682:7:14", + "src": "682:7:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 2254, + "id": 2456, "length": null, "nodeType": "ArrayTypeName", - "src": "682:9:14", + "src": "682:9:20", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" @@ -887,26 +887,26 @@ "visibility": "internal" } ], - "src": "681:20:14" + "src": "681:20:20" }, "payable": false, "returnParameters": { - "id": 2257, + "id": 2459, "nodeType": "ParameterList", "parameters": [], - "src": "721:0:14" + "src": "721:0:20" }, - "scope": 2381, - "src": "667:270:14", + "scope": 2583, + "src": "667:270:20", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 2319, + "id": 2521, "nodeType": "Block", - "src": "1165:119:14", + "src": "1165:119:20", "statements": [ { "expression": { @@ -918,19 +918,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 2303, + "id": 2505, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 2301, + "id": 2503, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2295, - "src": "1183:7:14", + "referencedDeclaration": 2497, + "src": "1183:7:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -941,14 +941,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 2302, + "id": 2504, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1194:1:14", + "src": "1194:1:20", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -956,7 +956,7 @@ }, "value": "0" }, - "src": "1183:12:14", + "src": "1183:12:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -970,21 +970,21 @@ "typeString": "bool" } ], - "id": 2300, + "id": 2502, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "1175:7:14", + "referencedDeclaration": 2601, + "src": "1175:7:20", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 2304, + "id": 2506, "isConstant": false, "isLValue": false, "isPure": false, @@ -992,15 +992,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1175:21:14", + "src": "1175:21:20", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2305, + "id": 2507, "nodeType": "ExpressionStatement", - "src": "1175:21:14" + "src": "1175:21:20" }, { "expression": { @@ -1008,7 +1008,7 @@ "arguments": [ { "argumentTypes": null, - "id": 2310, + "id": 2512, "isConstant": false, "isLValue": false, "isPure": false, @@ -1016,31 +1016,31 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "1214:23:14", + "src": "1214:23:20", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2307, + "id": 2509, "name": "isWhitelisted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2252, - "src": "1215:13:14", + "referencedDeclaration": 2454, + "src": "1215:13:20", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 2309, + "id": 2511, "indexExpression": { "argumentTypes": null, - "id": 2308, + "id": 2510, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2295, - "src": "1229:7:14", + "referencedDeclaration": 2497, + "src": "1229:7:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1051,7 +1051,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1215:22:14", + "src": "1215:22:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1070,21 +1070,21 @@ "typeString": "bool" } ], - "id": 2306, + "id": 2508, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "1206:7:14", + "referencedDeclaration": 2601, + "src": "1206:7:20", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 2311, + "id": 2513, "isConstant": false, "isLValue": false, "isPure": false, @@ -1092,20 +1092,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1206:32:14", + "src": "1206:32:20", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2312, + "id": 2514, "nodeType": "ExpressionStatement", - "src": "1206:32:14" + "src": "1206:32:20" }, { "expression": { "argumentTypes": null, - "id": 2317, + "id": 2519, "isConstant": false, "isLValue": false, "isPure": false, @@ -1114,26 +1114,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2313, + "id": 2515, "name": "isWhitelisted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2252, - "src": "1248:13:14", + "referencedDeclaration": 2454, + "src": "1248:13:20", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 2315, + "id": 2517, "indexExpression": { "argumentTypes": null, - "id": 2314, + "id": 2516, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2295, - "src": "1262:7:14", + "referencedDeclaration": 2497, + "src": "1262:7:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1144,7 +1144,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1248:22:14", + "src": "1248:22:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1155,14 +1155,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 2316, + "id": 2518, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "1273:4:14", + "src": "1273:4:20", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -1170,57 +1170,57 @@ }, "value": "true" }, - "src": "1248:29:14", + "src": "1248:29:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 2318, + "id": 2520, "nodeType": "ExpressionStatement", - "src": "1248:29:14" + "src": "1248:29:20" } ] }, "documentation": "@dev Allows to add destination to whitelist. This can only be done via a Safe transaction.\n @param account Destination address.", - "id": 2320, + "id": 2522, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 2298, + "id": 2500, "modifierName": { "argumentTypes": null, - "id": 2297, + "id": 2499, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 601, - "src": "1150:10:14", + "referencedDeclaration": 730, + "src": "1150:10:20", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "1150:10:14" + "src": "1150:10:20" } ], "name": "addToWhitelist", "nodeType": "FunctionDefinition", "parameters": { - "id": 2296, + "id": 2498, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2295, + "id": 2497, "name": "account", "nodeType": "VariableDeclaration", - "scope": 2320, - "src": "1110:15:14", + "scope": 2522, + "src": "1110:15:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1228,10 +1228,10 @@ "typeString": "address" }, "typeName": { - "id": 2294, + "id": 2496, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1110:7:14", + "src": "1110:7:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1241,26 +1241,26 @@ "visibility": "internal" } ], - "src": "1109:17:14" + "src": "1109:17:20" }, "payable": false, "returnParameters": { - "id": 2299, + "id": 2501, "nodeType": "ParameterList", "parameters": [], - "src": "1165:0:14" + "src": "1165:0:20" }, - "scope": 2381, - "src": "1086:198:14", + "scope": 2583, + "src": "1086:198:20", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 2339, + "id": 2541, "nodeType": "Block", - "src": "1522:88:14", + "src": "1522:88:20", "statements": [ { "expression": { @@ -1270,26 +1270,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2328, + "id": 2530, "name": "isWhitelisted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2252, - "src": "1540:13:14", + "referencedDeclaration": 2454, + "src": "1540:13:20", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 2330, + "id": 2532, "indexExpression": { "argumentTypes": null, - "id": 2329, + "id": 2531, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2322, - "src": "1554:7:14", + "referencedDeclaration": 2524, + "src": "1554:7:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1300,7 +1300,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1540:22:14", + "src": "1540:22:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1314,21 +1314,21 @@ "typeString": "bool" } ], - "id": 2327, + "id": 2529, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "1532:7:14", + "referencedDeclaration": 2601, + "src": "1532:7:20", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 2331, + "id": 2533, "isConstant": false, "isLValue": false, "isPure": false, @@ -1336,20 +1336,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1532:31:14", + "src": "1532:31:20", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2332, + "id": 2534, "nodeType": "ExpressionStatement", - "src": "1532:31:14" + "src": "1532:31:20" }, { "expression": { "argumentTypes": null, - "id": 2337, + "id": 2539, "isConstant": false, "isLValue": false, "isPure": false, @@ -1358,26 +1358,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2333, + "id": 2535, "name": "isWhitelisted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2252, - "src": "1573:13:14", + "referencedDeclaration": 2454, + "src": "1573:13:20", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 2335, + "id": 2537, "indexExpression": { "argumentTypes": null, - "id": 2334, + "id": 2536, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2322, - "src": "1587:7:14", + "referencedDeclaration": 2524, + "src": "1587:7:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1388,7 +1388,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1573:22:14", + "src": "1573:22:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1399,14 +1399,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "66616c7365", - "id": 2336, + "id": 2538, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "1598:5:14", + "src": "1598:5:20", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -1414,57 +1414,57 @@ }, "value": "false" }, - "src": "1573:30:14", + "src": "1573:30:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 2338, + "id": 2540, "nodeType": "ExpressionStatement", - "src": "1573:30:14" + "src": "1573:30:20" } ] }, "documentation": "@dev Allows to remove destination from whitelist. This can only be done via a Safe transaction.\n @param account Destination address.", - "id": 2340, + "id": 2542, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 2325, + "id": 2527, "modifierName": { "argumentTypes": null, - "id": 2324, + "id": 2526, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 601, - "src": "1507:10:14", + "referencedDeclaration": 730, + "src": "1507:10:20", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "1507:10:14" + "src": "1507:10:20" } ], "name": "removeFromWhitelist", "nodeType": "FunctionDefinition", "parameters": { - "id": 2323, + "id": 2525, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2322, + "id": 2524, "name": "account", "nodeType": "VariableDeclaration", - "scope": 2340, - "src": "1467:15:14", + "scope": 2542, + "src": "1467:15:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1472,10 +1472,10 @@ "typeString": "address" }, "typeName": { - "id": 2321, + "id": 2523, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1467:7:14", + "src": "1467:7:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1485,26 +1485,26 @@ "visibility": "internal" } ], - "src": "1466:17:14" + "src": "1466:17:20" }, "payable": false, "returnParameters": { - "id": 2326, + "id": 2528, "nodeType": "ParameterList", "parameters": [], - "src": "1522:0:14" + "src": "1522:0:20" }, - "scope": 2381, - "src": "1438:172:14", + "scope": 2583, + "src": "1438:172:20", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 2379, + "id": 2581, "nodeType": "Block", - "src": "1973:282:14", + "src": "1973:282:20", "statements": [ { "expression": { @@ -1517,18 +1517,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2356, + "id": 2558, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2396, - "src": "2110:3:14", + "referencedDeclaration": 2598, + "src": "2110:3:20", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 2357, + "id": 2559, "isConstant": false, "isLValue": false, "isPure": false, @@ -1536,7 +1536,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2110:10:14", + "src": "2110:10:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1555,14 +1555,14 @@ "arguments": [ { "argumentTypes": null, - "id": 2353, + "id": 2555, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 588, - "src": "2093:7:14", + "referencedDeclaration": 717, + "src": "2093:7:20", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$971", + "typeIdentifier": "t_contract$_ModuleManager_$1100", "typeString": "contract ModuleManager" } } @@ -1570,22 +1570,22 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_ModuleManager_$971", + "typeIdentifier": "t_contract$_ModuleManager_$1100", "typeString": "contract ModuleManager" } ], - "id": 2352, + "id": 2554, "name": "OwnerManager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1343, - "src": "2080:12:14", + "referencedDeclaration": 1472, + "src": "2080:12:20", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_OwnerManager_$1343_$", + "typeIdentifier": "t_type$_t_contract$_OwnerManager_$1472_$", "typeString": "type(contract OwnerManager)" } }, - "id": 2354, + "id": 2556, "isConstant": false, "isLValue": false, "isPure": false, @@ -1593,27 +1593,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2080:21:14", + "src": "2080:21:20", "typeDescriptions": { - "typeIdentifier": "t_contract$_OwnerManager_$1343", + "typeIdentifier": "t_contract$_OwnerManager_$1472", "typeString": "contract OwnerManager" } }, - "id": 2355, + "id": 2557, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "isOwner", "nodeType": "MemberAccess", - "referencedDeclaration": 1293, - "src": "2080:29:14", + "referencedDeclaration": 1422, + "src": "2080:29:20", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view external returns (bool)" } }, - "id": 2358, + "id": 2560, "isConstant": false, "isLValue": false, "isPure": false, @@ -1621,7 +1621,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2080:41:14", + "src": "2080:41:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1635,21 +1635,21 @@ "typeString": "bool" } ], - "id": 2351, + "id": 2553, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "2072:7:14", + "referencedDeclaration": 2601, + "src": "2072:7:20", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 2359, + "id": 2561, "isConstant": false, "isLValue": false, "isPure": false, @@ -1657,15 +1657,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2072:50:14", + "src": "2072:50:20", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2360, + "id": 2562, "nodeType": "ExpressionStatement", - "src": "2072:50:14" + "src": "2072:50:20" }, { "expression": { @@ -1675,26 +1675,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2362, + "id": 2564, "name": "isWhitelisted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2252, - "src": "2140:13:14", + "referencedDeclaration": 2454, + "src": "2140:13:20", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 2364, + "id": 2566, "indexExpression": { "argumentTypes": null, - "id": 2363, + "id": 2565, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2342, - "src": "2154:2:14", + "referencedDeclaration": 2544, + "src": "2154:2:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1705,7 +1705,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2140:17:14", + "src": "2140:17:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1719,21 +1719,21 @@ "typeString": "bool" } ], - "id": 2361, + "id": 2563, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "2132:7:14", + "referencedDeclaration": 2601, + "src": "2132:7:20", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 2365, + "id": 2567, "isConstant": false, "isLValue": false, "isPure": false, @@ -1741,15 +1741,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2132:26:14", + "src": "2132:26:20", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2366, + "id": 2568, "nodeType": "ExpressionStatement", - "src": "2132:26:14" + "src": "2132:26:20" }, { "expression": { @@ -1760,12 +1760,12 @@ "arguments": [ { "argumentTypes": null, - "id": 2370, + "id": 2572, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2342, - "src": "2210:2:14", + "referencedDeclaration": 2544, + "src": "2210:2:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1773,12 +1773,12 @@ }, { "argumentTypes": null, - "id": 2371, + "id": 2573, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2344, - "src": "2214:5:14", + "referencedDeclaration": 2546, + "src": "2214:5:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1786,12 +1786,12 @@ }, { "argumentTypes": null, - "id": 2372, + "id": 2574, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2346, - "src": "2221:4:14", + "referencedDeclaration": 2548, + "src": "2221:4:20", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -1803,32 +1803,32 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2373, + "id": 2575, "name": "Enum", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6, - "src": "2227:4:14", + "referencedDeclaration": 30, + "src": "2227:4:20", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Enum_$6_$", + "typeIdentifier": "t_type$_t_contract$_Enum_$30_$", "typeString": "type(contract Enum)" } }, - "id": 2374, + "id": 2576, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "Operation", "nodeType": "MemberAccess", - "referencedDeclaration": 5, - "src": "2227:14:14", + "referencedDeclaration": 29, + "src": "2227:14:20", "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_Operation_$5_$", + "typeIdentifier": "t_type$_t_enum$_Operation_$29_$", "typeString": "type(enum Enum.Operation)" } }, - "id": 2375, + "id": 2577, "isConstant": false, "isLValue": false, "isPure": true, @@ -1836,9 +1836,9 @@ "memberName": "Call", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2227:19:14", + "src": "2227:19:20", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } } @@ -1858,38 +1858,38 @@ "typeString": "bytes memory" }, { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } ], "expression": { "argumentTypes": null, - "id": 2368, + "id": 2570, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 588, - "src": "2176:7:14", + "referencedDeclaration": 717, + "src": "2176:7:20", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$971", + "typeIdentifier": "t_contract$_ModuleManager_$1100", "typeString": "contract ModuleManager" } }, - "id": 2369, + "id": 2571, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "execTransactionFromModule", "nodeType": "MemberAccess", - "referencedDeclaration": 798, - "src": "2176:33:14", + "referencedDeclaration": 927, + "src": "2176:33:20", "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$5_$returns$_t_bool_$", + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$returns$_t_bool_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation) external returns (bool)" } }, - "id": 2376, + "id": 2578, "isConstant": false, "isLValue": false, "isPure": false, @@ -1897,7 +1897,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2176:71:14", + "src": "2176:71:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1911,21 +1911,21 @@ "typeString": "bool" } ], - "id": 2367, + "id": 2569, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "2168:7:14", + "referencedDeclaration": 2601, + "src": "2168:7:20", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 2377, + "id": 2579, "isConstant": false, "isLValue": false, "isPure": false, @@ -1933,20 +1933,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2168:80:14", + "src": "2168:80:20", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2378, + "id": 2580, "nodeType": "ExpressionStatement", - "src": "2168:80:14" + "src": "2168:80:20" } ] }, "documentation": "@dev Returns if Safe transaction is to a whitelisted destination.\n @param to Whitelisted destination address.\n @param value Not checked.\n @param data Not checked.\n @return Returns if transaction can be executed.", - "id": 2380, + "id": 2582, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -1954,16 +1954,16 @@ "name": "executeWhitelisted", "nodeType": "FunctionDefinition", "parameters": { - "id": 2347, + "id": 2549, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2342, + "id": 2544, "name": "to", "nodeType": "VariableDeclaration", - "scope": 2380, - "src": "1892:10:14", + "scope": 2582, + "src": "1892:10:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1971,10 +1971,10 @@ "typeString": "address" }, "typeName": { - "id": 2341, + "id": 2543, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1892:7:14", + "src": "1892:7:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1985,11 +1985,11 @@ }, { "constant": false, - "id": 2344, + "id": 2546, "name": "value", "nodeType": "VariableDeclaration", - "scope": 2380, - "src": "1904:13:14", + "scope": 2582, + "src": "1904:13:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1997,10 +1997,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2343, + "id": 2545, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1904:7:14", + "src": "1904:7:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2011,11 +2011,11 @@ }, { "constant": false, - "id": 2346, + "id": 2548, "name": "data", "nodeType": "VariableDeclaration", - "scope": 2380, - "src": "1919:10:14", + "scope": 2582, + "src": "1919:10:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2023,10 +2023,10 @@ "typeString": "bytes" }, "typeName": { - "id": 2345, + "id": 2547, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "1919:5:14", + "src": "1919:5:20", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -2036,20 +2036,20 @@ "visibility": "internal" } ], - "src": "1891:39:14" + "src": "1891:39:20" }, "payable": false, "returnParameters": { - "id": 2350, + "id": 2552, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2349, + "id": 2551, "name": "", "nodeType": "VariableDeclaration", - "scope": 2380, - "src": "1963:4:14", + "scope": 2582, + "src": "1963:4:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2057,10 +2057,10 @@ "typeString": "bool" }, "typeName": { - "id": 2348, + "id": 2550, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "1963:4:14", + "src": "1963:4:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2070,82 +2070,82 @@ "visibility": "internal" } ], - "src": "1962:6:14" + "src": "1962:6:20" }, - "scope": 2381, - "src": "1864:391:14", + "scope": 2583, + "src": "1864:391:20", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" } ], - "scope": 2382, - "src": "289:1968:14" + "scope": 2584, + "src": "289:1968:20" } ], - "src": "0:2258:14" + "src": "0:2258:20" }, "legacyAST": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/modules/WhitelistModule.sol", "exportedSymbols": { "WhitelistModule": [ - 2381 + 2583 ] }, - "id": 2382, + "id": 2584, "nodeType": "SourceUnit", "nodes": [ { - "id": 2236, + "id": 2438, "literals": [ "solidity", "0.4", - ".23" + ".24" ], "nodeType": "PragmaDirective", - "src": "0:23:14" + "src": "0:23:20" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Enum.sol", "file": "../Enum.sol", - "id": 2237, + "id": 2439, "nodeType": "ImportDirective", - "scope": 2382, - "sourceUnit": 7, - "src": "24:21:14", + "scope": 2584, + "sourceUnit": 31, + "src": "24:21:20", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Module.sol", "file": "../Module.sol", - "id": 2238, + "id": 2440, "nodeType": "ImportDirective", - "scope": 2382, - "sourceUnit": 622, - "src": "46:23:14", + "scope": 2584, + "sourceUnit": 751, + "src": "46:23:20", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/ModuleManager.sol", "file": "../ModuleManager.sol", - "id": 2239, + "id": 2441, "nodeType": "ImportDirective", - "scope": 2382, - "sourceUnit": 972, - "src": "70:30:14", + "scope": 2584, + "sourceUnit": 1101, + "src": "70:30:20", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/OwnerManager.sol", "file": "../OwnerManager.sol", - "id": 2240, + "id": 2442, "nodeType": "ImportDirective", - "scope": 2382, - "sourceUnit": 1344, - "src": "101:29:14", + "scope": 2584, + "sourceUnit": 1473, + "src": "101:29:20", "symbolAliases": [], "unitAlias": "" }, @@ -2155,46 +2155,46 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 2241, + "id": 2443, "name": "Module", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 621, - "src": "317:6:14", + "referencedDeclaration": 750, + "src": "317:6:20", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$621", + "typeIdentifier": "t_contract$_Module_$750", "typeString": "contract Module" } }, - "id": 2242, + "id": 2444, "nodeType": "InheritanceSpecifier", - "src": "317:6:14" + "src": "317:6:20" } ], "contractDependencies": [ - 580, - 621, - 1359 + 652, + 750, + 1619 ], "contractKind": "contract", "documentation": "@title Whitelist Module - Allows to execute transactions to whitelisted addresses without confirmations.\n @author Stefan George - ", "fullyImplemented": true, - "id": 2381, + "id": 2583, "linearizedBaseContracts": [ - 2381, - 621, - 580, - 1359 + 2583, + 750, + 652, + 1619 ], "name": "WhitelistModule", "nodeType": "ContractDefinition", "nodes": [ { "constant": true, - "id": 2245, + "id": 2447, "name": "NAME", "nodeType": "VariableDeclaration", - "scope": 2381, - "src": "331:48:14", + "scope": 2583, + "src": "331:48:20", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2202,10 +2202,10 @@ "typeString": "string" }, "typeName": { - "id": 2243, + "id": 2445, "name": "string", "nodeType": "ElementaryTypeName", - "src": "331:6:14", + "src": "331:6:20", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -2214,14 +2214,14 @@ "value": { "argumentTypes": null, "hexValue": "57686974656c697374204d6f64756c65", - "id": 2244, + "id": 2446, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "361:18:14", + "src": "361:18:20", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_84d69d03a7c747e8eefe7cc2b9e87b566cfc57cc90e4ed88f03f9c9780b7d4e6", @@ -2233,11 +2233,11 @@ }, { "constant": true, - "id": 2248, + "id": 2450, "name": "VERSION", "nodeType": "VariableDeclaration", - "scope": 2381, - "src": "385:40:14", + "scope": 2583, + "src": "385:40:20", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2245,10 +2245,10 @@ "typeString": "string" }, "typeName": { - "id": 2246, + "id": 2448, "name": "string", "nodeType": "ElementaryTypeName", - "src": "385:6:14", + "src": "385:6:20", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -2257,14 +2257,14 @@ "value": { "argumentTypes": null, "hexValue": "302e302e31", - "id": 2247, + "id": 2449, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "418:7:14", + "src": "418:7:20", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_ae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc199163811885", @@ -2276,11 +2276,11 @@ }, { "constant": false, - "id": 2252, + "id": 2454, "name": "isWhitelisted", "nodeType": "VariableDeclaration", - "scope": 2381, - "src": "498:46:14", + "scope": 2583, + "src": "498:46:20", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2288,28 +2288,28 @@ "typeString": "mapping(address => bool)" }, "typeName": { - "id": 2251, + "id": 2453, "keyType": { - "id": 2249, + "id": 2451, "name": "address", "nodeType": "ElementaryTypeName", - "src": "507:7:14", + "src": "507:7:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", - "src": "498:25:14", + "src": "498:25:20", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" }, "valueType": { - "id": 2250, + "id": 2452, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "518:4:14", + "src": "518:4:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2321,9 +2321,9 @@ }, { "body": { - "id": 2292, + "id": 2494, "nodeType": "Block", - "src": "721:216:14", + "src": "721:216:20", "statements": [ { "expression": { @@ -2331,18 +2331,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 2258, + "id": 2460, "name": "setManager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 620, - "src": "731:10:14", + "referencedDeclaration": 749, + "src": "731:10:20", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()" } }, - "id": 2259, + "id": 2461, "isConstant": false, "isLValue": false, "isPure": false, @@ -2350,34 +2350,34 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "731:12:14", + "src": "731:12:20", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2260, + "id": 2462, "nodeType": "ExpressionStatement", - "src": "731:12:14" + "src": "731:12:20" }, { "body": { - "id": 2290, + "id": 2492, "nodeType": "Block", - "src": "799:132:14", + "src": "799:132:20", "statements": [ { "assignments": [ - 2273 + 2475 ], "declarations": [ { "constant": false, - "id": 2273, + "id": 2475, "name": "account", "nodeType": "VariableDeclaration", - "scope": 2293, - "src": "813:15:14", + "scope": 2495, + "src": "813:15:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2385,10 +2385,10 @@ "typeString": "address" }, "typeName": { - "id": 2272, + "id": 2474, "name": "address", "nodeType": "ElementaryTypeName", - "src": "813:7:14", + "src": "813:7:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2398,31 +2398,31 @@ "visibility": "internal" } ], - "id": 2277, + "id": 2479, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2274, + "id": 2476, "name": "accounts", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2255, - "src": "831:8:14", + "referencedDeclaration": 2457, + "src": "831:8:20", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 2276, + "id": 2478, "indexExpression": { "argumentTypes": null, - "id": 2275, + "id": 2477, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2262, - "src": "840:1:14", + "referencedDeclaration": 2464, + "src": "840:1:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2433,14 +2433,14 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "831:11:14", + "src": "831:11:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", - "src": "813:29:14" + "src": "813:29:20" }, { "expression": { @@ -2452,19 +2452,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 2281, + "id": 2483, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 2279, + "id": 2481, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2273, - "src": "864:7:14", + "referencedDeclaration": 2475, + "src": "864:7:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2475,14 +2475,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 2280, + "id": 2482, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "875:1:14", + "src": "875:1:20", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -2490,7 +2490,7 @@ }, "value": "0" }, - "src": "864:12:14", + "src": "864:12:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2504,21 +2504,21 @@ "typeString": "bool" } ], - "id": 2278, + "id": 2480, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "856:7:14", + "referencedDeclaration": 2601, + "src": "856:7:20", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 2282, + "id": 2484, "isConstant": false, "isLValue": false, "isPure": false, @@ -2526,20 +2526,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "856:21:14", + "src": "856:21:20", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2283, + "id": 2485, "nodeType": "ExpressionStatement", - "src": "856:21:14" + "src": "856:21:20" }, { "expression": { "argumentTypes": null, - "id": 2288, + "id": 2490, "isConstant": false, "isLValue": false, "isPure": false, @@ -2548,26 +2548,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2284, + "id": 2486, "name": "isWhitelisted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2252, - "src": "891:13:14", + "referencedDeclaration": 2454, + "src": "891:13:20", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 2286, + "id": 2488, "indexExpression": { "argumentTypes": null, - "id": 2285, + "id": 2487, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2273, - "src": "905:7:14", + "referencedDeclaration": 2475, + "src": "905:7:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2578,7 +2578,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "891:22:14", + "src": "891:22:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2589,14 +2589,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 2287, + "id": 2489, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "916:4:14", + "src": "916:4:20", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -2604,15 +2604,15 @@ }, "value": "true" }, - "src": "891:29:14", + "src": "891:29:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 2289, + "id": 2491, "nodeType": "ExpressionStatement", - "src": "891:29:14" + "src": "891:29:20" } ] }, @@ -2622,19 +2622,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 2268, + "id": 2470, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 2265, + "id": 2467, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2262, - "src": "773:1:14", + "referencedDeclaration": 2464, + "src": "773:1:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2646,18 +2646,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2266, + "id": 2468, "name": "accounts", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2255, - "src": "777:8:14", + "referencedDeclaration": 2457, + "src": "777:8:20", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 2267, + "id": 2469, "isConstant": false, "isLValue": false, "isPure": false, @@ -2665,31 +2665,31 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "777:15:14", + "src": "777:15:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "773:19:14", + "src": "773:19:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 2291, + "id": 2493, "initializationExpression": { "assignments": [ - 2262 + 2464 ], "declarations": [ { "constant": false, - "id": 2262, + "id": 2464, "name": "i", "nodeType": "VariableDeclaration", - "scope": 2293, - "src": "758:9:14", + "scope": 2495, + "src": "758:9:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2697,10 +2697,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2261, + "id": 2463, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "758:7:14", + "src": "758:7:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2710,18 +2710,18 @@ "visibility": "internal" } ], - "id": 2264, + "id": 2466, "initialValue": { "argumentTypes": null, "hexValue": "30", - "id": 2263, + "id": 2465, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "770:1:14", + "src": "770:1:20", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -2730,12 +2730,12 @@ "value": "0" }, "nodeType": "VariableDeclarationStatement", - "src": "758:13:14" + "src": "758:13:20" }, "loopExpression": { "expression": { "argumentTypes": null, - "id": 2270, + "id": 2472, "isConstant": false, "isLValue": false, "isPure": false, @@ -2743,15 +2743,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "794:3:14", + "src": "794:3:20", "subExpression": { "argumentTypes": null, - "id": 2269, + "id": 2471, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2262, - "src": "794:1:14", + "referencedDeclaration": 2464, + "src": "794:1:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2762,17 +2762,17 @@ "typeString": "uint256" } }, - "id": 2271, + "id": 2473, "nodeType": "ExpressionStatement", - "src": "794:3:14" + "src": "794:3:20" }, "nodeType": "ForStatement", - "src": "753:178:14" + "src": "753:178:20" } ] }, "documentation": "@dev Setup function sets initial storage of contract.\n @param accounts List of whitelisted accounts.", - "id": 2293, + "id": 2495, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -2780,16 +2780,16 @@ "name": "setup", "nodeType": "FunctionDefinition", "parameters": { - "id": 2256, + "id": 2458, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2255, + "id": 2457, "name": "accounts", "nodeType": "VariableDeclaration", - "scope": 2293, - "src": "682:18:14", + "scope": 2495, + "src": "682:18:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2798,19 +2798,19 @@ }, "typeName": { "baseType": { - "id": 2253, + "id": 2455, "name": "address", "nodeType": "ElementaryTypeName", - "src": "682:7:14", + "src": "682:7:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 2254, + "id": 2456, "length": null, "nodeType": "ArrayTypeName", - "src": "682:9:14", + "src": "682:9:20", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" @@ -2820,26 +2820,26 @@ "visibility": "internal" } ], - "src": "681:20:14" + "src": "681:20:20" }, "payable": false, "returnParameters": { - "id": 2257, + "id": 2459, "nodeType": "ParameterList", "parameters": [], - "src": "721:0:14" + "src": "721:0:20" }, - "scope": 2381, - "src": "667:270:14", + "scope": 2583, + "src": "667:270:20", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 2319, + "id": 2521, "nodeType": "Block", - "src": "1165:119:14", + "src": "1165:119:20", "statements": [ { "expression": { @@ -2851,19 +2851,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 2303, + "id": 2505, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 2301, + "id": 2503, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2295, - "src": "1183:7:14", + "referencedDeclaration": 2497, + "src": "1183:7:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2874,14 +2874,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 2302, + "id": 2504, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1194:1:14", + "src": "1194:1:20", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -2889,7 +2889,7 @@ }, "value": "0" }, - "src": "1183:12:14", + "src": "1183:12:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2903,21 +2903,21 @@ "typeString": "bool" } ], - "id": 2300, + "id": 2502, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "1175:7:14", + "referencedDeclaration": 2601, + "src": "1175:7:20", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 2304, + "id": 2506, "isConstant": false, "isLValue": false, "isPure": false, @@ -2925,15 +2925,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1175:21:14", + "src": "1175:21:20", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2305, + "id": 2507, "nodeType": "ExpressionStatement", - "src": "1175:21:14" + "src": "1175:21:20" }, { "expression": { @@ -2941,7 +2941,7 @@ "arguments": [ { "argumentTypes": null, - "id": 2310, + "id": 2512, "isConstant": false, "isLValue": false, "isPure": false, @@ -2949,31 +2949,31 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "1214:23:14", + "src": "1214:23:20", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2307, + "id": 2509, "name": "isWhitelisted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2252, - "src": "1215:13:14", + "referencedDeclaration": 2454, + "src": "1215:13:20", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 2309, + "id": 2511, "indexExpression": { "argumentTypes": null, - "id": 2308, + "id": 2510, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2295, - "src": "1229:7:14", + "referencedDeclaration": 2497, + "src": "1229:7:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2984,7 +2984,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1215:22:14", + "src": "1215:22:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3003,21 +3003,21 @@ "typeString": "bool" } ], - "id": 2306, + "id": 2508, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "1206:7:14", + "referencedDeclaration": 2601, + "src": "1206:7:20", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 2311, + "id": 2513, "isConstant": false, "isLValue": false, "isPure": false, @@ -3025,20 +3025,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1206:32:14", + "src": "1206:32:20", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2312, + "id": 2514, "nodeType": "ExpressionStatement", - "src": "1206:32:14" + "src": "1206:32:20" }, { "expression": { "argumentTypes": null, - "id": 2317, + "id": 2519, "isConstant": false, "isLValue": false, "isPure": false, @@ -3047,26 +3047,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2313, + "id": 2515, "name": "isWhitelisted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2252, - "src": "1248:13:14", + "referencedDeclaration": 2454, + "src": "1248:13:20", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 2315, + "id": 2517, "indexExpression": { "argumentTypes": null, - "id": 2314, + "id": 2516, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2295, - "src": "1262:7:14", + "referencedDeclaration": 2497, + "src": "1262:7:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3077,7 +3077,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1248:22:14", + "src": "1248:22:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3088,14 +3088,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 2316, + "id": 2518, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "1273:4:14", + "src": "1273:4:20", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -3103,57 +3103,57 @@ }, "value": "true" }, - "src": "1248:29:14", + "src": "1248:29:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 2318, + "id": 2520, "nodeType": "ExpressionStatement", - "src": "1248:29:14" + "src": "1248:29:20" } ] }, "documentation": "@dev Allows to add destination to whitelist. This can only be done via a Safe transaction.\n @param account Destination address.", - "id": 2320, + "id": 2522, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 2298, + "id": 2500, "modifierName": { "argumentTypes": null, - "id": 2297, + "id": 2499, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 601, - "src": "1150:10:14", + "referencedDeclaration": 730, + "src": "1150:10:20", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "1150:10:14" + "src": "1150:10:20" } ], "name": "addToWhitelist", "nodeType": "FunctionDefinition", "parameters": { - "id": 2296, + "id": 2498, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2295, + "id": 2497, "name": "account", "nodeType": "VariableDeclaration", - "scope": 2320, - "src": "1110:15:14", + "scope": 2522, + "src": "1110:15:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3161,10 +3161,10 @@ "typeString": "address" }, "typeName": { - "id": 2294, + "id": 2496, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1110:7:14", + "src": "1110:7:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3174,26 +3174,26 @@ "visibility": "internal" } ], - "src": "1109:17:14" + "src": "1109:17:20" }, "payable": false, "returnParameters": { - "id": 2299, + "id": 2501, "nodeType": "ParameterList", "parameters": [], - "src": "1165:0:14" + "src": "1165:0:20" }, - "scope": 2381, - "src": "1086:198:14", + "scope": 2583, + "src": "1086:198:20", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 2339, + "id": 2541, "nodeType": "Block", - "src": "1522:88:14", + "src": "1522:88:20", "statements": [ { "expression": { @@ -3203,26 +3203,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2328, + "id": 2530, "name": "isWhitelisted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2252, - "src": "1540:13:14", + "referencedDeclaration": 2454, + "src": "1540:13:20", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 2330, + "id": 2532, "indexExpression": { "argumentTypes": null, - "id": 2329, + "id": 2531, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2322, - "src": "1554:7:14", + "referencedDeclaration": 2524, + "src": "1554:7:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3233,7 +3233,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1540:22:14", + "src": "1540:22:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3247,21 +3247,21 @@ "typeString": "bool" } ], - "id": 2327, + "id": 2529, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "1532:7:14", + "referencedDeclaration": 2601, + "src": "1532:7:20", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 2331, + "id": 2533, "isConstant": false, "isLValue": false, "isPure": false, @@ -3269,20 +3269,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1532:31:14", + "src": "1532:31:20", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2332, + "id": 2534, "nodeType": "ExpressionStatement", - "src": "1532:31:14" + "src": "1532:31:20" }, { "expression": { "argumentTypes": null, - "id": 2337, + "id": 2539, "isConstant": false, "isLValue": false, "isPure": false, @@ -3291,26 +3291,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2333, + "id": 2535, "name": "isWhitelisted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2252, - "src": "1573:13:14", + "referencedDeclaration": 2454, + "src": "1573:13:20", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 2335, + "id": 2537, "indexExpression": { "argumentTypes": null, - "id": 2334, + "id": 2536, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2322, - "src": "1587:7:14", + "referencedDeclaration": 2524, + "src": "1587:7:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3321,7 +3321,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1573:22:14", + "src": "1573:22:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3332,14 +3332,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "66616c7365", - "id": 2336, + "id": 2538, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "1598:5:14", + "src": "1598:5:20", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -3347,57 +3347,57 @@ }, "value": "false" }, - "src": "1573:30:14", + "src": "1573:30:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 2338, + "id": 2540, "nodeType": "ExpressionStatement", - "src": "1573:30:14" + "src": "1573:30:20" } ] }, "documentation": "@dev Allows to remove destination from whitelist. This can only be done via a Safe transaction.\n @param account Destination address.", - "id": 2340, + "id": 2542, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 2325, + "id": 2527, "modifierName": { "argumentTypes": null, - "id": 2324, + "id": 2526, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 601, - "src": "1507:10:14", + "referencedDeclaration": 730, + "src": "1507:10:20", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "1507:10:14" + "src": "1507:10:20" } ], "name": "removeFromWhitelist", "nodeType": "FunctionDefinition", "parameters": { - "id": 2323, + "id": 2525, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2322, + "id": 2524, "name": "account", "nodeType": "VariableDeclaration", - "scope": 2340, - "src": "1467:15:14", + "scope": 2542, + "src": "1467:15:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3405,10 +3405,10 @@ "typeString": "address" }, "typeName": { - "id": 2321, + "id": 2523, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1467:7:14", + "src": "1467:7:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3418,26 +3418,26 @@ "visibility": "internal" } ], - "src": "1466:17:14" + "src": "1466:17:20" }, "payable": false, "returnParameters": { - "id": 2326, + "id": 2528, "nodeType": "ParameterList", "parameters": [], - "src": "1522:0:14" + "src": "1522:0:20" }, - "scope": 2381, - "src": "1438:172:14", + "scope": 2583, + "src": "1438:172:20", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 2379, + "id": 2581, "nodeType": "Block", - "src": "1973:282:14", + "src": "1973:282:20", "statements": [ { "expression": { @@ -3450,18 +3450,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2356, + "id": 2558, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2396, - "src": "2110:3:14", + "referencedDeclaration": 2598, + "src": "2110:3:20", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 2357, + "id": 2559, "isConstant": false, "isLValue": false, "isPure": false, @@ -3469,7 +3469,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2110:10:14", + "src": "2110:10:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3488,14 +3488,14 @@ "arguments": [ { "argumentTypes": null, - "id": 2353, + "id": 2555, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 588, - "src": "2093:7:14", + "referencedDeclaration": 717, + "src": "2093:7:20", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$971", + "typeIdentifier": "t_contract$_ModuleManager_$1100", "typeString": "contract ModuleManager" } } @@ -3503,22 +3503,22 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_ModuleManager_$971", + "typeIdentifier": "t_contract$_ModuleManager_$1100", "typeString": "contract ModuleManager" } ], - "id": 2352, + "id": 2554, "name": "OwnerManager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1343, - "src": "2080:12:14", + "referencedDeclaration": 1472, + "src": "2080:12:20", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_OwnerManager_$1343_$", + "typeIdentifier": "t_type$_t_contract$_OwnerManager_$1472_$", "typeString": "type(contract OwnerManager)" } }, - "id": 2354, + "id": 2556, "isConstant": false, "isLValue": false, "isPure": false, @@ -3526,27 +3526,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2080:21:14", + "src": "2080:21:20", "typeDescriptions": { - "typeIdentifier": "t_contract$_OwnerManager_$1343", + "typeIdentifier": "t_contract$_OwnerManager_$1472", "typeString": "contract OwnerManager" } }, - "id": 2355, + "id": 2557, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "isOwner", "nodeType": "MemberAccess", - "referencedDeclaration": 1293, - "src": "2080:29:14", + "referencedDeclaration": 1422, + "src": "2080:29:20", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view external returns (bool)" } }, - "id": 2358, + "id": 2560, "isConstant": false, "isLValue": false, "isPure": false, @@ -3554,7 +3554,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2080:41:14", + "src": "2080:41:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3568,21 +3568,21 @@ "typeString": "bool" } ], - "id": 2351, + "id": 2553, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "2072:7:14", + "referencedDeclaration": 2601, + "src": "2072:7:20", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 2359, + "id": 2561, "isConstant": false, "isLValue": false, "isPure": false, @@ -3590,15 +3590,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2072:50:14", + "src": "2072:50:20", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2360, + "id": 2562, "nodeType": "ExpressionStatement", - "src": "2072:50:14" + "src": "2072:50:20" }, { "expression": { @@ -3608,26 +3608,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2362, + "id": 2564, "name": "isWhitelisted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2252, - "src": "2140:13:14", + "referencedDeclaration": 2454, + "src": "2140:13:20", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 2364, + "id": 2566, "indexExpression": { "argumentTypes": null, - "id": 2363, + "id": 2565, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2342, - "src": "2154:2:14", + "referencedDeclaration": 2544, + "src": "2154:2:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3638,7 +3638,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2140:17:14", + "src": "2140:17:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3652,21 +3652,21 @@ "typeString": "bool" } ], - "id": 2361, + "id": 2563, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "2132:7:14", + "referencedDeclaration": 2601, + "src": "2132:7:20", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 2365, + "id": 2567, "isConstant": false, "isLValue": false, "isPure": false, @@ -3674,15 +3674,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2132:26:14", + "src": "2132:26:20", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2366, + "id": 2568, "nodeType": "ExpressionStatement", - "src": "2132:26:14" + "src": "2132:26:20" }, { "expression": { @@ -3693,12 +3693,12 @@ "arguments": [ { "argumentTypes": null, - "id": 2370, + "id": 2572, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2342, - "src": "2210:2:14", + "referencedDeclaration": 2544, + "src": "2210:2:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3706,12 +3706,12 @@ }, { "argumentTypes": null, - "id": 2371, + "id": 2573, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2344, - "src": "2214:5:14", + "referencedDeclaration": 2546, + "src": "2214:5:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3719,12 +3719,12 @@ }, { "argumentTypes": null, - "id": 2372, + "id": 2574, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2346, - "src": "2221:4:14", + "referencedDeclaration": 2548, + "src": "2221:4:20", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -3736,32 +3736,32 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2373, + "id": 2575, "name": "Enum", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6, - "src": "2227:4:14", + "referencedDeclaration": 30, + "src": "2227:4:20", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Enum_$6_$", + "typeIdentifier": "t_type$_t_contract$_Enum_$30_$", "typeString": "type(contract Enum)" } }, - "id": 2374, + "id": 2576, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "Operation", "nodeType": "MemberAccess", - "referencedDeclaration": 5, - "src": "2227:14:14", + "referencedDeclaration": 29, + "src": "2227:14:20", "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_Operation_$5_$", + "typeIdentifier": "t_type$_t_enum$_Operation_$29_$", "typeString": "type(enum Enum.Operation)" } }, - "id": 2375, + "id": 2577, "isConstant": false, "isLValue": false, "isPure": true, @@ -3769,9 +3769,9 @@ "memberName": "Call", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2227:19:14", + "src": "2227:19:20", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } } @@ -3791,38 +3791,38 @@ "typeString": "bytes memory" }, { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } ], "expression": { "argumentTypes": null, - "id": 2368, + "id": 2570, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 588, - "src": "2176:7:14", + "referencedDeclaration": 717, + "src": "2176:7:20", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$971", + "typeIdentifier": "t_contract$_ModuleManager_$1100", "typeString": "contract ModuleManager" } }, - "id": 2369, + "id": 2571, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "execTransactionFromModule", "nodeType": "MemberAccess", - "referencedDeclaration": 798, - "src": "2176:33:14", + "referencedDeclaration": 927, + "src": "2176:33:20", "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$5_$returns$_t_bool_$", + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$returns$_t_bool_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation) external returns (bool)" } }, - "id": 2376, + "id": 2578, "isConstant": false, "isLValue": false, "isPure": false, @@ -3830,7 +3830,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2176:71:14", + "src": "2176:71:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3844,21 +3844,21 @@ "typeString": "bool" } ], - "id": 2367, + "id": 2569, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "2168:7:14", + "referencedDeclaration": 2601, + "src": "2168:7:20", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 2377, + "id": 2579, "isConstant": false, "isLValue": false, "isPure": false, @@ -3866,20 +3866,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2168:80:14", + "src": "2168:80:20", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2378, + "id": 2580, "nodeType": "ExpressionStatement", - "src": "2168:80:14" + "src": "2168:80:20" } ] }, "documentation": "@dev Returns if Safe transaction is to a whitelisted destination.\n @param to Whitelisted destination address.\n @param value Not checked.\n @param data Not checked.\n @return Returns if transaction can be executed.", - "id": 2380, + "id": 2582, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -3887,16 +3887,16 @@ "name": "executeWhitelisted", "nodeType": "FunctionDefinition", "parameters": { - "id": 2347, + "id": 2549, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2342, + "id": 2544, "name": "to", "nodeType": "VariableDeclaration", - "scope": 2380, - "src": "1892:10:14", + "scope": 2582, + "src": "1892:10:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3904,10 +3904,10 @@ "typeString": "address" }, "typeName": { - "id": 2341, + "id": 2543, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1892:7:14", + "src": "1892:7:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3918,11 +3918,11 @@ }, { "constant": false, - "id": 2344, + "id": 2546, "name": "value", "nodeType": "VariableDeclaration", - "scope": 2380, - "src": "1904:13:14", + "scope": 2582, + "src": "1904:13:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3930,10 +3930,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2343, + "id": 2545, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1904:7:14", + "src": "1904:7:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3944,11 +3944,11 @@ }, { "constant": false, - "id": 2346, + "id": 2548, "name": "data", "nodeType": "VariableDeclaration", - "scope": 2380, - "src": "1919:10:14", + "scope": 2582, + "src": "1919:10:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3956,10 +3956,10 @@ "typeString": "bytes" }, "typeName": { - "id": 2345, + "id": 2547, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "1919:5:14", + "src": "1919:5:20", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -3969,20 +3969,20 @@ "visibility": "internal" } ], - "src": "1891:39:14" + "src": "1891:39:20" }, "payable": false, "returnParameters": { - "id": 2350, + "id": 2552, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2349, + "id": 2551, "name": "", "nodeType": "VariableDeclaration", - "scope": 2380, - "src": "1963:4:14", + "scope": 2582, + "src": "1963:4:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3990,10 +3990,10 @@ "typeString": "bool" }, "typeName": { - "id": 2348, + "id": 2550, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "1963:4:14", + "src": "1963:4:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4003,63 +4003,45 @@ "visibility": "internal" } ], - "src": "1962:6:14" + "src": "1962:6:20" }, - "scope": 2381, - "src": "1864:391:14", + "scope": 2583, + "src": "1864:391:20", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" } ], - "scope": 2382, - "src": "289:1968:14" + "scope": 2584, + "src": "289:1968:20" } ], - "src": "0:2258:14" + "src": "0:2258:20" }, "compiler": { "name": "solc", - "version": "0.4.23+commit.124ca40d.Emscripten.clang" + "version": "0.4.24+commit.e67f0147.Emscripten.clang" }, "networks": { "4": { "events": {}, "links": {}, - "address": "0x4e2dfbbb0f2b3225fdcdec7e05dcd92c92832fbd", - "transactionHash": "0x1b787034883e27a45b7b9a90b77670ef807701894a32904f573a60b666b3bd94" - }, - "1525950336085": { - "events": {}, - "links": {}, - "address": "0x15fd83fcf27f1726e692389be1b6e03fe7d56bb6", - "transactionHash": "0xc7f84311daf6a72740fe5822cd6007cec3ce1ff6aeaf454559f3e5f36c81cfd8" - }, - "1526283540628": { - "events": {}, - "links": {}, - "address": "0x536f677993e3eada3e17f2f42888ee777441fc3e", - "transactionHash": "0xc7f84311daf6a72740fe5822cd6007cec3ce1ff6aeaf454559f3e5f36c81cfd8" - }, - "1526478212260": { - "events": {}, - "links": {}, - "address": "0x5fde4f39a944859214e24311ad809166d35b2595", - "transactionHash": "0xe8e4d24799a8b74210c07b7faa44968bece2c73df692920f7af75181654e10f2" - }, - "1526973574996": { - "events": {}, - "links": {}, - "address": "0xba3ef9cf5be6c120fc0a642690f297e3bd239aa3", - "transactionHash": "0xe8e4d24799a8b74210c07b7faa44968bece2c73df692920f7af75181654e10f2" + "address": "0xc9ecedc3f0aa6ec4dc9b6a46bace62480a607617", + "transactionHash": "0xe39c78298afab44ba85b809e6c6d8050d841d420a98a45615afc3c69a7733e05" }, "1527316019334": { "events": {}, "links": {}, - "address": "0xa0a2c39cdfb6d7fb2f9b88990703f1b3c44ad5dc", - "transactionHash": "0xe8e4d24799a8b74210c07b7faa44968bece2c73df692920f7af75181654e10f2" + "address": "0xa0a04217f63fe5026bc20445af8ded0dffaccbc2", + "transactionHash": "0x10a442e0b3d7b44501719f123d9180db28c9206bfaf6163dfbfc2b987eb0e33f" + }, + "1527420696956": { + "events": {}, + "links": {}, + "address": "0x00d378002af4eccf8548c93aaf9d2b42d7d57239", + "transactionHash": "0x37296a82258f36484727e72673860ef6ed238e3754263014e3f3ff9a8997b64b" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-26T06:28:28.359Z" + "updatedAt": "2018-05-27T11:31:46.258Z" } \ No newline at end of file From 192eb9b909e539009eab1bf29dbd4d48eac97edb Mon Sep 17 00:00:00 2001 From: apanizo Date: Sun, 27 May 2018 13:35:20 +0200 Subject: [PATCH 05/14] WA-238 Updating Truffle to 4.1.11 --- package.json | 2 +- yarn.lock | 132 ++++++++++++++++----------------------------------- 2 files changed, 43 insertions(+), 91 deletions(-) diff --git a/package.json b/package.json index 586fc64a..576b330b 100644 --- a/package.json +++ b/package.json @@ -87,7 +87,7 @@ "storybook-host": "^4.1.5", "storybook-router": "^0.3.3", "style-loader": "^0.20.2", - "truffle": "4.1.8", + "truffle": "git://github.com/trufflesuite/truffle.git#develop", "truffle-contract": "^1.1.8", "truffle-solidity-loader": "0.0.8", "uglifyjs-webpack-plugin": "^1.2.2", diff --git a/yarn.lock b/yarn.lock index 0e8a027b..704bc4b6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3297,6 +3297,10 @@ commander@0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/commander/-/commander-0.6.1.tgz#fa68a14f6a945d54dbbe50d8cdb3320e9e3b1a06" +commander@2.11.0: + version "2.11.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.11.0.tgz#157152fd1e7a6c8d98a5b715cf376df928004563" + commander@2.14.x, commander@~2.14.1: version "2.14.1" resolved "https://registry.yarnpkg.com/commander/-/commander-2.14.1.tgz#2235123e37af8ca3c65df45b026dbd357b01b9aa" @@ -3305,12 +3309,6 @@ commander@2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.3.0.tgz#fd430e889832ec353b9acd1de217c11cb3eef873" -commander@2.9.0: - version "2.9.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4" - dependencies: - graceful-readlink ">= 1.0.0" - commander@^2.11.0, commander@^2.12.2, commander@^2.13.0, commander@^2.8.1, commander@^2.9.0: version "2.15.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.15.0.tgz#ad2a23a1c3b036e392469b8012cec6b33b4c1322" @@ -3757,19 +3755,13 @@ debug@2.2.0, debug@~2.2.0: dependencies: ms "0.7.1" -debug@2.6.8: - version "2.6.8" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.8.tgz#e731531ca2ede27d188222427da17821d68ff4fc" - dependencies: - ms "2.0.0" - debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.6, debug@^2.6.8, debug@^2.6.9: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" dependencies: ms "2.0.0" -debug@^3.0.1, debug@^3.1.0: +debug@3.1.0, debug@^3.0.1, debug@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" dependencies: @@ -3959,9 +3951,9 @@ diff@1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/diff/-/diff-1.4.0.tgz#7f28d2eb9ee7b15a97efd89ce63dcfdaa3ccbabf" -diff@3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/diff/-/diff-3.2.0.tgz#c9ce393a4b7cbd0b058a725c93df299027868ff9" +diff@3.3.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/diff/-/diff-3.3.1.tgz#aa8567a6eed03c531fc89d3f711cd0e5259dec75" diff@^3.2.0, diff@^3.3.1, diff@^3.5.0: version "3.5.0" @@ -5316,14 +5308,14 @@ glob@3.2.11: inherits "2" minimatch "0.3" -glob@7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8" +glob@7.1.2, glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.0, glob@^7.1.1, glob@^7.1.2, glob@~7.1.1, glob@~7.1.2: + version "7.1.2" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" dependencies: fs.realpath "^1.0.0" inflight "^1.0.4" inherits "2" - minimatch "^3.0.2" + minimatch "^3.0.4" once "^1.3.0" path-is-absolute "^1.0.0" @@ -5337,17 +5329,6 @@ glob@^6.0.1: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.0, glob@^7.1.1, glob@^7.1.2, glob@~7.1.1, glob@~7.1.2: - version "7.1.2" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - global-modules@1.0.0, global-modules@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-1.0.0.tgz#6d770f0eb523ac78164d72b5e71a8877265cc3ea" @@ -5455,10 +5436,6 @@ graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9, version "4.1.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" -"graceful-readlink@>= 1.0.0": - version "1.0.1" - resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725" - graphlib@^2.0.0: version "2.1.5" resolved "https://registry.yarnpkg.com/graphlib/-/graphlib-2.1.5.tgz#6afe1afcc5148555ec799e499056795bd6938c87" @@ -5471,6 +5448,10 @@ grouped-queue@^0.3.3: dependencies: lodash "^4.17.2" +growl@1.10.3: + version "1.10.3" + resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.3.tgz#1926ba90cf3edfe2adb4927f5880bc22c66c790f" + growl@1.9.2: version "1.9.2" resolved "https://registry.yarnpkg.com/growl/-/growl-1.9.2.tgz#0ea7743715db8d8de2c5ede1775e1b45ac85c02f" @@ -6898,7 +6879,7 @@ json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" -json3@3.3.2, json3@^3.3.2: +json3@^3.3.2: version "3.3.2" resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.2.tgz#3c0434743df93e2f5c42aee7b19bcb483575f4e1" @@ -7263,29 +7244,10 @@ lodash-es@^4.17.4, lodash-es@^4.17.5, lodash-es@^4.2.1: version "4.17.7" resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.7.tgz#db240a3252c3dd8360201ac9feef91ac977ea856" -lodash._baseassign@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz#8c38a099500f215ad09e59f1722fd0c52bfe0a4e" - dependencies: - lodash._basecopy "^3.0.0" - lodash.keys "^3.0.0" - -lodash._basecopy@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz#8da0e6a876cf344c0ad8a54882111dd3c5c7ca36" - -lodash._basecreate@^3.0.0: - version "3.0.3" - resolved "https://registry.yarnpkg.com/lodash._basecreate/-/lodash._basecreate-3.0.3.tgz#1bc661614daa7fc311b7d03bf16806a0213cf821" - lodash._getnative@^3.0.0: version "3.9.1" resolved "https://registry.yarnpkg.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz#570bc7dede46d61cdcde687d65d3eecbaa3aaff5" -lodash._isiterateecall@^3.0.0: - version "3.0.9" - resolved "https://registry.yarnpkg.com/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz#5203ad7ba425fae842460e696db9cf3e6aac057c" - lodash.assign@^4.0.3, lodash.assign@^4.0.6, lodash.assign@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-4.2.0.tgz#0d99f3ccd7a6d261d19bdaeb9245005d285808e7" @@ -7298,14 +7260,6 @@ lodash.clonedeep@^4.3.2: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" -lodash.create@3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/lodash.create/-/lodash.create-3.1.1.tgz#d7f2849f0dbda7e04682bb8cd72ab022461debe7" - dependencies: - lodash._baseassign "^3.0.0" - lodash._basecreate "^3.0.0" - lodash._isiterateecall "^3.0.0" - lodash.debounce@^4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" @@ -7326,7 +7280,7 @@ lodash.isplainobject@^4.0.6: version "4.0.6" resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb" -lodash.keys@^3.0.0, lodash.keys@^3.1.2: +lodash.keys@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-3.1.2.tgz#4dbc0472b156be50a0b286855d1bd0b0c656098a" dependencies: @@ -7806,22 +7760,20 @@ mocha@^2.3.3, mocha@^2.4.5: supports-color "1.2.0" to-iso-string "0.0.2" -mocha@^3.4.2: - version "3.5.3" - resolved "https://registry.yarnpkg.com/mocha/-/mocha-3.5.3.tgz#1e0480fe36d2da5858d1eb6acc38418b26eaa20d" +mocha@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-4.1.0.tgz#7d86cfbcf35cb829e2754c32e17355ec05338794" dependencies: browser-stdout "1.3.0" - commander "2.9.0" - debug "2.6.8" - diff "3.2.0" + commander "2.11.0" + debug "3.1.0" + diff "3.3.1" escape-string-regexp "1.0.5" - glob "7.1.1" - growl "1.9.2" + glob "7.1.2" + growl "1.10.3" he "1.1.1" - json3 "3.3.2" - lodash.create "3.1.1" mkdirp "0.5.1" - supports-color "3.1.2" + supports-color "4.4.0" module-deps@^4.0.8: version "4.1.1" @@ -10477,9 +10429,9 @@ sockjs@0.3.19: faye-websocket "^0.10.0" uuid "^3.0.1" -solc@0.4.23: - version "0.4.23" - resolved "https://registry.yarnpkg.com/solc/-/solc-0.4.23.tgz#54a0ff4015827b32fddb62c0a418b5247310a58e" +solc@0.4.24: + version "0.4.24" + resolved "https://registry.yarnpkg.com/solc/-/solc-0.4.24.tgz#354f14b269b38cbaa82a47d1ff151723502b954e" dependencies: fs-extra "^0.30.0" memorystream "^0.3.1" @@ -10926,11 +10878,11 @@ supports-color@1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-1.2.0.tgz#ff1ed1e61169d06b3cf2d588e188b18d8847e17e" -supports-color@3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.1.2.tgz#72a262894d9d408b956ca05ff37b2ed8a6e2a2d5" +supports-color@4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.4.0.tgz#883f7ddabc165142b2a61427f3352ded195d1a3e" dependencies: - has-flag "^1.0.0" + has-flag "^2.0.0" supports-color@^2.0.0: version "2.0.0" @@ -11262,14 +11214,6 @@ truffle-solidity-loader@0.0.8: truffle "^2.0.8" web3 "^0.17.0-alpha" -truffle@4.1.8: - version "4.1.8" - resolved "https://registry.yarnpkg.com/truffle/-/truffle-4.1.8.tgz#b0b9175e0270145999567a3f0a2337c914a23a9c" - dependencies: - mocha "^3.4.2" - original-require "^1.0.1" - solc "0.4.23" - truffle@^2.0.8: version "2.1.2" resolved "https://registry.yarnpkg.com/truffle/-/truffle-2.1.2.tgz#1ee61b9d785f6f2edb42801579e31f15b66c3746" @@ -11302,6 +11246,14 @@ truffle@^2.0.8: web3 "^0.16.0" yargs "^3.27.0" +"truffle@git://github.com/trufflesuite/truffle.git#develop": + version "4.1.11" + resolved "git://github.com/trufflesuite/truffle.git#2d722ce8df62271aece9dd3f652489d50c5f7b4b" + dependencies: + mocha "^4.1.0" + original-require "^1.0.1" + solc "0.4.24" + tryer@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/tryer/-/tryer-1.0.0.tgz#027b69fa823225e551cace3ef03b11f6ab37c1d7" From 194e51d20747b711e2e5f53d3ccf780bb3b2f909 Mon Sep 17 00:00:00 2001 From: apanizo Date: Sun, 27 May 2018 13:56:22 +0200 Subject: [PATCH 06/14] WA-238 Fix updating executed txs --- .../safe/component/AddTransaction/createTransactions.js | 2 +- .../safe/component/Transactions/processTransactions.js | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/routes/safe/component/AddTransaction/createTransactions.js b/src/routes/safe/component/AddTransaction/createTransactions.js index e5ee1544..c29be7d0 100644 --- a/src/routes/safe/component/AddTransaction/createTransactions.js +++ b/src/routes/safe/component/AddTransaction/createTransactions.js @@ -21,7 +21,7 @@ export const buildConfirmationsFrom = throw new Error('This safe has no owners') } - if (!owners.find((owner: Owner) => owner.get('address') === creator)) { + if (!owners.find((owner: Owner) => owner.get('address').toLowerCase() === creator.toLowerCase())) { throw new Error('The creator of the tx is not an owner') } diff --git a/src/routes/safe/component/Transactions/processTransactions.js b/src/routes/safe/component/Transactions/processTransactions.js index b39756f7..cffea581 100644 --- a/src/routes/safe/component/Transactions/processTransactions.js +++ b/src/routes/safe/component/Transactions/processTransactions.js @@ -3,7 +3,7 @@ import { List } from 'immutable' import { type Owner } from '~/routes/safe/store/model/owner' import { load, TX_KEY } from '~/utils/localStorage' import { type Confirmation, makeConfirmation } from '~/routes/safe/store/model/confirmation' -import { makeTransaction, type Transaction } from '~/routes/safe/store/model/transaction' +import { makeTransaction, type Transaction, type TransactionProps } from '~/routes/safe/store/model/transaction' import { getGnosisSafeContract } from '~/wallets/safeContracts' import { getWeb3 } from '~/wallets/getWeb3' import { EXECUTED_CONFIRMATION_HASH } from '~/routes/safe/component/AddTransaction/createTransactions' @@ -27,9 +27,9 @@ export const updateTransaction = ( const transactions = safeTransactions[safeAddress] const txsRecord = transactions ? List(transactions) : List([]) - const index = txsRecord.findIndex((trans: Transaction) => trans.get('nonce') === nonce) + const index = txsRecord.findIndex((trans: TransactionProps) => trans.nonce === nonce) - safeTransactions[safeAddress] = txsRecord.update(index, transaction) + safeTransactions[safeAddress] = txsRecord.remove(index).push(transaction) localStorage.setItem(TX_KEY, JSON.stringify(safeTransactions)) } From f917bb2abdc6a5b2b54b6015f9776b9ae7056b1d Mon Sep 17 00:00:00 2001 From: apanizo Date: Sun, 27 May 2018 14:12:29 +0200 Subject: [PATCH 07/14] WA-238 sameAddress helper for avoid case sensitive problems with eth addresses --- .../safe/component/AddTransaction/createTransactions.js | 7 ++++--- .../safe/component/Transactions/processTransactions.js | 8 +++++--- src/routes/safe/container/selector.js | 3 ++- src/routes/safeList/store/selectors/index.js | 8 ++------ src/wallets/ethAddresses.js | 3 +++ 5 files changed, 16 insertions(+), 13 deletions(-) create mode 100644 src/wallets/ethAddresses.js diff --git a/src/routes/safe/component/AddTransaction/createTransactions.js b/src/routes/safe/component/AddTransaction/createTransactions.js index c29be7d0..f13db071 100644 --- a/src/routes/safe/component/AddTransaction/createTransactions.js +++ b/src/routes/safe/component/AddTransaction/createTransactions.js @@ -7,6 +7,7 @@ import { makeTransaction, type Transaction, type TransactionProps } from '~/rout import { getGnosisSafeContract } from '~/wallets/safeContracts' import { getWeb3 } from '~/wallets/getWeb3' import { type Safe } from '~/routes/safe/store/model/safe' +import { sameAddress } from '~/wallets/ethAddresses' export const TX_NAME_PARAM = 'txName' export const TX_DESTINATION_PARAM = 'txDestination' @@ -21,14 +22,14 @@ export const buildConfirmationsFrom = throw new Error('This safe has no owners') } - if (!owners.find((owner: Owner) => owner.get('address').toLowerCase() === creator.toLowerCase())) { + if (!owners.find((owner: Owner) => sameAddress(owner.get('address'), creator))) { throw new Error('The creator of the tx is not an owner') } return owners.map((owner: Owner) => makeConfirmation({ owner, - status: owner.get('address') === creator, - hash: owner.get('address') === creator ? confirmationHash : undefined, + status: sameAddress(owner.get('address'), creator), + hash: sameAddress(owner.get('address'), creator) ? confirmationHash : undefined, })) } diff --git a/src/routes/safe/component/Transactions/processTransactions.js b/src/routes/safe/component/Transactions/processTransactions.js index cffea581..b84ebb53 100644 --- a/src/routes/safe/component/Transactions/processTransactions.js +++ b/src/routes/safe/component/Transactions/processTransactions.js @@ -6,6 +6,7 @@ import { type Confirmation, makeConfirmation } from '~/routes/safe/store/model/c import { makeTransaction, type Transaction, type TransactionProps } from '~/routes/safe/store/model/transaction' import { getGnosisSafeContract } from '~/wallets/safeContracts' import { getWeb3 } from '~/wallets/getWeb3' +import { sameAddress } from '~/wallets/ethAddresses' import { EXECUTED_CONFIRMATION_HASH } from '~/routes/safe/component/AddTransaction/createTransactions' export const updateTransaction = ( @@ -72,8 +73,9 @@ const execConfirmation = async ( const updateConfirmations = (confirmations: List, userAddress: string, txHash: string) => confirmations.map((confirmation: Confirmation) => { const owner: Owner = confirmation.get('owner') - const status: boolean = owner.get('address') === userAddress ? true : confirmation.get('status') - const hash: string = owner.get('address') === userAddress ? txHash : confirmation.get('hash') + const samePerson = sameAddress(owner.get('address'), userAddress) + const status: boolean = samePerson ? true : confirmation.get('status') + const hash: string = samePerson ? txHash : confirmation.get('hash') return makeConfirmation({ owner, status, hash }) }) @@ -91,7 +93,7 @@ export const processTransaction = async ( const confirmations = tx.get('confirmations') const userHasAlreadyConfirmed = confirmations.filter((confirmation: Confirmation) => { const ownerAddress = confirmation.get('owner').get('address') - const samePerson = ownerAddress === userAddress + const samePerson = sameAddress(ownerAddress, userAddress) return samePerson && confirmation.get('status') }).count() > 0 diff --git a/src/routes/safe/container/selector.js b/src/routes/safe/container/selector.js index 4e3fbf83..e3451292 100644 --- a/src/routes/safe/container/selector.js +++ b/src/routes/safe/container/selector.js @@ -6,6 +6,7 @@ import { providerNameSelector, userAccountSelector } from '~/wallets/store/selec import { type Safe } from '~/routes/safe/store/model/safe' import { type Owner } from '~/routes/safe/store/model/owner' import { type GlobalState } from '~/store/index' +import { sameAddress } from '~/wallets/ethAddresses' export type SelectorProps = { safe: SafeSelectorProps, @@ -30,7 +31,7 @@ export const grantedSelector: Selector = crea return false } - return owners.find((owner: Owner) => owner.get('address').toLocaleLowerCase() === userAccount.toLocaleLowerCase()) !== undefined + return owners.find((owner: Owner) => sameAddress(owner.get('address'), userAccount)) !== undefined }, ) diff --git a/src/routes/safeList/store/selectors/index.js b/src/routes/safeList/store/selectors/index.js index 93989643..40ed28b4 100644 --- a/src/routes/safeList/store/selectors/index.js +++ b/src/routes/safeList/store/selectors/index.js @@ -5,6 +5,7 @@ import { type GlobalState } from '~/store/index' import { type Safe } from '~/routes/safe/store/model/safe' import { userAccountSelector } from '~/wallets/store/selectors/index' import { type Owner } from '~/routes/safe/store/model/owner' +import { sameAddress } from '~/wallets/ethAddresses' export const safesMapSelector = (state: GlobalState): Map => state.safes const safesListSelector: Selector> = createSelector( @@ -17,10 +18,5 @@ export const safesByOwnerSelector: Selector> = creat safesListSelector, (userAddress: string, safes: List): List => safes.filter((safe: Safe) => - safe.owners.filter((owner: Owner) => { - const ownerLower = owner.get('address').toLowerCase() - const userLower = userAddress.toLowerCase() - - return ownerLower === userLower - }).count() > 0), + safe.owners.filter((owner: Owner) => sameAddress(owner.get('address'), userAddress)).count() > 0), ) diff --git a/src/wallets/ethAddresses.js b/src/wallets/ethAddresses.js new file mode 100644 index 00000000..ed301735 --- /dev/null +++ b/src/wallets/ethAddresses.js @@ -0,0 +1,3 @@ +// @flow +export const sameAddress = (firstAddress: string, secondAddress: string): boolean => + firstAddress.toLowerCase() === secondAddress.toLowerCase() From 071fee90560c5d138db2d8b8629063653adaeca9 Mon Sep 17 00:00:00 2001 From: apanizo Date: Sun, 27 May 2018 14:38:44 +0200 Subject: [PATCH 08/14] WA-238 Fix withdrawn smart contract function --- src/routes/safe/component/Withdrawn/withdrawn.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/routes/safe/component/Withdrawn/withdrawn.js b/src/routes/safe/component/Withdrawn/withdrawn.js index ad958b48..ad734311 100644 --- a/src/routes/safe/component/Withdrawn/withdrawn.js +++ b/src/routes/safe/component/Withdrawn/withdrawn.js @@ -43,9 +43,9 @@ const withdrawn = async (values: Object, safeAddress: string, userAccount: strin const value = web3.toWei(values[VALUE_PARAM], 'ether') return dailyLimitModule.executeDailyLimit( + 0, destination, value, - 0, { from: userAccount, gas: '5000000' }, ) } From 547f14474eebc10ed625b9d1937878da4d314095 Mon Sep 17 00:00:00 2001 From: apanizo Date: Mon, 28 May 2018 08:19:20 +0200 Subject: [PATCH 09/14] WA-238 Add new deployment of safe-contracts --- .../build/contracts/CreateAndAddModules.json | 364 +- .../build/contracts/DailyLimitModule.json | 2446 ++++--- .../contracts/DelegateConstructorProxy.json | 38 +- .../build/contracts/ERC20Token.json | 386 +- safe-contracts/build/contracts/Enum.json | 2 +- .../build/contracts/GnosisSafe.json | 68 +- .../contracts/GnosisSafePersonalEdition.json | 3294 ++++----- .../contracts/GnosisSafeTeamEdition.json | 2726 ++++---- .../build/contracts/MasterCopy.json | 284 +- .../build/contracts/Migrations.json | 364 +- safe-contracts/build/contracts/Module.json | 536 +- .../build/contracts/ModuleManager.json | 3816 ++++++----- safe-contracts/build/contracts/MultiSend.json | 96 +- .../build/contracts/OwnerManager.json | 5860 +++++++++-------- .../build/contracts/PayingProxy.json | 436 +- safe-contracts/build/contracts/Proxy.json | 436 +- .../build/contracts/ProxyFactory.json | 296 +- .../build/contracts/SelfAuthorized.json | 196 +- .../build/contracts/SocialRecoveryModule.json | 3170 ++++----- .../build/contracts/StateChannelModule.json | 2122 +++--- .../build/contracts/WhitelistModule.json | 1754 +++-- 21 files changed, 15577 insertions(+), 13113 deletions(-) diff --git a/safe-contracts/build/contracts/CreateAndAddModules.json b/safe-contracts/build/contracts/CreateAndAddModules.json index bd8cbc94..864dd5f3 100644 --- a/safe-contracts/build/contracts/CreateAndAddModules.json +++ b/safe-contracts/build/contracts/CreateAndAddModules.json @@ -34,8 +34,8 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50610275806100206000396000f30060806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806360df7f5814610051578063610b5925146100da575b600080fd5b34801561005d57600080fd5b506100d8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505061011d565b005b3480156100e657600080fd5b5061011b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610244565b005b600080600083519250600090505b8281101561023d5780840160200151818501604001604051600060208285858c5af4141561015857600080fd5b73ffffffffffffffffffffffffffffffffffffffff8151169450602080601f85010402602001840193505050503073ffffffffffffffffffffffffffffffffffffffff1663610b5925836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15801561022057600080fd5b505af1158015610234573d6000803e3d6000fd5b5050505061012b565b5050505050565b600080fd00a165627a7a723058208f7a97e938c15e3356168d53d19c7667249d0a3b35454b33fa8a258c0655d6ce0029", - "deployedBytecode": "0x60806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806360df7f5814610051578063610b5925146100da575b600080fd5b34801561005d57600080fd5b506100d8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505061011d565b005b3480156100e657600080fd5b5061011b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610244565b005b600080600083519250600090505b8281101561023d5780840160200151818501604001604051600060208285858c5af4141561015857600080fd5b73ffffffffffffffffffffffffffffffffffffffff8151169450602080601f85010402602001840193505050503073ffffffffffffffffffffffffffffffffffffffff1663610b5925836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15801561022057600080fd5b505af1158015610234573d6000803e3d6000fd5b5050505061012b565b5050505050565b600080fd00a165627a7a723058208f7a97e938c15e3356168d53d19c7667249d0a3b35454b33fa8a258c0655d6ce0029", + "bytecode": "0x608060405234801561001057600080fd5b50610275806100206000396000f30060806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806360df7f5814610051578063610b5925146100da575b600080fd5b34801561005d57600080fd5b506100d8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505061011d565b005b3480156100e657600080fd5b5061011b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610244565b005b600080600083519250600090505b8281101561023d5780840160200151818501604001604051600060208285858c5af4141561015857600080fd5b73ffffffffffffffffffffffffffffffffffffffff8151169450602080601f85010402602001840193505050503073ffffffffffffffffffffffffffffffffffffffff1663610b5925836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15801561022057600080fd5b505af1158015610234573d6000803e3d6000fd5b5050505061012b565b5050505050565b600080fd00a165627a7a723058206ac82068c55e1196d57483750406af3b357f1002ac108aaf06f242a92509ca780029", + "deployedBytecode": "0x60806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806360df7f5814610051578063610b5925146100da575b600080fd5b34801561005d57600080fd5b506100d8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505061011d565b005b3480156100e657600080fd5b5061011b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610244565b005b600080600083519250600090505b8281101561023d5780840160200151818501604001604051600060208285858c5af4141561015857600080fd5b73ffffffffffffffffffffffffffffffffffffffff8151169450602080601f85010402602001840193505050503073ffffffffffffffffffffffffffffffffffffffff1663610b5925836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15801561022057600080fd5b505af1158015610234573d6000803e3d6000fd5b5050505061012b565b5050505050565b600080fd00a165627a7a723058206ac82068c55e1196d57483750406af3b357f1002ac108aaf06f242a92509ca780029", "sourceMap": "245:1457:15:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;245:1457:15;;;;;;;", "deployedSourceMap": "245:1457:15:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;815:885;;8:9:-1;5:2;;;30:1;27;20:12;5:2;815:885:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;405:81;;8:9:-1;5:2;;;30:1;27;20:12;5:2;405:81:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;815:885;907:14;945:13;968:9;924:4;:11;907:28;;980:1;968:13;;991:703;1002:6;998:1;:10;991:703;;;1170:1;1164:4;1160:12;1154:4;1150:23;1144:30;1230:1;1224:4;1220:12;1214:4;1210:23;1271:4;1265:11;1378:1;1371:4;1363:6;1344:17;1331:11;1317:12;1312:3;1299:77;1296:84;1293:2;;;1393:1;1390;1383:12;1293:2;1443:42;1434:6;1428:13;1424:62;1414:72;;1624:4;1617;1610;1591:17;1587:28;1583:39;1579:50;1573:4;1569:61;1566:1;1562:69;1557:74;;1101:544;;;1658:4;:17;;;1676:6;1658:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1658:25:15;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1658:25:15;;;;991:703;;;815:885;;;;;:::o;405:81::-;471:8;;", "source": "pragma solidity 0.4.24;\nimport \"../Module.sol\";\n\n\n/// @title Create and Add Modules - Allows to create and add multiple module in one transaction.\n/// @author Stefan George - \n/// @author Richard Meissner - \ncontract CreateAndAddModules {\n\n /// @dev Function required to compile contract. Gnosis Safe function is called instead.\n /// @param module Not used.\n function enableModule(Module module)\n public\n {\n revert();\n }\n\n /// @dev Allows to create and add multiple module in one transaction.\n /// @param proxyFactory Module proxy factory contract.\n /// @param data Modules constructor payload. This is the data for each proxy factory call concatinated. (e.g. )\n function createAndAddModules(address proxyFactory, bytes data)\n public\n {\n uint256 length = data.length;\n Module module;\n uint256 i = 0;\n while (i < length) {\n // solium-disable-next-line security/no-inline-assembly\n assembly {\n let createBytesLength := mload(add(0x20, add(data, i)))\n let createBytes := add(0x40, add(data, i))\n\n let output := mload(0x40)\n if eq(delegatecall(gas, proxyFactory, createBytes, createBytesLength, output, 0x20), 0) { revert(0, 0) }\n module := and(mload(output), 0xffffffffffffffffffffffffffffffffffffffff)\n\n // Data is always padded to 32 bytes\n i := add(i, add(0x20, mul(div(add(createBytesLength, 0x1f), 0x20), 0x20)))\n }\n this.enableModule(module);\n }\n }\n}\n", @@ -44,14 +44,14 @@ "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/libraries/CreateAndAddModules.sol", "exportedSymbols": { "CreateAndAddModules": [ - 1730 + 1765 ] }, - "id": 1731, + "id": 1766, "nodeType": "SourceUnit", "nodes": [ { - "id": 1687, + "id": 1722, "literals": [ "solidity", "0.4", @@ -63,10 +63,10 @@ { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Module.sol", "file": "../Module.sol", - "id": 1688, + "id": 1723, "nodeType": "ImportDirective", - "scope": 1731, - "sourceUnit": 751, + "scope": 1766, + "sourceUnit": 763, "src": "24:23:15", "symbolAliases": [], "unitAlias": "" @@ -77,16 +77,16 @@ "contractKind": "contract", "documentation": "@title Create and Add Modules - Allows to create and add multiple module in one transaction.\n @author Stefan George - \n @author Richard Meissner - ", "fullyImplemented": true, - "id": 1730, + "id": 1765, "linearizedBaseContracts": [ - 1730 + 1765 ], "name": "CreateAndAddModules", "nodeType": "ContractDefinition", "nodes": [ { "body": { - "id": 1696, + "id": 1731, "nodeType": "Block", "src": "461:25:15", "statements": [ @@ -96,21 +96,21 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 1693, + "id": 1728, "name": "revert", "nodeType": "Identifier", "overloadedDeclarations": [ - 2603, - 2604 + 2659, + 2660 ], - "referencedDeclaration": 2603, + "referencedDeclaration": 2659, "src": "471:6:15", "typeDescriptions": { "typeIdentifier": "t_function_revert_pure$__$returns$__$", "typeString": "function () pure" } }, - "id": 1694, + "id": 1729, "isConstant": false, "isLValue": false, "isPure": false, @@ -124,14 +124,14 @@ "typeString": "tuple()" } }, - "id": 1695, + "id": 1730, "nodeType": "ExpressionStatement", "src": "471:8:15" } ] }, "documentation": "@dev Function required to compile contract. Gnosis Safe function is called instead.\n @param module Not used.", - "id": 1697, + "id": 1732, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -139,31 +139,31 @@ "name": "enableModule", "nodeType": "FunctionDefinition", "parameters": { - "id": 1691, + "id": 1726, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1690, + "id": 1725, "name": "module", "nodeType": "VariableDeclaration", - "scope": 1697, + "scope": 1732, "src": "427:13:15", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$750", + "typeIdentifier": "t_contract$_Module_$762", "typeString": "contract Module" }, "typeName": { "contractScope": null, - "id": 1689, + "id": 1724, "name": "Module", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 750, + "referencedDeclaration": 762, "src": "427:6:15", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$750", + "typeIdentifier": "t_contract$_Module_$762", "typeString": "contract Module" } }, @@ -175,12 +175,12 @@ }, "payable": false, "returnParameters": { - "id": 1692, + "id": 1727, "nodeType": "ParameterList", "parameters": [], "src": "461:0:15" }, - "scope": 1730, + "scope": 1765, "src": "405:81:15", "stateMutability": "nonpayable", "superFunction": null, @@ -188,21 +188,21 @@ }, { "body": { - "id": 1728, + "id": 1763, "nodeType": "Block", "src": "897:803:15", "statements": [ { "assignments": [ - 1705 + 1740 ], "declarations": [ { "constant": false, - "id": 1705, + "id": 1740, "name": "length", "nodeType": "VariableDeclaration", - "scope": 1729, + "scope": 1764, "src": "907:14:15", "stateVariable": false, "storageLocation": "default", @@ -211,7 +211,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1704, + "id": 1739, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "907:7:15", @@ -224,23 +224,23 @@ "visibility": "internal" } ], - "id": 1708, + "id": 1743, "initialValue": { "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1706, + "id": 1741, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1701, + "referencedDeclaration": 1736, "src": "924:4:15", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, - "id": 1707, + "id": 1742, "isConstant": false, "isLValue": false, "isPure": false, @@ -262,26 +262,26 @@ "declarations": [ { "constant": false, - "id": 1710, + "id": 1745, "name": "module", "nodeType": "VariableDeclaration", - "scope": 1729, + "scope": 1764, "src": "945:13:15", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$750", + "typeIdentifier": "t_contract$_Module_$762", "typeString": "contract Module" }, "typeName": { "contractScope": null, - "id": 1709, + "id": 1744, "name": "Module", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 750, + "referencedDeclaration": 762, "src": "945:6:15", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$750", + "typeIdentifier": "t_contract$_Module_$762", "typeString": "contract Module" } }, @@ -289,22 +289,22 @@ "visibility": "internal" } ], - "id": 1711, + "id": 1746, "initialValue": null, "nodeType": "VariableDeclarationStatement", "src": "945:13:15" }, { "assignments": [ - 1713 + 1748 ], "declarations": [ { "constant": false, - "id": 1713, + "id": 1748, "name": "i", "nodeType": "VariableDeclaration", - "scope": 1729, + "scope": 1764, "src": "968:9:15", "stateVariable": false, "storageLocation": "default", @@ -313,7 +313,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1712, + "id": 1747, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "968:7:15", @@ -326,11 +326,11 @@ "visibility": "internal" } ], - "id": 1715, + "id": 1750, "initialValue": { "argumentTypes": null, "hexValue": "30", - "id": 1714, + "id": 1749, "isConstant": false, "isLValue": false, "isPure": true, @@ -350,7 +350,7 @@ }, { "body": { - "id": 1726, + "id": 1761, "nodeType": "Block", "src": "1010:684:15", "statements": [ @@ -358,7 +358,7 @@ "externalReferences": [ { "module": { - "declaration": 1710, + "declaration": 1745, "isOffset": false, "isSlot": false, "src": "1414:6:15", @@ -367,7 +367,7 @@ }, { "data": { - "declaration": 1701, + "declaration": 1736, "isOffset": false, "isSlot": false, "src": "1164:4:15", @@ -376,7 +376,7 @@ }, { "i": { - "declaration": 1713, + "declaration": 1748, "isOffset": false, "isSlot": false, "src": "1170:1:15", @@ -385,7 +385,7 @@ }, { "data": { - "declaration": 1701, + "declaration": 1736, "isOffset": false, "isSlot": false, "src": "1224:4:15", @@ -394,7 +394,7 @@ }, { "i": { - "declaration": 1713, + "declaration": 1748, "isOffset": false, "isSlot": false, "src": "1230:1:15", @@ -403,7 +403,7 @@ }, { "i": { - "declaration": 1713, + "declaration": 1748, "isOffset": false, "isSlot": false, "src": "1557:1:15", @@ -412,7 +412,7 @@ }, { "proxyFactory": { - "declaration": 1699, + "declaration": 1734, "isOffset": false, "isSlot": false, "src": "1317:12:15", @@ -421,7 +421,7 @@ }, { "i": { - "declaration": 1713, + "declaration": 1748, "isOffset": false, "isSlot": false, "src": "1566:1:15", @@ -429,7 +429,7 @@ } } ], - "id": 1719, + "id": 1754, "nodeType": "InlineAssembly", "operations": "{\n let createBytesLength := mload(add(0x20, add(data, i)))\n let createBytes := add(0x40, add(data, i))\n let output := mload(0x40)\n if eq(delegatecall(gas(), proxyFactory, createBytes, createBytesLength, output, 0x20), 0)\n {\n revert(0, 0)\n }\n module := and(mload(output), 0xffffffffffffffffffffffffffffffffffffffff)\n i := add(i, add(0x20, mul(div(add(createBytesLength, 0x1f), 0x20), 0x20)))\n}", "src": "1092:570:15" @@ -440,14 +440,14 @@ "arguments": [ { "argumentTypes": null, - "id": 1723, + "id": 1758, "name": "module", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1710, + "referencedDeclaration": 1745, "src": "1676:6:15", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$750", + "typeIdentifier": "t_contract$_Module_$762", "typeString": "contract Module" } } @@ -455,38 +455,38 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_Module_$750", + "typeIdentifier": "t_contract$_Module_$762", "typeString": "contract Module" } ], "expression": { "argumentTypes": null, - "id": 1720, + "id": 1755, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2641, + "referencedDeclaration": 2697, "src": "1658:4:15", "typeDescriptions": { - "typeIdentifier": "t_contract$_CreateAndAddModules_$1730", + "typeIdentifier": "t_contract$_CreateAndAddModules_$1765", "typeString": "contract CreateAndAddModules" } }, - "id": 1722, + "id": 1757, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "enableModule", "nodeType": "MemberAccess", - "referencedDeclaration": 1697, + "referencedDeclaration": 1732, "src": "1658:17:15", "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_contract$_Module_$750_$returns$__$", + "typeIdentifier": "t_function_external_nonpayable$_t_contract$_Module_$762_$returns$__$", "typeString": "function (contract Module) external" } }, - "id": 1724, + "id": 1759, "isConstant": false, "isLValue": false, "isPure": false, @@ -500,7 +500,7 @@ "typeString": "tuple()" } }, - "id": 1725, + "id": 1760, "nodeType": "ExpressionStatement", "src": "1658:25:15" } @@ -512,18 +512,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1718, + "id": 1753, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1716, + "id": 1751, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1713, + "referencedDeclaration": 1748, "src": "998:1:15", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -534,11 +534,11 @@ "operator": "<", "rightExpression": { "argumentTypes": null, - "id": 1717, + "id": 1752, "name": "length", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1705, + "referencedDeclaration": 1740, "src": "1002:6:15", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -551,14 +551,14 @@ "typeString": "bool" } }, - "id": 1727, + "id": 1762, "nodeType": "WhileStatement", "src": "991:703:15" } ] }, "documentation": "@dev Allows to create and add multiple module in one transaction.\n @param proxyFactory Module proxy factory contract.\n @param data Modules constructor payload. This is the data for each proxy factory call concatinated. (e.g. )", - "id": 1729, + "id": 1764, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -566,15 +566,15 @@ "name": "createAndAddModules", "nodeType": "FunctionDefinition", "parameters": { - "id": 1702, + "id": 1737, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1699, + "id": 1734, "name": "proxyFactory", "nodeType": "VariableDeclaration", - "scope": 1729, + "scope": 1764, "src": "844:20:15", "stateVariable": false, "storageLocation": "default", @@ -583,7 +583,7 @@ "typeString": "address" }, "typeName": { - "id": 1698, + "id": 1733, "name": "address", "nodeType": "ElementaryTypeName", "src": "844:7:15", @@ -597,10 +597,10 @@ }, { "constant": false, - "id": 1701, + "id": 1736, "name": "data", "nodeType": "VariableDeclaration", - "scope": 1729, + "scope": 1764, "src": "866:10:15", "stateVariable": false, "storageLocation": "default", @@ -609,7 +609,7 @@ "typeString": "bytes" }, "typeName": { - "id": 1700, + "id": 1735, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "866:5:15", @@ -626,19 +626,19 @@ }, "payable": false, "returnParameters": { - "id": 1703, + "id": 1738, "nodeType": "ParameterList", "parameters": [], "src": "897:0:15" }, - "scope": 1730, + "scope": 1765, "src": "815:885:15", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" } ], - "scope": 1731, + "scope": 1766, "src": "245:1457:15" } ], @@ -648,14 +648,14 @@ "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/libraries/CreateAndAddModules.sol", "exportedSymbols": { "CreateAndAddModules": [ - 1730 + 1765 ] }, - "id": 1731, + "id": 1766, "nodeType": "SourceUnit", "nodes": [ { - "id": 1687, + "id": 1722, "literals": [ "solidity", "0.4", @@ -667,10 +667,10 @@ { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Module.sol", "file": "../Module.sol", - "id": 1688, + "id": 1723, "nodeType": "ImportDirective", - "scope": 1731, - "sourceUnit": 751, + "scope": 1766, + "sourceUnit": 763, "src": "24:23:15", "symbolAliases": [], "unitAlias": "" @@ -681,16 +681,16 @@ "contractKind": "contract", "documentation": "@title Create and Add Modules - Allows to create and add multiple module in one transaction.\n @author Stefan George - \n @author Richard Meissner - ", "fullyImplemented": true, - "id": 1730, + "id": 1765, "linearizedBaseContracts": [ - 1730 + 1765 ], "name": "CreateAndAddModules", "nodeType": "ContractDefinition", "nodes": [ { "body": { - "id": 1696, + "id": 1731, "nodeType": "Block", "src": "461:25:15", "statements": [ @@ -700,21 +700,21 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 1693, + "id": 1728, "name": "revert", "nodeType": "Identifier", "overloadedDeclarations": [ - 2603, - 2604 + 2659, + 2660 ], - "referencedDeclaration": 2603, + "referencedDeclaration": 2659, "src": "471:6:15", "typeDescriptions": { "typeIdentifier": "t_function_revert_pure$__$returns$__$", "typeString": "function () pure" } }, - "id": 1694, + "id": 1729, "isConstant": false, "isLValue": false, "isPure": false, @@ -728,14 +728,14 @@ "typeString": "tuple()" } }, - "id": 1695, + "id": 1730, "nodeType": "ExpressionStatement", "src": "471:8:15" } ] }, "documentation": "@dev Function required to compile contract. Gnosis Safe function is called instead.\n @param module Not used.", - "id": 1697, + "id": 1732, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -743,31 +743,31 @@ "name": "enableModule", "nodeType": "FunctionDefinition", "parameters": { - "id": 1691, + "id": 1726, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1690, + "id": 1725, "name": "module", "nodeType": "VariableDeclaration", - "scope": 1697, + "scope": 1732, "src": "427:13:15", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$750", + "typeIdentifier": "t_contract$_Module_$762", "typeString": "contract Module" }, "typeName": { "contractScope": null, - "id": 1689, + "id": 1724, "name": "Module", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 750, + "referencedDeclaration": 762, "src": "427:6:15", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$750", + "typeIdentifier": "t_contract$_Module_$762", "typeString": "contract Module" } }, @@ -779,12 +779,12 @@ }, "payable": false, "returnParameters": { - "id": 1692, + "id": 1727, "nodeType": "ParameterList", "parameters": [], "src": "461:0:15" }, - "scope": 1730, + "scope": 1765, "src": "405:81:15", "stateMutability": "nonpayable", "superFunction": null, @@ -792,21 +792,21 @@ }, { "body": { - "id": 1728, + "id": 1763, "nodeType": "Block", "src": "897:803:15", "statements": [ { "assignments": [ - 1705 + 1740 ], "declarations": [ { "constant": false, - "id": 1705, + "id": 1740, "name": "length", "nodeType": "VariableDeclaration", - "scope": 1729, + "scope": 1764, "src": "907:14:15", "stateVariable": false, "storageLocation": "default", @@ -815,7 +815,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1704, + "id": 1739, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "907:7:15", @@ -828,23 +828,23 @@ "visibility": "internal" } ], - "id": 1708, + "id": 1743, "initialValue": { "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1706, + "id": 1741, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1701, + "referencedDeclaration": 1736, "src": "924:4:15", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, - "id": 1707, + "id": 1742, "isConstant": false, "isLValue": false, "isPure": false, @@ -866,26 +866,26 @@ "declarations": [ { "constant": false, - "id": 1710, + "id": 1745, "name": "module", "nodeType": "VariableDeclaration", - "scope": 1729, + "scope": 1764, "src": "945:13:15", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$750", + "typeIdentifier": "t_contract$_Module_$762", "typeString": "contract Module" }, "typeName": { "contractScope": null, - "id": 1709, + "id": 1744, "name": "Module", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 750, + "referencedDeclaration": 762, "src": "945:6:15", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$750", + "typeIdentifier": "t_contract$_Module_$762", "typeString": "contract Module" } }, @@ -893,22 +893,22 @@ "visibility": "internal" } ], - "id": 1711, + "id": 1746, "initialValue": null, "nodeType": "VariableDeclarationStatement", "src": "945:13:15" }, { "assignments": [ - 1713 + 1748 ], "declarations": [ { "constant": false, - "id": 1713, + "id": 1748, "name": "i", "nodeType": "VariableDeclaration", - "scope": 1729, + "scope": 1764, "src": "968:9:15", "stateVariable": false, "storageLocation": "default", @@ -917,7 +917,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1712, + "id": 1747, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "968:7:15", @@ -930,11 +930,11 @@ "visibility": "internal" } ], - "id": 1715, + "id": 1750, "initialValue": { "argumentTypes": null, "hexValue": "30", - "id": 1714, + "id": 1749, "isConstant": false, "isLValue": false, "isPure": true, @@ -954,7 +954,7 @@ }, { "body": { - "id": 1726, + "id": 1761, "nodeType": "Block", "src": "1010:684:15", "statements": [ @@ -962,7 +962,7 @@ "externalReferences": [ { "module": { - "declaration": 1710, + "declaration": 1745, "isOffset": false, "isSlot": false, "src": "1414:6:15", @@ -971,7 +971,7 @@ }, { "data": { - "declaration": 1701, + "declaration": 1736, "isOffset": false, "isSlot": false, "src": "1164:4:15", @@ -980,7 +980,7 @@ }, { "i": { - "declaration": 1713, + "declaration": 1748, "isOffset": false, "isSlot": false, "src": "1170:1:15", @@ -989,7 +989,7 @@ }, { "data": { - "declaration": 1701, + "declaration": 1736, "isOffset": false, "isSlot": false, "src": "1224:4:15", @@ -998,7 +998,7 @@ }, { "i": { - "declaration": 1713, + "declaration": 1748, "isOffset": false, "isSlot": false, "src": "1230:1:15", @@ -1007,7 +1007,7 @@ }, { "i": { - "declaration": 1713, + "declaration": 1748, "isOffset": false, "isSlot": false, "src": "1557:1:15", @@ -1016,7 +1016,7 @@ }, { "proxyFactory": { - "declaration": 1699, + "declaration": 1734, "isOffset": false, "isSlot": false, "src": "1317:12:15", @@ -1025,7 +1025,7 @@ }, { "i": { - "declaration": 1713, + "declaration": 1748, "isOffset": false, "isSlot": false, "src": "1566:1:15", @@ -1033,7 +1033,7 @@ } } ], - "id": 1719, + "id": 1754, "nodeType": "InlineAssembly", "operations": "{\n let createBytesLength := mload(add(0x20, add(data, i)))\n let createBytes := add(0x40, add(data, i))\n let output := mload(0x40)\n if eq(delegatecall(gas(), proxyFactory, createBytes, createBytesLength, output, 0x20), 0)\n {\n revert(0, 0)\n }\n module := and(mload(output), 0xffffffffffffffffffffffffffffffffffffffff)\n i := add(i, add(0x20, mul(div(add(createBytesLength, 0x1f), 0x20), 0x20)))\n}", "src": "1092:570:15" @@ -1044,14 +1044,14 @@ "arguments": [ { "argumentTypes": null, - "id": 1723, + "id": 1758, "name": "module", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1710, + "referencedDeclaration": 1745, "src": "1676:6:15", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$750", + "typeIdentifier": "t_contract$_Module_$762", "typeString": "contract Module" } } @@ -1059,38 +1059,38 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_Module_$750", + "typeIdentifier": "t_contract$_Module_$762", "typeString": "contract Module" } ], "expression": { "argumentTypes": null, - "id": 1720, + "id": 1755, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2641, + "referencedDeclaration": 2697, "src": "1658:4:15", "typeDescriptions": { - "typeIdentifier": "t_contract$_CreateAndAddModules_$1730", + "typeIdentifier": "t_contract$_CreateAndAddModules_$1765", "typeString": "contract CreateAndAddModules" } }, - "id": 1722, + "id": 1757, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "enableModule", "nodeType": "MemberAccess", - "referencedDeclaration": 1697, + "referencedDeclaration": 1732, "src": "1658:17:15", "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_contract$_Module_$750_$returns$__$", + "typeIdentifier": "t_function_external_nonpayable$_t_contract$_Module_$762_$returns$__$", "typeString": "function (contract Module) external" } }, - "id": 1724, + "id": 1759, "isConstant": false, "isLValue": false, "isPure": false, @@ -1104,7 +1104,7 @@ "typeString": "tuple()" } }, - "id": 1725, + "id": 1760, "nodeType": "ExpressionStatement", "src": "1658:25:15" } @@ -1116,18 +1116,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1718, + "id": 1753, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1716, + "id": 1751, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1713, + "referencedDeclaration": 1748, "src": "998:1:15", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -1138,11 +1138,11 @@ "operator": "<", "rightExpression": { "argumentTypes": null, - "id": 1717, + "id": 1752, "name": "length", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1705, + "referencedDeclaration": 1740, "src": "1002:6:15", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -1155,14 +1155,14 @@ "typeString": "bool" } }, - "id": 1727, + "id": 1762, "nodeType": "WhileStatement", "src": "991:703:15" } ] }, "documentation": "@dev Allows to create and add multiple module in one transaction.\n @param proxyFactory Module proxy factory contract.\n @param data Modules constructor payload. This is the data for each proxy factory call concatinated. (e.g. )", - "id": 1729, + "id": 1764, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -1170,15 +1170,15 @@ "name": "createAndAddModules", "nodeType": "FunctionDefinition", "parameters": { - "id": 1702, + "id": 1737, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1699, + "id": 1734, "name": "proxyFactory", "nodeType": "VariableDeclaration", - "scope": 1729, + "scope": 1764, "src": "844:20:15", "stateVariable": false, "storageLocation": "default", @@ -1187,7 +1187,7 @@ "typeString": "address" }, "typeName": { - "id": 1698, + "id": 1733, "name": "address", "nodeType": "ElementaryTypeName", "src": "844:7:15", @@ -1201,10 +1201,10 @@ }, { "constant": false, - "id": 1701, + "id": 1736, "name": "data", "nodeType": "VariableDeclaration", - "scope": 1729, + "scope": 1764, "src": "866:10:15", "stateVariable": false, "storageLocation": "default", @@ -1213,7 +1213,7 @@ "typeString": "bytes" }, "typeName": { - "id": 1700, + "id": 1735, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "866:5:15", @@ -1230,19 +1230,19 @@ }, "payable": false, "returnParameters": { - "id": 1703, + "id": 1738, "nodeType": "ParameterList", "parameters": [], "src": "897:0:15" }, - "scope": 1730, + "scope": 1765, "src": "815:885:15", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" } ], - "scope": 1731, + "scope": 1766, "src": "245:1457:15" } ], @@ -1256,22 +1256,16 @@ "4": { "events": {}, "links": {}, - "address": "0x09938dc4aedf7573bea1acde27119525162caf86", - "transactionHash": "0x542ed496b9857fdad7870207cd3aa4de6ef756975a2f8f7b736e950aff77634e" - }, - "1527316019334": { - "events": {}, - "links": {}, - "address": "0x3476d04ef7a630db99177c493378763511783ecc", - "transactionHash": "0xa1f976aa57640d6f00fda50b5faa87e6395a25cb7ebcbdf43802038869c30189" + "address": "0x8cc5a7a73b667110937125a6cf5a18fa4c0a3bb3", + "transactionHash": "0x37f1199a37e28f38e2bd8fe42a375f5683f4392bd0bd7db914bd6e17e9f546c6" }, "1527420696956": { "events": {}, "links": {}, - "address": "0xa13c4a216f6f3441841401afecdad68223f47cce", - "transactionHash": "0x5c5a77c0584fd75a1a9b7f932710af48fa6803a794ac7c28f17aea45b28c4f26" + "address": "0x6b95b8c9f47aed9b889c543cec1f0b36cba22b95", + "transactionHash": "0x43e2d4d7da24019e4bcdd3c8e6a4a633566d5c2a7519d87f20ba1fc39b5c748c" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-27T11:31:46.256Z" + "updatedAt": "2018-05-28T06:08:59.481Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/DailyLimitModule.json b/safe-contracts/build/contracts/DailyLimitModule.json index aa13febb..d0fd0324 100644 --- a/safe-contracts/build/contracts/DailyLimitModule.json +++ b/safe-contracts/build/contracts/DailyLimitModule.json @@ -157,24 +157,24 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50610de9806100206000396000f300608060405260043610610099576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806328814f031461009e578063481c6a751461014757806363bae7c31461019e5780637de7edef1461020b57806381c5e03b1461024e578063a3f4df7e1461029b578063b74e452b1461032b578063d7bffc9214610356578063ffa1ad74146103bb575b600080fd5b3480156100aa57600080fd5b50610145600480360381019080803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929050505061044b565b005b34801561015357600080fd5b5061015c6104ea565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101aa57600080fd5b50610209600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610510565b005b34801561021757600080fd5b5061024c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a64565b005b34801561025a57600080fd5b50610299600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b29565b005b3480156102a757600080fd5b506102b0610bd0565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102f05780820151818401526020810190506102d5565b50505050905090810190601f16801561031d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561033757600080fd5b50610340610c09565b6040518082815260200191505060405180910390f35b34801561036257600080fd5b50610397600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610c21565b60405180848152602001838152602001828152602001935050505060405180910390f35b3480156103c757600080fd5b506103d0610c4b565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104105780820151818401526020810190506103f5565b50505050905090810190601f16801561043d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6000610455610c84565b600090505b82518110156104e557818181518110151561047157fe5b9060200190602002015160026000858481518110151561048d57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000181905550808060010191505061045a565b505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f54bf6e336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1580156105cf57600080fd5b505af11580156105e3573d6000803e3d6000fd5b505050506040513d60208110156105f957600080fd5b8101908080519060200190929190505050151561061557600080fd5b60008373ffffffffffffffffffffffffffffffffffffffff161415151561063b57600080fd5b60008211151561064a57600080fd5b6106548483610d0e565b151561065f57600080fd5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001016000828254019250508190555060008473ffffffffffffffffffffffffffffffffffffffff16141561080957600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a7848460006040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018060200183600281111561078757fe5b60ff168152602001828103825260008152602001602001945050505050602060405180830381600087803b1580156107be57600080fd5b505af11580156107d2573d6000803e3d6000fd5b505050506040513d60208110156107e857600080fd5b8101908080519060200190929190505050151561080457600080fd5b610a5e565b8282604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001925050506040516020818303038152906040527fa9059cbb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050509050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a78560008460006040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018060200183600281111561098857fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b838110156109c85780820151818401526020810190506109ad565b50505050905090810190601f1680156109f55780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610a1757600080fd5b505af1158015610a2b573d6000803e3d6000fd5b505050506040513d6020811015610a4157600080fd5b81019080805190602001909291905050501515610a5d57600080fd5b5b50505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610ac057600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515610ae657600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610b8557600080fd5b80600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055505050565b6040805190810160405280601281526020017f4461696c79204c696d6974204d6f64756c65000000000000000000000000000081525081565b60006201518042811515610c1957fe5b064203905090565b60026020528060005260406000206000915090508060000154908060010154908060020154905083565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610ccb57600080fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600080600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060020154610d5f610c09565b1115610d8057610d6d610c09565b8160020181905550600081600101819055505b80600001548382600101540111158015610da35750806001015483826001015401115b15610db15760019150610db6565b600091505b50929150505600a165627a7a723058204a6f633058d32a4c7f0a2649d73dd0a0048102b89b6ddd371abdbd004bd34c790029", - "deployedBytecode": "0x608060405260043610610099576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806328814f031461009e578063481c6a751461014757806363bae7c31461019e5780637de7edef1461020b57806381c5e03b1461024e578063a3f4df7e1461029b578063b74e452b1461032b578063d7bffc9214610356578063ffa1ad74146103bb575b600080fd5b3480156100aa57600080fd5b50610145600480360381019080803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929050505061044b565b005b34801561015357600080fd5b5061015c6104ea565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101aa57600080fd5b50610209600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610510565b005b34801561021757600080fd5b5061024c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a64565b005b34801561025a57600080fd5b50610299600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b29565b005b3480156102a757600080fd5b506102b0610bd0565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102f05780820151818401526020810190506102d5565b50505050905090810190601f16801561031d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561033757600080fd5b50610340610c09565b6040518082815260200191505060405180910390f35b34801561036257600080fd5b50610397600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610c21565b60405180848152602001838152602001828152602001935050505060405180910390f35b3480156103c757600080fd5b506103d0610c4b565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104105780820151818401526020810190506103f5565b50505050905090810190601f16801561043d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6000610455610c84565b600090505b82518110156104e557818181518110151561047157fe5b9060200190602002015160026000858481518110151561048d57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000181905550808060010191505061045a565b505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f54bf6e336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1580156105cf57600080fd5b505af11580156105e3573d6000803e3d6000fd5b505050506040513d60208110156105f957600080fd5b8101908080519060200190929190505050151561061557600080fd5b60008373ffffffffffffffffffffffffffffffffffffffff161415151561063b57600080fd5b60008211151561064a57600080fd5b6106548483610d0e565b151561065f57600080fd5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001016000828254019250508190555060008473ffffffffffffffffffffffffffffffffffffffff16141561080957600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a7848460006040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018060200183600281111561078757fe5b60ff168152602001828103825260008152602001602001945050505050602060405180830381600087803b1580156107be57600080fd5b505af11580156107d2573d6000803e3d6000fd5b505050506040513d60208110156107e857600080fd5b8101908080519060200190929190505050151561080457600080fd5b610a5e565b8282604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001925050506040516020818303038152906040527fa9059cbb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050509050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a78560008460006040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018060200183600281111561098857fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b838110156109c85780820151818401526020810190506109ad565b50505050905090810190601f1680156109f55780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610a1757600080fd5b505af1158015610a2b573d6000803e3d6000fd5b505050506040513d6020811015610a4157600080fd5b81019080805190602001909291905050501515610a5d57600080fd5b5b50505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610ac057600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515610ae657600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610b8557600080fd5b80600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055505050565b6040805190810160405280601281526020017f4461696c79204c696d6974204d6f64756c65000000000000000000000000000081525081565b60006201518042811515610c1957fe5b064203905090565b60026020528060005260406000206000915090508060000154908060010154908060020154905083565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610ccb57600080fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600080600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060020154610d5f610c09565b1115610d8057610d6d610c09565b8160020181905550600081600101819055505b80600001548382600101540111158015610da35750806001015483826001015401115b15610db15760019150610db6565b600091505b50929150505600a165627a7a723058204a6f633058d32a4c7f0a2649d73dd0a0048102b89b6ddd371abdbd004bd34c790029", - "sourceMap": "296:3082:17:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;296:3082:17;;;;;;;", - "deployedSourceMap": "296:3082:17:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;918:222;;8:9:-1;5:2;;;30:1;27;20:12;5:2;918:222:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;262:28:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;262:28:7;;;;;;;;;;;;;;;;;;;;;;;;;;;1890:784:17;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1890:784:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;626:208:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;626:208:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;1368:158:17;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1368:158:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;339:50;;8:9:-1;5:2;;;30:1;27;20:12;5:2;339:50:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;339:50:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3260:116;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3260:116:17;;;;;;;;;;;;;;;;;;;;;;;513:50;;8:9:-1;5:2;;;30:1;27;20:12;5:2;513:50:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;395:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;395:40:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;395:40:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;918:222;1031:9;1004:12;:10;:12::i;:::-;1043:1;1031:13;;1026:107;1050:6;:13;1046:1;:17;1026:107;;;1118:12;1131:1;1118:15;;;;;;;;;;;;;;;;;;1082:11;:22;1094:6;1101:1;1094:9;;;;;;;;;;;;;;;;;;1082:22;;;;;;;;;;;;;;;:33;;:51;;;;1065:3;;;;;;;1026:107;;;918:222;;;:::o;262:28:7:-;;;;;;;;;;;;;:::o;1890:784:17:-;2480:17;2087:7;;;;;;;;;;;2074:29;;;2104:10;2074:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2074:41:17;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2074:41:17;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2074:41:17;;;;;;;;;;;;;;;;2066:50;;;;;;;;2140:1;2134:2;:7;;;;2126:16;;;;;;;;2169:1;2160:6;:10;2152:19;;;;;;;;2253:27;2266:5;2273:6;2253:12;:27::i;:::-;2245:36;;;;;;;;2324:6;2291:11;:18;2303:5;2291:18;;;;;;;;;;;;;;;:29;;;:39;;;;;;;;;;;2353:1;2344:5;:10;;;2340:328;;;2378:7;;;;;;;;;;;:33;;;2412:2;2416:6;2428:19;2378:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2378:70:17;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2378:70:17;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2378:70:17;;;;;;;;;;;;;;;;2370:79;;;;;;;;2340:328;;;2553:2;2557:6;2500:64;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;2500:64:17;;;;;;;38:4:-1;29:7;25:18;67:10;61:17;96:58;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;2500:64:17;2480:84;;2586:7;;;;;;;;;;;:33;;;2620:5;2627:1;2630:4;2636:19;2586:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;2586:70:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2586:70:17;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2586:70:17;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2586:70:17;;;;;;;;;;;;;;;;2578:79;;;;;;;;2340:328;1890:784;;;;:::o;626:208:5:-;359:7:7;;;;;;;;;;;337:30;;:10;:30;;;329:39;;;;;;;;791:1:5;776:11;:16;;;;768:25;;;;;;;;816:11;803:10;;:24;;;;;;;;;;;;;;;;;;626:208;:::o;1368:158:17:-;359:7:7;;;;;;;;;;;337:30;;:10;:30;;;329:39;;;;;;;;1509:10:17;1477:11;:18;1489:5;1477:18;;;;;;;;;;;;;;;:29;;:42;;;;1368:158;;:::o;339:50::-;;;;;;;;;;;;;;;;;;;;:::o;3260:116::-;3322:4;3362:6;3356:3;:12;;;;;;;;3349:3;:20;3342:27;;3260:116;:::o;513:50::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;395:40::-;;;;;;;;;;;;;;;;;;;;:::o;392:268:7:-;606:1;594:7;;;;;;;;;;;586:21;;;578:30;;;;;;;;642:10;618:7;;:35;;;;;;;;;;;;;;;;;;392:268::o;2680:488:17:-;2767:4;2787:29;2819:11;:18;2831:5;2819:18;;;;;;;;;;;;;;;2787:50;;2861:10;:18;;;2851:7;:5;:7::i;:::-;:28;2847:126;;;2916:7;:5;:7::i;:::-;2895:10;:18;;:28;;;;2961:1;2937:10;:21;;:25;;;;2847:126;3023:10;:21;;;3013:6;2989:10;:21;;;:30;:55;;:125;;;;;3093:10;:21;;;3084:6;3060:10;:21;;;:30;:54;2989:125;2982:157;;;3135:4;3128:11;;;;2982:157;3156:5;3149:12;;2680:488;;;;;;:::o", - "source": "pragma solidity 0.4.24;\nimport \"../Module.sol\";\nimport \"../ModuleManager.sol\";\nimport \"../OwnerManager.sol\";\nimport \"../Enum.sol\";\n\n\n/// @title Daily Limit Module - Allows to transfer limited amounts of ERC20 tokens and Ether without confirmations.\n/// @author Stefan George - \ncontract DailyLimitModule is Module {\n\n string public constant NAME = \"Daily Limit Module\";\n string public constant VERSION = \"0.0.1\";\n\n // dailyLimits mapping maps token address to daily limit settings.\n mapping (address => DailyLimit) public dailyLimits;\n\n struct DailyLimit {\n uint256 dailyLimit;\n uint256 spentToday;\n uint256 lastDay;\n }\n\n /// @dev Setup function sets initial storage of contract.\n /// @param tokens List of token addresses. Ether is represented with address 0x0.\n /// @param _dailyLimits List of daily limits in smalles units (e.g. Wei for Ether).\n function setup(address[] tokens, uint256[] _dailyLimits)\n public\n {\n setManager();\n for (uint256 i = 0; i < tokens.length; i++)\n dailyLimits[tokens[i]].dailyLimit = _dailyLimits[i];\n }\n\n /// @dev Allows to update the daily limit for a specified token. This can only be done via a Safe transaction.\n /// @param token Token contract address.\n /// @param dailyLimit Daily limit in smallest token unit.\n function changeDailyLimit(address token, uint256 dailyLimit)\n public\n authorized\n {\n dailyLimits[token].dailyLimit = dailyLimit;\n }\n\n /// @dev Returns if Safe transaction is a valid daily limit transaction.\n /// @param token Address of the token that should be transfered (0 for Ether)\n /// @param to Address to which the tokens should be transfered\n /// @param amount Amount of tokens (or Ether) that should be transfered\n /// @return Returns if transaction can be executed.\n function executeDailyLimit(address token, address to, uint256 amount)\n public\n {\n // Only Safe owners are allowed to execute daily limit transactions.\n require(OwnerManager(manager).isOwner(msg.sender));\n require(to != 0);\n require(amount > 0);\n // Validate that transfer is not exceeding daily limit.\n require(isUnderLimit(token, amount));\n dailyLimits[token].spentToday += amount;\n if (token == 0) {\n require(manager.execTransactionFromModule(to, amount, \"\", Enum.Operation.Call));\n } else {\n bytes memory data = abi.encodeWithSignature(\"transfer(address,uint256)\", to, amount);\n require(manager.execTransactionFromModule(token, 0, data, Enum.Operation.Call));\n }\n }\n\n function isUnderLimit(address token, uint256 amount)\n internal\n returns (bool)\n {\n DailyLimit storage dailyLimit = dailyLimits[token];\n if (today() > dailyLimit.lastDay) {\n dailyLimit.lastDay = today();\n dailyLimit.spentToday = 0;\n }\n if ( dailyLimit.spentToday + amount <= dailyLimit.dailyLimit\n && dailyLimit.spentToday + amount > dailyLimit.spentToday)\n return true;\n return false;\n }\n\n /// @dev Returns last midnight as Unix timestamp.\n /// @return Unix timestamp.\n function today()\n public\n view\n returns (uint)\n {\n return now - (now % 1 days);\n }\n}\n", + "bytecode": "0x608060405234801561001057600080fd5b5061129b806100206000396000f300608060405260043610610099576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806328814f031461009e578063481c6a751461014757806363bae7c31461019e5780637de7edef1461020b57806381c5e03b1461024e578063a3f4df7e1461029b578063b74e452b1461032b578063d7bffc9214610356578063ffa1ad74146103bb575b600080fd5b3480156100aa57600080fd5b50610145600480360381019080803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929050505061044b565b005b34801561015357600080fd5b5061015c6104ea565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101aa57600080fd5b50610209600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610510565b005b34801561021757600080fd5b5061024c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d00565b005b34801561025a57600080fd5b50610299600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ee3565b005b3480156102a757600080fd5b506102b0611019565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102f05780820151818401526020810190506102d5565b50505050905090810190601f16801561031d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561033757600080fd5b50610340611052565b6040518082815260200191505060405180910390f35b34801561036257600080fd5b50610397600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061106a565b60405180848152602001838152602001828152602001935050505060405180910390f35b3480156103c757600080fd5b506103d0611094565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104105780820151818401526020810190506103f5565b50505050905090810190601f16801561043d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60006104556110cd565b600090505b82518110156104e557818181518110151561047157fe5b9060200190602002015160026000858481518110151561048d57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000181905550808060010191505061045a565b505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f54bf6e336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1580156105cf57600080fd5b505af11580156105e3573d6000803e3d6000fd5b505050506040513d60208110156105f957600080fd5b810190808051906020019092919050505015156106a4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f4d6574686f642063616e206f6e6c792062652063616c6c656420627920616e2081526020017f6f776e657200000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff1614151515610733576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f496e76616c696420746f20616464726573732070726f7669646564000000000081525060200191505060405180910390fd5b6000821115156107ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f496e76616c696420616d6f756e742070726f766964656400000000000000000081525060200191505060405180910390fd5b6107b584836111c0565b1515610829576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4461696c79206c696d697420686173206265656e20726561636865640000000081525060200191505060405180910390fd5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001016000828254019250508190555060008473ffffffffffffffffffffffffffffffffffffffff161415610a3c57600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a7848460006040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018060200183600281111561095157fe5b60ff168152602001828103825260008152602001602001945050505050602060405180830381600087803b15801561098857600080fd5b505af115801561099c573d6000803e3d6000fd5b505050506040513d60208110156109b257600080fd5b81019080805190602001909291905050501515610a37576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f436f756c64206e6f742065786563757465206574686572207472616e7366657281525060200191505060405180910390fd5b610cfa565b8282604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001925050506040516020818303038152906040527fa9059cbb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050509050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a78560008460006040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200180602001836002811115610bbb57fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b83811015610bfb578082015181840152602081019050610be0565b50505050905090810190601f168015610c285780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610c4a57600080fd5b505af1158015610c5e573d6000803e3d6000fd5b505050506040513d6020811015610c7457600080fd5b81019080805190602001909291905050501515610cf9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f436f756c64206e6f74206578656375746520746f6b656e207472616e7366657281525060200191505060405180910390fd5b5b50505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610deb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d206d81526020017f616e61676572000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515610ea0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f496e76616c6964206d617374657220636f707920616464726573732070726f7681526020017f696465640000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610fce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d206d81526020017f616e61676572000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b80600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055505050565b6040805190810160405280601281526020017f4461696c79204c696d6974204d6f64756c65000000000000000000000000000081525081565b6000620151804281151561106257fe5b064203905090565b60026020528060005260406000206000915090508060000154908060010154908060020154905083565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561117d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4d616e616765722068617320616c7265616479206265656e207365740000000081525060200191505060405180910390fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600080600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060020154611211611052565b11156112325761121f611052565b8160020181905550600081600101819055505b806000015483826001015401111580156112555750806001015483826001015401115b156112635760019150611268565b600091505b50929150505600a165627a7a7230582011d3a83d43b995685cbcea5e8d959f3e41fa3e354a8b40967776877052465e350029", + "deployedBytecode": "0x608060405260043610610099576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806328814f031461009e578063481c6a751461014757806363bae7c31461019e5780637de7edef1461020b57806381c5e03b1461024e578063a3f4df7e1461029b578063b74e452b1461032b578063d7bffc9214610356578063ffa1ad74146103bb575b600080fd5b3480156100aa57600080fd5b50610145600480360381019080803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929050505061044b565b005b34801561015357600080fd5b5061015c6104ea565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101aa57600080fd5b50610209600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610510565b005b34801561021757600080fd5b5061024c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d00565b005b34801561025a57600080fd5b50610299600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ee3565b005b3480156102a757600080fd5b506102b0611019565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102f05780820151818401526020810190506102d5565b50505050905090810190601f16801561031d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561033757600080fd5b50610340611052565b6040518082815260200191505060405180910390f35b34801561036257600080fd5b50610397600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061106a565b60405180848152602001838152602001828152602001935050505060405180910390f35b3480156103c757600080fd5b506103d0611094565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104105780820151818401526020810190506103f5565b50505050905090810190601f16801561043d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60006104556110cd565b600090505b82518110156104e557818181518110151561047157fe5b9060200190602002015160026000858481518110151561048d57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000181905550808060010191505061045a565b505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f54bf6e336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1580156105cf57600080fd5b505af11580156105e3573d6000803e3d6000fd5b505050506040513d60208110156105f957600080fd5b810190808051906020019092919050505015156106a4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f4d6574686f642063616e206f6e6c792062652063616c6c656420627920616e2081526020017f6f776e657200000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff1614151515610733576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f496e76616c696420746f20616464726573732070726f7669646564000000000081525060200191505060405180910390fd5b6000821115156107ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f496e76616c696420616d6f756e742070726f766964656400000000000000000081525060200191505060405180910390fd5b6107b584836111c0565b1515610829576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4461696c79206c696d697420686173206265656e20726561636865640000000081525060200191505060405180910390fd5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001016000828254019250508190555060008473ffffffffffffffffffffffffffffffffffffffff161415610a3c57600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a7848460006040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018060200183600281111561095157fe5b60ff168152602001828103825260008152602001602001945050505050602060405180830381600087803b15801561098857600080fd5b505af115801561099c573d6000803e3d6000fd5b505050506040513d60208110156109b257600080fd5b81019080805190602001909291905050501515610a37576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f436f756c64206e6f742065786563757465206574686572207472616e7366657281525060200191505060405180910390fd5b610cfa565b8282604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001925050506040516020818303038152906040527fa9059cbb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050509050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a78560008460006040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200180602001836002811115610bbb57fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b83811015610bfb578082015181840152602081019050610be0565b50505050905090810190601f168015610c285780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610c4a57600080fd5b505af1158015610c5e573d6000803e3d6000fd5b505050506040513d6020811015610c7457600080fd5b81019080805190602001909291905050501515610cf9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f436f756c64206e6f74206578656375746520746f6b656e207472616e7366657281525060200191505060405180910390fd5b5b50505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610deb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d206d81526020017f616e61676572000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515610ea0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f496e76616c6964206d617374657220636f707920616464726573732070726f7681526020017f696465640000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610fce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d206d81526020017f616e61676572000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b80600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055505050565b6040805190810160405280601281526020017f4461696c79204c696d6974204d6f64756c65000000000000000000000000000081525081565b6000620151804281151561106257fe5b064203905090565b60026020528060005260406000206000915090508060000154908060010154908060020154905083565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561117d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4d616e616765722068617320616c7265616479206265656e207365740000000081525060200191505060405180910390fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600080600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060020154611211611052565b11156112325761121f611052565b8160020181905550600081600101819055505b806000015483826001015401111580156112555750806001015483826001015401115b156112635760019150611268565b600091505b50929150505600a165627a7a7230582011d3a83d43b995685cbcea5e8d959f3e41fa3e354a8b40967776877052465e350029", + "sourceMap": "296:3285:17:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;296:3285:17;;;;;;;", + "deployedSourceMap": "296:3285:17:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;918:222;;8:9:-1;5:2;;;30:1;27;20:12;5:2;918:222:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;262:28:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;262:28:7;;;;;;;;;;;;;;;;;;;;;;;;;;;1890:987:17;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1890:987:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;626:248:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;626:248:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;1368:158:17;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1368:158:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;339:50;;8:9:-1;5:2;;;30:1;27;20:12;5:2;339:50:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;339:50:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3463:116;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3463:116:17;;;;;;;;;;;;;;;;;;;;;;;513:50;;8:9:-1;5:2;;;30:1;27;20:12;5:2;513:50:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;395:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;395:40:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;395:40:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;918:222;1031:9;1004:12;:10;:12::i;:::-;1043:1;1031:13;;1026:107;1050:6;:13;1046:1;:17;1026:107;;;1118:12;1131:1;1118:15;;;;;;;;;;;;;;;;;;1082:11;:22;1094:6;1101:1;1094:9;;;;;;;;;;;;;;;;;;1082:22;;;;;;;;;;;;;;;:33;;:51;;;;1065:3;;;;;;;1026:107;;;918:222;;;:::o;262:28:7:-;;;;;;;;;;;;;:::o;1890:987:17:-;2647:17;2087:7;;;;;;;;;;;2074:29;;;2104:10;2074:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2074:41:17;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2074:41:17;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2074:41:17;;;;;;;;;;;;;;;;2066:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2181:1;2175:2;:7;;;;2167:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2241:1;2232:6;:10;2224:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2352:27;2365:5;2372:6;2352:12;:27::i;:::-;2344:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2455:6;2422:11;:18;2434:5;2422:18;;;;;;;;;;;;;;;:29;;;:39;;;;;;;;;;;2484:1;2475:5;:10;;;2471:400;;;2509:7;;;;;;;;;;;:33;;;2543:2;2547:6;2559:19;2509:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2509:70:17;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2509:70:17;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2509:70:17;;;;;;;;;;;;;;;;2501:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2471:400;;;2720:2;2724:6;2667:64;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;2667:64:17;;;;;;;38:4:-1;29:7;25:18;67:10;61:17;96:58;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;2667:64:17;2647:84;;2753:7;;;;;;;;;;;:33;;;2787:5;2794:1;2797:4;2803:19;2753:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;2753:70:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2753:70:17;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2753:70:17;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2753:70:17;;;;;;;;;;;;;;;;2745:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2471:400;1890:987;;;;:::o;626:248:5:-;359:7:7;;;;;;;;;;;337:30;;:10;:30;;;329:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;791:1:5;776:11;:16;;;;768:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;856:11;843:10;;:24;;;;;;;;;;;;;;;;;;626:248;:::o;1368:158:17:-;359:7:7;;;;;;;;;;;337:30;;:10;:30;;;329:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1509:10:17;1477:11;:18;1489:5;1477:18;;;;;;;;;;;;;;;:29;;:42;;;;1368:158;;:::o;339:50::-;;;;;;;;;;;;;;;;;;;;:::o;3463:116::-;3525:4;3565:6;3559:3;:12;;;;;;;;3552:3;:20;3545:27;;3463:116;:::o;513:50::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;395:40::-;;;;;;;;;;;;;;;;;;;;:::o;434:300:7:-;648:1;636:7;;;;;;;;;;;628:21;;;620:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;716:10;692:7;;:35;;;;;;;;;;;;;;;;;;434:300::o;2883:488:17:-;2970:4;2990:29;3022:11;:18;3034:5;3022:18;;;;;;;;;;;;;;;2990:50;;3064:10;:18;;;3054:7;:5;:7::i;:::-;:28;3050:126;;;3119:7;:5;:7::i;:::-;3098:10;:18;;:28;;;;3164:1;3140:10;:21;;:25;;;;3050:126;3226:10;:21;;;3216:6;3192:10;:21;;;:30;:55;;:125;;;;;3296:10;:21;;;3287:6;3263:10;:21;;;:30;:54;3192:125;3185:157;;;3338:4;3331:11;;;;3185:157;3359:5;3352:12;;2883:488;;;;;;:::o", + "source": "pragma solidity 0.4.24;\nimport \"../Module.sol\";\nimport \"../ModuleManager.sol\";\nimport \"../OwnerManager.sol\";\nimport \"../Enum.sol\";\n\n\n/// @title Daily Limit Module - Allows to transfer limited amounts of ERC20 tokens and Ether without confirmations.\n/// @author Stefan George - \ncontract DailyLimitModule is Module {\n\n string public constant NAME = \"Daily Limit Module\";\n string public constant VERSION = \"0.0.1\";\n\n // dailyLimits mapping maps token address to daily limit settings.\n mapping (address => DailyLimit) public dailyLimits;\n\n struct DailyLimit {\n uint256 dailyLimit;\n uint256 spentToday;\n uint256 lastDay;\n }\n\n /// @dev Setup function sets initial storage of contract.\n /// @param tokens List of token addresses. Ether is represented with address 0x0.\n /// @param _dailyLimits List of daily limits in smalles units (e.g. Wei for Ether).\n function setup(address[] tokens, uint256[] _dailyLimits)\n public\n {\n setManager();\n for (uint256 i = 0; i < tokens.length; i++)\n dailyLimits[tokens[i]].dailyLimit = _dailyLimits[i];\n }\n\n /// @dev Allows to update the daily limit for a specified token. This can only be done via a Safe transaction.\n /// @param token Token contract address.\n /// @param dailyLimit Daily limit in smallest token unit.\n function changeDailyLimit(address token, uint256 dailyLimit)\n public\n authorized\n {\n dailyLimits[token].dailyLimit = dailyLimit;\n }\n\n /// @dev Returns if Safe transaction is a valid daily limit transaction.\n /// @param token Address of the token that should be transfered (0 for Ether)\n /// @param to Address to which the tokens should be transfered\n /// @param amount Amount of tokens (or Ether) that should be transfered\n /// @return Returns if transaction can be executed.\n function executeDailyLimit(address token, address to, uint256 amount)\n public\n {\n // Only Safe owners are allowed to execute daily limit transactions.\n require(OwnerManager(manager).isOwner(msg.sender), \"Method can only be called by an owner\");\n require(to != 0, \"Invalid to address provided\");\n require(amount > 0, \"Invalid amount provided\");\n // Validate that transfer is not exceeding daily limit.\n require(isUnderLimit(token, amount), \"Daily limit has been reached\");\n dailyLimits[token].spentToday += amount;\n if (token == 0) {\n require(manager.execTransactionFromModule(to, amount, \"\", Enum.Operation.Call), \"Could not execute ether transfer\");\n } else {\n bytes memory data = abi.encodeWithSignature(\"transfer(address,uint256)\", to, amount);\n require(manager.execTransactionFromModule(token, 0, data, Enum.Operation.Call), \"Could not execute token transfer\");\n }\n }\n\n function isUnderLimit(address token, uint256 amount)\n internal\n returns (bool)\n {\n DailyLimit storage dailyLimit = dailyLimits[token];\n if (today() > dailyLimit.lastDay) {\n dailyLimit.lastDay = today();\n dailyLimit.spentToday = 0;\n }\n if ( dailyLimit.spentToday + amount <= dailyLimit.dailyLimit\n && dailyLimit.spentToday + amount > dailyLimit.spentToday)\n return true;\n return false;\n }\n\n /// @dev Returns last midnight as Unix timestamp.\n /// @return Unix timestamp.\n function today()\n public\n view\n returns (uint)\n {\n return now - (now % 1 days);\n }\n}\n", "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/modules/DailyLimitModule.sol", "ast": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/modules/DailyLimitModule.sol", "exportedSymbols": { "DailyLimitModule": [ - 1973 + 2014 ] }, - "id": 1974, + "id": 2015, "nodeType": "SourceUnit", "nodes": [ { - "id": 1742, + "id": 1777, "literals": [ "solidity", "0.4", @@ -186,10 +186,10 @@ { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Module.sol", "file": "../Module.sol", - "id": 1743, + "id": 1778, "nodeType": "ImportDirective", - "scope": 1974, - "sourceUnit": 751, + "scope": 2015, + "sourceUnit": 763, "src": "24:23:17", "symbolAliases": [], "unitAlias": "" @@ -197,10 +197,10 @@ { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/ModuleManager.sol", "file": "../ModuleManager.sol", - "id": 1744, + "id": 1779, "nodeType": "ImportDirective", - "scope": 1974, - "sourceUnit": 1101, + "scope": 2015, + "sourceUnit": 1119, "src": "48:30:17", "symbolAliases": [], "unitAlias": "" @@ -208,10 +208,10 @@ { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/OwnerManager.sol", "file": "../OwnerManager.sol", - "id": 1745, + "id": 1780, "nodeType": "ImportDirective", - "scope": 1974, - "sourceUnit": 1473, + "scope": 2015, + "sourceUnit": 1505, "src": "79:29:17", "symbolAliases": [], "unitAlias": "" @@ -219,9 +219,9 @@ { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Enum.sol", "file": "../Enum.sol", - "id": 1746, + "id": 1781, "nodeType": "ImportDirective", - "scope": 1974, + "scope": 2015, "sourceUnit": 31, "src": "109:21:17", "symbolAliases": [], @@ -233,45 +233,45 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 1747, + "id": 1782, "name": "Module", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 750, + "referencedDeclaration": 762, "src": "325:6:17", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$750", + "typeIdentifier": "t_contract$_Module_$762", "typeString": "contract Module" } }, - "id": 1748, + "id": 1783, "nodeType": "InheritanceSpecifier", "src": "325:6:17" } ], "contractDependencies": [ - 652, - 750, - 1619 + 662, + 762, + 1654 ], "contractKind": "contract", "documentation": "@title Daily Limit Module - Allows to transfer limited amounts of ERC20 tokens and Ether without confirmations.\n @author Stefan George - ", "fullyImplemented": true, - "id": 1973, + "id": 2014, "linearizedBaseContracts": [ - 1973, - 750, - 652, - 1619 + 2014, + 762, + 662, + 1654 ], "name": "DailyLimitModule", "nodeType": "ContractDefinition", "nodes": [ { "constant": true, - "id": 1751, + "id": 1786, "name": "NAME", "nodeType": "VariableDeclaration", - "scope": 1973, + "scope": 2014, "src": "339:50:17", "stateVariable": true, "storageLocation": "default", @@ -280,7 +280,7 @@ "typeString": "string" }, "typeName": { - "id": 1749, + "id": 1784, "name": "string", "nodeType": "ElementaryTypeName", "src": "339:6:17", @@ -292,7 +292,7 @@ "value": { "argumentTypes": null, "hexValue": "4461696c79204c696d6974204d6f64756c65", - "id": 1750, + "id": 1785, "isConstant": false, "isLValue": false, "isPure": true, @@ -311,10 +311,10 @@ }, { "constant": true, - "id": 1754, + "id": 1789, "name": "VERSION", "nodeType": "VariableDeclaration", - "scope": 1973, + "scope": 2014, "src": "395:40:17", "stateVariable": true, "storageLocation": "default", @@ -323,7 +323,7 @@ "typeString": "string" }, "typeName": { - "id": 1752, + "id": 1787, "name": "string", "nodeType": "ElementaryTypeName", "src": "395:6:17", @@ -335,7 +335,7 @@ "value": { "argumentTypes": null, "hexValue": "302e302e31", - "id": 1753, + "id": 1788, "isConstant": false, "isLValue": false, "isPure": true, @@ -354,21 +354,21 @@ }, { "constant": false, - "id": 1758, + "id": 1793, "name": "dailyLimits", "nodeType": "VariableDeclaration", - "scope": 1973, + "scope": 2014, "src": "513:50:17", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1765_storage_$", + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1800_storage_$", "typeString": "mapping(address => struct DailyLimitModule.DailyLimit)" }, "typeName": { - "id": 1757, + "id": 1792, "keyType": { - "id": 1755, + "id": 1790, "name": "address", "nodeType": "ElementaryTypeName", "src": "522:7:17", @@ -380,18 +380,18 @@ "nodeType": "Mapping", "src": "513:31:17", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1765_storage_$", + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1800_storage_$", "typeString": "mapping(address => struct DailyLimitModule.DailyLimit)" }, "valueType": { "contractScope": null, - "id": 1756, + "id": 1791, "name": "DailyLimit", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1765, + "referencedDeclaration": 1800, "src": "533:10:17", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1765_storage_ptr", + "typeIdentifier": "t_struct$_DailyLimit_$1800_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit" } } @@ -401,14 +401,14 @@ }, { "canonicalName": "DailyLimitModule.DailyLimit", - "id": 1765, + "id": 1800, "members": [ { "constant": false, - "id": 1760, + "id": 1795, "name": "dailyLimit", "nodeType": "VariableDeclaration", - "scope": 1765, + "scope": 1800, "src": "598:18:17", "stateVariable": false, "storageLocation": "default", @@ -417,7 +417,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1759, + "id": 1794, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "598:7:17", @@ -431,10 +431,10 @@ }, { "constant": false, - "id": 1762, + "id": 1797, "name": "spentToday", "nodeType": "VariableDeclaration", - "scope": 1765, + "scope": 1800, "src": "626:18:17", "stateVariable": false, "storageLocation": "default", @@ -443,7 +443,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1761, + "id": 1796, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "626:7:17", @@ -457,10 +457,10 @@ }, { "constant": false, - "id": 1764, + "id": 1799, "name": "lastDay", "nodeType": "VariableDeclaration", - "scope": 1765, + "scope": 1800, "src": "654:15:17", "stateVariable": false, "storageLocation": "default", @@ -469,7 +469,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1763, + "id": 1798, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "654:7:17", @@ -484,13 +484,13 @@ ], "name": "DailyLimit", "nodeType": "StructDefinition", - "scope": 1973, + "scope": 2014, "src": "570:106:17", "visibility": "public" }, { "body": { - "id": 1800, + "id": 1835, "nodeType": "Block", "src": "994:146:17", "statements": [ @@ -500,18 +500,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 1774, + "id": 1809, "name": "setManager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 749, + "referencedDeclaration": 761, "src": "1004:10:17", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()" } }, - "id": 1775, + "id": 1810, "isConstant": false, "isLValue": false, "isPure": false, @@ -525,7 +525,7 @@ "typeString": "tuple()" } }, - "id": 1776, + "id": 1811, "nodeType": "ExpressionStatement", "src": "1004:12:17" }, @@ -533,7 +533,7 @@ "body": { "expression": { "argumentTypes": null, - "id": 1797, + "id": 1832, "isConstant": false, "isLValue": false, "isPure": false, @@ -544,41 +544,41 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1788, + "id": 1823, "name": "dailyLimits", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1758, + "referencedDeclaration": 1793, "src": "1082:11:17", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1765_storage_$", + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1800_storage_$", "typeString": "mapping(address => struct DailyLimitModule.DailyLimit storage ref)" } }, - "id": 1792, + "id": 1827, "indexExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1789, + "id": 1824, "name": "tokens", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1768, + "referencedDeclaration": 1803, "src": "1094:6:17", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 1791, + "id": 1826, "indexExpression": { "argumentTypes": null, - "id": 1790, + "id": 1825, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1778, + "referencedDeclaration": 1813, "src": "1101:1:17", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -603,18 +603,18 @@ "nodeType": "IndexAccess", "src": "1082:22:17", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1765_storage", + "typeIdentifier": "t_struct$_DailyLimit_$1800_storage", "typeString": "struct DailyLimitModule.DailyLimit storage ref" } }, - "id": 1793, + "id": 1828, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "dailyLimit", "nodeType": "MemberAccess", - "referencedDeclaration": 1760, + "referencedDeclaration": 1795, "src": "1082:33:17", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -627,25 +627,25 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1794, + "id": 1829, "name": "_dailyLimits", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1771, + "referencedDeclaration": 1806, "src": "1118:12:17", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[] memory" } }, - "id": 1796, + "id": 1831, "indexExpression": { "argumentTypes": null, - "id": 1795, + "id": 1830, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1778, + "referencedDeclaration": 1813, "src": "1131:1:17", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -669,7 +669,7 @@ "typeString": "uint256" } }, - "id": 1798, + "id": 1833, "nodeType": "ExpressionStatement", "src": "1082:51:17" }, @@ -679,18 +679,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1784, + "id": 1819, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1781, + "id": 1816, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1778, + "referencedDeclaration": 1813, "src": "1046:1:17", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -703,18 +703,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1782, + "id": 1817, "name": "tokens", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1768, + "referencedDeclaration": 1803, "src": "1050:6:17", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 1783, + "id": 1818, "isConstant": false, "isLValue": false, "isPure": false, @@ -734,18 +734,18 @@ "typeString": "bool" } }, - "id": 1799, + "id": 1834, "initializationExpression": { "assignments": [ - 1778 + 1813 ], "declarations": [ { "constant": false, - "id": 1778, + "id": 1813, "name": "i", "nodeType": "VariableDeclaration", - "scope": 1801, + "scope": 1836, "src": "1031:9:17", "stateVariable": false, "storageLocation": "default", @@ -754,7 +754,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1777, + "id": 1812, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1031:7:17", @@ -767,11 +767,11 @@ "visibility": "internal" } ], - "id": 1780, + "id": 1815, "initialValue": { "argumentTypes": null, "hexValue": "30", - "id": 1779, + "id": 1814, "isConstant": false, "isLValue": false, "isPure": true, @@ -792,7 +792,7 @@ "loopExpression": { "expression": { "argumentTypes": null, - "id": 1786, + "id": 1821, "isConstant": false, "isLValue": false, "isPure": false, @@ -803,11 +803,11 @@ "src": "1065:3:17", "subExpression": { "argumentTypes": null, - "id": 1785, + "id": 1820, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1778, + "referencedDeclaration": 1813, "src": "1065:1:17", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -819,7 +819,7 @@ "typeString": "uint256" } }, - "id": 1787, + "id": 1822, "nodeType": "ExpressionStatement", "src": "1065:3:17" }, @@ -829,7 +829,7 @@ ] }, "documentation": "@dev Setup function sets initial storage of contract.\n @param tokens List of token addresses. Ether is represented with address 0x0.\n @param _dailyLimits List of daily limits in smalles units (e.g. Wei for Ether).", - "id": 1801, + "id": 1836, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -837,15 +837,15 @@ "name": "setup", "nodeType": "FunctionDefinition", "parameters": { - "id": 1772, + "id": 1807, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1768, + "id": 1803, "name": "tokens", "nodeType": "VariableDeclaration", - "scope": 1801, + "scope": 1836, "src": "933:16:17", "stateVariable": false, "storageLocation": "default", @@ -855,7 +855,7 @@ }, "typeName": { "baseType": { - "id": 1766, + "id": 1801, "name": "address", "nodeType": "ElementaryTypeName", "src": "933:7:17", @@ -864,7 +864,7 @@ "typeString": "address" } }, - "id": 1767, + "id": 1802, "length": null, "nodeType": "ArrayTypeName", "src": "933:9:17", @@ -878,10 +878,10 @@ }, { "constant": false, - "id": 1771, + "id": 1806, "name": "_dailyLimits", "nodeType": "VariableDeclaration", - "scope": 1801, + "scope": 1836, "src": "951:22:17", "stateVariable": false, "storageLocation": "default", @@ -891,7 +891,7 @@ }, "typeName": { "baseType": { - "id": 1769, + "id": 1804, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "951:7:17", @@ -900,7 +900,7 @@ "typeString": "uint256" } }, - "id": 1770, + "id": 1805, "length": null, "nodeType": "ArrayTypeName", "src": "951:9:17", @@ -917,12 +917,12 @@ }, "payable": false, "returnParameters": { - "id": 1773, + "id": 1808, "nodeType": "ParameterList", "parameters": [], "src": "994:0:17" }, - "scope": 1973, + "scope": 2014, "src": "918:222:17", "stateMutability": "nonpayable", "superFunction": null, @@ -930,14 +930,14 @@ }, { "body": { - "id": 1817, + "id": 1852, "nodeType": "Block", "src": "1467:59:17", "statements": [ { "expression": { "argumentTypes": null, - "id": 1815, + "id": 1850, "isConstant": false, "isLValue": false, "isPure": false, @@ -948,25 +948,25 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1810, + "id": 1845, "name": "dailyLimits", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1758, + "referencedDeclaration": 1793, "src": "1477:11:17", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1765_storage_$", + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1800_storage_$", "typeString": "mapping(address => struct DailyLimitModule.DailyLimit storage ref)" } }, - "id": 1812, + "id": 1847, "indexExpression": { "argumentTypes": null, - "id": 1811, + "id": 1846, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1803, + "referencedDeclaration": 1838, "src": "1489:5:17", "typeDescriptions": { "typeIdentifier": "t_address", @@ -980,18 +980,18 @@ "nodeType": "IndexAccess", "src": "1477:18:17", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1765_storage", + "typeIdentifier": "t_struct$_DailyLimit_$1800_storage", "typeString": "struct DailyLimitModule.DailyLimit storage ref" } }, - "id": 1813, + "id": 1848, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "dailyLimit", "nodeType": "MemberAccess", - "referencedDeclaration": 1760, + "referencedDeclaration": 1795, "src": "1477:29:17", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -1002,11 +1002,11 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1814, + "id": 1849, "name": "dailyLimit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1805, + "referencedDeclaration": 1840, "src": "1509:10:17", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -1019,28 +1019,28 @@ "typeString": "uint256" } }, - "id": 1816, + "id": 1851, "nodeType": "ExpressionStatement", "src": "1477:42:17" } ] }, "documentation": "@dev Allows to update the daily limit for a specified token. This can only be done via a Safe transaction.\n @param token Token contract address.\n @param dailyLimit Daily limit in smallest token unit.", - "id": 1818, + "id": 1853, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 1808, + "id": 1843, "modifierName": { "argumentTypes": null, - "id": 1807, + "id": 1842, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 730, + "referencedDeclaration": 741, "src": "1452:10:17", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", @@ -1054,15 +1054,15 @@ "name": "changeDailyLimit", "nodeType": "FunctionDefinition", "parameters": { - "id": 1806, + "id": 1841, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1803, + "id": 1838, "name": "token", "nodeType": "VariableDeclaration", - "scope": 1818, + "scope": 1853, "src": "1394:13:17", "stateVariable": false, "storageLocation": "default", @@ -1071,7 +1071,7 @@ "typeString": "address" }, "typeName": { - "id": 1802, + "id": 1837, "name": "address", "nodeType": "ElementaryTypeName", "src": "1394:7:17", @@ -1085,10 +1085,10 @@ }, { "constant": false, - "id": 1805, + "id": 1840, "name": "dailyLimit", "nodeType": "VariableDeclaration", - "scope": 1818, + "scope": 1853, "src": "1409:18:17", "stateVariable": false, "storageLocation": "default", @@ -1097,7 +1097,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1804, + "id": 1839, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1409:7:17", @@ -1114,12 +1114,12 @@ }, "payable": false, "returnParameters": { - "id": 1809, + "id": 1844, "nodeType": "ParameterList", "parameters": [], "src": "1467:0:17" }, - "scope": 1973, + "scope": 2014, "src": "1368:158:17", "stateMutability": "nonpayable", "superFunction": null, @@ -1127,9 +1127,9 @@ }, { "body": { - "id": 1902, + "id": 1943, "nodeType": "Block", - "src": "1979:695:17", + "src": "1979:898:17", "statements": [ { "expression": { @@ -1142,18 +1142,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1832, + "id": 1867, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2598, + "referencedDeclaration": 2654, "src": "2104:3:17", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 1833, + "id": 1868, "isConstant": false, "isLValue": false, "isPure": false, @@ -1180,14 +1180,14 @@ "arguments": [ { "argumentTypes": null, - "id": 1829, + "id": 1864, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 717, + "referencedDeclaration": 727, "src": "2087:7:17", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1100", + "typeIdentifier": "t_contract$_ModuleManager_$1118", "typeString": "contract ModuleManager" } } @@ -1195,22 +1195,22 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_ModuleManager_$1100", + "typeIdentifier": "t_contract$_ModuleManager_$1118", "typeString": "contract ModuleManager" } ], - "id": 1828, + "id": 1863, "name": "OwnerManager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1472, + "referencedDeclaration": 1504, "src": "2074:12:17", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_OwnerManager_$1472_$", + "typeIdentifier": "t_type$_t_contract$_OwnerManager_$1504_$", "typeString": "type(contract OwnerManager)" } }, - "id": 1830, + "id": 1865, "isConstant": false, "isLValue": false, "isPure": false, @@ -1220,25 +1220,25 @@ "nodeType": "FunctionCall", "src": "2074:21:17", "typeDescriptions": { - "typeIdentifier": "t_contract$_OwnerManager_$1472", + "typeIdentifier": "t_contract$_OwnerManager_$1504", "typeString": "contract OwnerManager" } }, - "id": 1831, + "id": 1866, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "isOwner", "nodeType": "MemberAccess", - "referencedDeclaration": 1422, + "referencedDeclaration": 1454, "src": "2074:29:17", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view external returns (bool)" } }, - "id": 1834, + "id": 1869, "isConstant": false, "isLValue": false, "isPure": false, @@ -1251,6 +1251,24 @@ "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "4d6574686f642063616e206f6e6c792062652063616c6c656420627920616e206f776e6572", + "id": 1870, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2117:39:17", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_4df072353ff501a1071e1cc3e2eb3ee0ebb21a35321efe90c0960bf2f4356640", + "typeString": "literal_string \"Method can only be called by an owner\"" + }, + "value": "Method can only be called by an owner" } ], "expression": { @@ -1258,23 +1276,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_4df072353ff501a1071e1cc3e2eb3ee0ebb21a35321efe90c0960bf2f4356640", + "typeString": "literal_string \"Method can only be called by an owner\"" } ], - "id": 1827, + "id": 1862, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, + "referencedDeclaration": 2658, "src": "2066:7:17", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 1835, + "id": 1871, "isConstant": false, "isLValue": false, "isPure": false, @@ -1282,15 +1304,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2066:50:17", + "src": "2066:91:17", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1836, + "id": 1872, "nodeType": "ExpressionStatement", - "src": "2066:50:17" + "src": "2066:91:17" }, { "expression": { @@ -1302,19 +1324,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1840, + "id": 1876, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1838, + "id": 1874, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1822, - "src": "2134:2:17", + "referencedDeclaration": 1857, + "src": "2175:2:17", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1325,14 +1347,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1839, + "id": 1875, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2140:1:17", + "src": "2181:1:17", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -1340,11 +1362,29 @@ }, "value": "0" }, - "src": "2134:7:17", + "src": "2175:7:17", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "496e76616c696420746f20616464726573732070726f7669646564", + "id": 1877, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2184:29:17", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c5adba0692e08f8080ea3ec2bf95727d181df9c72d0fc6db8f77e3703d9523f1", + "typeString": "literal_string \"Invalid to address provided\"" + }, + "value": "Invalid to address provided" } ], "expression": { @@ -1352,23 +1392,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_c5adba0692e08f8080ea3ec2bf95727d181df9c72d0fc6db8f77e3703d9523f1", + "typeString": "literal_string \"Invalid to address provided\"" } ], - "id": 1837, + "id": 1873, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "2126:7:17", + "referencedDeclaration": 2658, + "src": "2167:7:17", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 1841, + "id": 1878, "isConstant": false, "isLValue": false, "isPure": false, @@ -1376,15 +1420,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2126:16:17", + "src": "2167:47:17", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1842, + "id": 1879, "nodeType": "ExpressionStatement", - "src": "2126:16:17" + "src": "2167:47:17" }, { "expression": { @@ -1396,19 +1440,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1846, + "id": 1883, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1844, + "id": 1881, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1824, - "src": "2160:6:17", + "referencedDeclaration": 1859, + "src": "2232:6:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1419,14 +1463,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1845, + "id": 1882, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2169:1:17", + "src": "2241:1:17", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -1434,11 +1478,29 @@ }, "value": "0" }, - "src": "2160:10:17", + "src": "2232:10:17", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "496e76616c696420616d6f756e742070726f7669646564", + "id": 1884, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2244:25:17", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_991bec80688b0edba4751e32429f6879002de57199ff2c6b5bf0742d348ba58f", + "typeString": "literal_string \"Invalid amount provided\"" + }, + "value": "Invalid amount provided" } ], "expression": { @@ -1446,23 +1508,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_991bec80688b0edba4751e32429f6879002de57199ff2c6b5bf0742d348ba58f", + "typeString": "literal_string \"Invalid amount provided\"" } ], - "id": 1843, + "id": 1880, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "2152:7:17", + "referencedDeclaration": 2658, + "src": "2224:7:17", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 1847, + "id": 1885, "isConstant": false, "isLValue": false, "isPure": false, @@ -1470,15 +1536,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2152:19:17", + "src": "2224:46:17", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1848, + "id": 1886, "nodeType": "ExpressionStatement", - "src": "2152:19:17" + "src": "2224:46:17" }, { "expression": { @@ -1489,12 +1555,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1851, + "id": 1889, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1820, - "src": "2266:5:17", + "referencedDeclaration": 1855, + "src": "2365:5:17", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1502,12 +1568,12 @@ }, { "argumentTypes": null, - "id": 1852, + "id": 1890, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1824, - "src": "2273:6:17", + "referencedDeclaration": 1859, + "src": "2372:6:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1525,18 +1591,18 @@ "typeString": "uint256" } ], - "id": 1850, + "id": 1888, "name": "isUnderLimit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1959, - "src": "2253:12:17", + "referencedDeclaration": 2000, + "src": "2352:12:17", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) returns (bool)" } }, - "id": 1853, + "id": 1891, "isConstant": false, "isLValue": false, "isPure": false, @@ -1544,11 +1610,29 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2253:27:17", + "src": "2352:27:17", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "4461696c79206c696d697420686173206265656e2072656163686564", + "id": 1892, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2381:30:17", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_8c8c9a9731e3c1970f356c6998c7e6418ab5b55402b68846f03a8bbe49c05905", + "typeString": "literal_string \"Daily limit has been reached\"" + }, + "value": "Daily limit has been reached" } ], "expression": { @@ -1556,23 +1640,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_8c8c9a9731e3c1970f356c6998c7e6418ab5b55402b68846f03a8bbe49c05905", + "typeString": "literal_string \"Daily limit has been reached\"" } ], - "id": 1849, + "id": 1887, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "2245:7:17", + "referencedDeclaration": 2658, + "src": "2344:7:17", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 1854, + "id": 1893, "isConstant": false, "isLValue": false, "isPure": false, @@ -1580,20 +1668,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2245:36:17", + "src": "2344:68:17", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1855, + "id": 1894, "nodeType": "ExpressionStatement", - "src": "2245:36:17" + "src": "2344:68:17" }, { "expression": { "argumentTypes": null, - "id": 1861, + "id": 1900, "isConstant": false, "isLValue": false, "isPure": false, @@ -1604,26 +1692,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1856, + "id": 1895, "name": "dailyLimits", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1758, - "src": "2291:11:17", + "referencedDeclaration": 1793, + "src": "2422:11:17", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1765_storage_$", + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1800_storage_$", "typeString": "mapping(address => struct DailyLimitModule.DailyLimit storage ref)" } }, - "id": 1858, + "id": 1897, "indexExpression": { "argumentTypes": null, - "id": 1857, + "id": 1896, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1820, - "src": "2303:5:17", + "referencedDeclaration": 1855, + "src": "2434:5:17", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1634,21 +1722,21 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2291:18:17", + "src": "2422:18:17", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1765_storage", + "typeIdentifier": "t_struct$_DailyLimit_$1800_storage", "typeString": "struct DailyLimitModule.DailyLimit storage ref" } }, - "id": 1859, + "id": 1898, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "spentToday", "nodeType": "MemberAccess", - "referencedDeclaration": 1762, - "src": "2291:29:17", + "referencedDeclaration": 1797, + "src": "2422:29:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1658,26 +1746,26 @@ "operator": "+=", "rightHandSide": { "argumentTypes": null, - "id": 1860, + "id": 1899, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1824, - "src": "2324:6:17", + "referencedDeclaration": 1859, + "src": "2455:6:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "2291:39:17", + "src": "2422:39:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 1862, + "id": 1901, "nodeType": "ExpressionStatement", - "src": "2291:39:17" + "src": "2422:39:17" }, { "condition": { @@ -1686,19 +1774,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1865, + "id": 1904, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1863, + "id": 1902, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1820, - "src": "2344:5:17", + "referencedDeclaration": 1855, + "src": "2475:5:17", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1709,14 +1797,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1864, + "id": 1903, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2353:1:17", + "src": "2484:1:17", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -1724,29 +1812,29 @@ }, "value": "0" }, - "src": "2344:10:17", + "src": "2475:10:17", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": { - "id": 1900, + "id": 1941, "nodeType": "Block", - "src": "2466:202:17", + "src": "2633:238:17", "statements": [ { "assignments": [ - 1880 + 1920 ], "declarations": [ { "constant": false, - "id": 1880, + "id": 1920, "name": "data", "nodeType": "VariableDeclaration", - "scope": 1903, - "src": "2480:17:17", + "scope": 1944, + "src": "2647:17:17", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -1754,10 +1842,10 @@ "typeString": "bytes" }, "typeName": { - "id": 1879, + "id": 1919, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "2480:5:17", + "src": "2647:5:17", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -1767,21 +1855,21 @@ "visibility": "internal" } ], - "id": 1887, + "id": 1927, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "7472616e7366657228616464726573732c75696e7432353629", - "id": 1883, + "id": 1923, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2524:27:17", + "src": "2691:27:17", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_a9059cbb2ab09eb219583f4a59a5d0623ade346d962bcd4e46b11da047c9049b", @@ -1791,12 +1879,12 @@ }, { "argumentTypes": null, - "id": 1884, + "id": 1924, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1822, - "src": "2553:2:17", + "referencedDeclaration": 1857, + "src": "2720:2:17", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1804,12 +1892,12 @@ }, { "argumentTypes": null, - "id": 1885, + "id": 1925, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1824, - "src": "2557:6:17", + "referencedDeclaration": 1859, + "src": "2724:6:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1833,18 +1921,18 @@ ], "expression": { "argumentTypes": null, - "id": 1881, + "id": 1921, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2585, - "src": "2500:3:17", + "referencedDeclaration": 2641, + "src": "2667:3:17", "typeDescriptions": { "typeIdentifier": "t_magic_abi", "typeString": "abi" } }, - "id": 1882, + "id": 1922, "isConstant": false, "isLValue": false, "isPure": true, @@ -1852,13 +1940,13 @@ "memberName": "encodeWithSignature", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2500:23:17", + "src": "2667:23:17", "typeDescriptions": { "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$", "typeString": "function (string memory) pure returns (bytes memory)" } }, - "id": 1886, + "id": 1926, "isConstant": false, "isLValue": false, "isPure": false, @@ -1866,14 +1954,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2500:64:17", + "src": "2667:64:17", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, "nodeType": "VariableDeclarationStatement", - "src": "2480:84:17" + "src": "2647:84:17" }, { "expression": { @@ -1884,12 +1972,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1891, + "id": 1931, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1820, - "src": "2620:5:17", + "referencedDeclaration": 1855, + "src": "2787:5:17", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1898,14 +1986,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 1892, + "id": 1932, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2627:1:17", + "src": "2794:1:17", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -1915,12 +2003,12 @@ }, { "argumentTypes": null, - "id": 1893, + "id": 1933, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1880, - "src": "2630:4:17", + "referencedDeclaration": 1920, + "src": "2797:4:17", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -1932,18 +2020,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1894, + "id": 1934, "name": "Enum", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 30, - "src": "2636:4:17", + "src": "2803:4:17", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_Enum_$30_$", "typeString": "type(contract Enum)" } }, - "id": 1895, + "id": 1935, "isConstant": false, "isLValue": false, "isPure": false, @@ -1951,13 +2039,13 @@ "memberName": "Operation", "nodeType": "MemberAccess", "referencedDeclaration": 29, - "src": "2636:14:17", + "src": "2803:14:17", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_Operation_$29_$", "typeString": "type(enum Enum.Operation)" } }, - "id": 1896, + "id": 1936, "isConstant": false, "isLValue": false, "isPure": true, @@ -1965,7 +2053,7 @@ "memberName": "Call", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2636:19:17", + "src": "2803:19:17", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" @@ -1993,32 +2081,32 @@ ], "expression": { "argumentTypes": null, - "id": 1889, + "id": 1929, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 717, - "src": "2586:7:17", + "referencedDeclaration": 727, + "src": "2753:7:17", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1100", + "typeIdentifier": "t_contract$_ModuleManager_$1118", "typeString": "contract ModuleManager" } }, - "id": 1890, + "id": 1930, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "execTransactionFromModule", "nodeType": "MemberAccess", - "referencedDeclaration": 927, - "src": "2586:33:17", + "referencedDeclaration": 945, + "src": "2753:33:17", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$returns$_t_bool_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation) external returns (bool)" } }, - "id": 1897, + "id": 1937, "isConstant": false, "isLValue": false, "isPure": false, @@ -2026,11 +2114,29 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2586:70:17", + "src": "2753:70:17", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "436f756c64206e6f74206578656375746520746f6b656e207472616e73666572", + "id": 1938, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2825:34:17", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_00c0b742664159361be6aebbe2af44c4ae7eb95e13260265d1e1cf75d2593709", + "typeString": "literal_string \"Could not execute token transfer\"" + }, + "value": "Could not execute token transfer" } ], "expression": { @@ -2038,23 +2144,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_00c0b742664159361be6aebbe2af44c4ae7eb95e13260265d1e1cf75d2593709", + "typeString": "literal_string \"Could not execute token transfer\"" } ], - "id": 1888, + "id": 1928, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "2578:7:17", + "referencedDeclaration": 2658, + "src": "2745:7:17", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 1898, + "id": 1939, "isConstant": false, "isLValue": false, "isPure": false, @@ -2062,25 +2172,25 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2578:79:17", + "src": "2745:115:17", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1899, + "id": 1940, "nodeType": "ExpressionStatement", - "src": "2578:79:17" + "src": "2745:115:17" } ] }, - "id": 1901, + "id": 1942, "nodeType": "IfStatement", - "src": "2340:328:17", + "src": "2471:400:17", "trueBody": { - "id": 1878, + "id": 1918, "nodeType": "Block", - "src": "2356:104:17", + "src": "2487:140:17", "statements": [ { "expression": { @@ -2091,12 +2201,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1869, + "id": 1908, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1822, - "src": "2412:2:17", + "referencedDeclaration": 1857, + "src": "2543:2:17", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2104,12 +2214,12 @@ }, { "argumentTypes": null, - "id": 1870, + "id": 1909, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1824, - "src": "2416:6:17", + "referencedDeclaration": 1859, + "src": "2547:6:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2118,14 +2228,14 @@ { "argumentTypes": null, "hexValue": "", - "id": 1871, + "id": 1910, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2424:2:17", + "src": "2555:2:17", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", @@ -2139,18 +2249,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1872, + "id": 1911, "name": "Enum", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 30, - "src": "2428:4:17", + "src": "2559:4:17", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_Enum_$30_$", "typeString": "type(contract Enum)" } }, - "id": 1873, + "id": 1912, "isConstant": false, "isLValue": false, "isPure": false, @@ -2158,13 +2268,13 @@ "memberName": "Operation", "nodeType": "MemberAccess", "referencedDeclaration": 29, - "src": "2428:14:17", + "src": "2559:14:17", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_Operation_$29_$", "typeString": "type(enum Enum.Operation)" } }, - "id": 1874, + "id": 1913, "isConstant": false, "isLValue": false, "isPure": true, @@ -2172,7 +2282,7 @@ "memberName": "Call", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2428:19:17", + "src": "2559:19:17", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" @@ -2200,32 +2310,32 @@ ], "expression": { "argumentTypes": null, - "id": 1867, + "id": 1906, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 717, - "src": "2378:7:17", + "referencedDeclaration": 727, + "src": "2509:7:17", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1100", + "typeIdentifier": "t_contract$_ModuleManager_$1118", "typeString": "contract ModuleManager" } }, - "id": 1868, + "id": 1907, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "execTransactionFromModule", "nodeType": "MemberAccess", - "referencedDeclaration": 927, - "src": "2378:33:17", + "referencedDeclaration": 945, + "src": "2509:33:17", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$returns$_t_bool_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation) external returns (bool)" } }, - "id": 1875, + "id": 1914, "isConstant": false, "isLValue": false, "isPure": false, @@ -2233,11 +2343,29 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2378:70:17", + "src": "2509:70:17", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "436f756c64206e6f742065786563757465206574686572207472616e73666572", + "id": 1915, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2581:34:17", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_2fae53cac084168982e43888b6e5eff084959ab65d511777b56b4cbb265d2586", + "typeString": "literal_string \"Could not execute ether transfer\"" + }, + "value": "Could not execute ether transfer" } ], "expression": { @@ -2245,23 +2373,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_2fae53cac084168982e43888b6e5eff084959ab65d511777b56b4cbb265d2586", + "typeString": "literal_string \"Could not execute ether transfer\"" } ], - "id": 1866, + "id": 1905, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "2370:7:17", + "referencedDeclaration": 2658, + "src": "2501:7:17", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 1876, + "id": 1916, "isConstant": false, "isLValue": false, "isPure": false, @@ -2269,15 +2401,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2370:79:17", + "src": "2501:115:17", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1877, + "id": 1917, "nodeType": "ExpressionStatement", - "src": "2370:79:17" + "src": "2501:115:17" } ] } @@ -2285,7 +2417,7 @@ ] }, "documentation": "@dev Returns if Safe transaction is a valid daily limit transaction.\n @param token Address of the token that should be transfered (0 for Ether)\n @param to Address to which the tokens should be transfered\n @param amount Amount of tokens (or Ether) that should be transfered\n @return Returns if transaction can be executed.", - "id": 1903, + "id": 1944, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -2293,15 +2425,15 @@ "name": "executeDailyLimit", "nodeType": "FunctionDefinition", "parameters": { - "id": 1825, + "id": 1860, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1820, + "id": 1855, "name": "token", "nodeType": "VariableDeclaration", - "scope": 1903, + "scope": 1944, "src": "1917:13:17", "stateVariable": false, "storageLocation": "default", @@ -2310,7 +2442,7 @@ "typeString": "address" }, "typeName": { - "id": 1819, + "id": 1854, "name": "address", "nodeType": "ElementaryTypeName", "src": "1917:7:17", @@ -2324,10 +2456,10 @@ }, { "constant": false, - "id": 1822, + "id": 1857, "name": "to", "nodeType": "VariableDeclaration", - "scope": 1903, + "scope": 1944, "src": "1932:10:17", "stateVariable": false, "storageLocation": "default", @@ -2336,7 +2468,7 @@ "typeString": "address" }, "typeName": { - "id": 1821, + "id": 1856, "name": "address", "nodeType": "ElementaryTypeName", "src": "1932:7:17", @@ -2350,10 +2482,10 @@ }, { "constant": false, - "id": 1824, + "id": 1859, "name": "amount", "nodeType": "VariableDeclaration", - "scope": 1903, + "scope": 1944, "src": "1944:14:17", "stateVariable": false, "storageLocation": "default", @@ -2362,7 +2494,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1823, + "id": 1858, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1944:7:17", @@ -2379,50 +2511,50 @@ }, "payable": false, "returnParameters": { - "id": 1826, + "id": 1861, "nodeType": "ParameterList", "parameters": [], "src": "1979:0:17" }, - "scope": 1973, - "src": "1890:784:17", + "scope": 2014, + "src": "1890:987:17", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1958, + "id": 1999, "nodeType": "Block", - "src": "2777:391:17", + "src": "2980:391:17", "statements": [ { "assignments": [ - 1913 + 1954 ], "declarations": [ { "constant": false, - "id": 1913, + "id": 1954, "name": "dailyLimit", "nodeType": "VariableDeclaration", - "scope": 1959, - "src": "2787:29:17", + "scope": 2000, + "src": "2990:29:17", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1765_storage_ptr", + "typeIdentifier": "t_struct$_DailyLimit_$1800_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit" }, "typeName": { "contractScope": null, - "id": 1912, + "id": 1953, "name": "DailyLimit", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1765, - "src": "2787:10:17", + "referencedDeclaration": 1800, + "src": "2990:10:17", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1765_storage_ptr", + "typeIdentifier": "t_struct$_DailyLimit_$1800_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit" } }, @@ -2430,31 +2562,31 @@ "visibility": "internal" } ], - "id": 1917, + "id": 1958, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1914, + "id": 1955, "name": "dailyLimits", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1758, - "src": "2819:11:17", + "referencedDeclaration": 1793, + "src": "3022:11:17", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1765_storage_$", + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1800_storage_$", "typeString": "mapping(address => struct DailyLimitModule.DailyLimit storage ref)" } }, - "id": 1916, + "id": 1957, "indexExpression": { "argumentTypes": null, - "id": 1915, + "id": 1956, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1905, - "src": "2831:5:17", + "referencedDeclaration": 1946, + "src": "3034:5:17", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2465,14 +2597,14 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2819:18:17", + "src": "3022:18:17", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1765_storage", + "typeIdentifier": "t_struct$_DailyLimit_$1800_storage", "typeString": "struct DailyLimitModule.DailyLimit storage ref" } }, "nodeType": "VariableDeclarationStatement", - "src": "2787:50:17" + "src": "2990:50:17" }, { "condition": { @@ -2481,7 +2613,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1922, + "id": 1963, "isConstant": false, "isLValue": false, "isPure": false, @@ -2491,18 +2623,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 1918, + "id": 1959, "name": "today", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1972, - "src": "2851:5:17", + "referencedDeclaration": 2013, + "src": "3054:5:17", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, - "id": 1919, + "id": 1960, "isConstant": false, "isLValue": false, "isPure": false, @@ -2510,7 +2642,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2851:7:17", + "src": "3054:7:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2522,50 +2654,50 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1920, + "id": 1961, "name": "dailyLimit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1913, - "src": "2861:10:17", + "referencedDeclaration": 1954, + "src": "3064:10:17", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1765_storage_ptr", + "typeIdentifier": "t_struct$_DailyLimit_$1800_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit storage pointer" } }, - "id": 1921, + "id": 1962, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "lastDay", "nodeType": "MemberAccess", - "referencedDeclaration": 1764, - "src": "2861:18:17", + "referencedDeclaration": 1799, + "src": "3064:18:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "2851:28:17", + "src": "3054:28:17", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 1937, + "id": 1978, "nodeType": "IfStatement", - "src": "2847:126:17", + "src": "3050:126:17", "trueBody": { - "id": 1936, + "id": 1977, "nodeType": "Block", - "src": "2881:92:17", + "src": "3084:92:17", "statements": [ { "expression": { "argumentTypes": null, - "id": 1928, + "id": 1969, "isConstant": false, "isLValue": false, "isPure": false, @@ -2574,26 +2706,26 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1923, + "id": 1964, "name": "dailyLimit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1913, - "src": "2895:10:17", + "referencedDeclaration": 1954, + "src": "3098:10:17", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1765_storage_ptr", + "typeIdentifier": "t_struct$_DailyLimit_$1800_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit storage pointer" } }, - "id": 1925, + "id": 1966, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "lastDay", "nodeType": "MemberAccess", - "referencedDeclaration": 1764, - "src": "2895:18:17", + "referencedDeclaration": 1799, + "src": "3098:18:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2606,18 +2738,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 1926, + "id": 1967, "name": "today", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1972, - "src": "2916:5:17", + "referencedDeclaration": 2013, + "src": "3119:5:17", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, - "id": 1927, + "id": 1968, "isConstant": false, "isLValue": false, "isPure": false, @@ -2625,26 +2757,26 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2916:7:17", + "src": "3119:7:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "2895:28:17", + "src": "3098:28:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 1929, + "id": 1970, "nodeType": "ExpressionStatement", - "src": "2895:28:17" + "src": "3098:28:17" }, { "expression": { "argumentTypes": null, - "id": 1934, + "id": 1975, "isConstant": false, "isLValue": false, "isPure": false, @@ -2653,26 +2785,26 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1930, + "id": 1971, "name": "dailyLimit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1913, - "src": "2937:10:17", + "referencedDeclaration": 1954, + "src": "3140:10:17", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1765_storage_ptr", + "typeIdentifier": "t_struct$_DailyLimit_$1800_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit storage pointer" } }, - "id": 1932, + "id": 1973, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "spentToday", "nodeType": "MemberAccess", - "referencedDeclaration": 1762, - "src": "2937:21:17", + "referencedDeclaration": 1797, + "src": "3140:21:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2683,14 +2815,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "30", - "id": 1933, + "id": 1974, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2961:1:17", + "src": "3164:1:17", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -2698,15 +2830,15 @@ }, "value": "0" }, - "src": "2937:25:17", + "src": "3140:25:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 1935, + "id": 1976, "nodeType": "ExpressionStatement", - "src": "2937:25:17" + "src": "3140:25:17" } ] } @@ -2718,7 +2850,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 1952, + "id": 1993, "isConstant": false, "isLValue": false, "isPure": false, @@ -2729,7 +2861,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1944, + "id": 1985, "isConstant": false, "isLValue": false, "isPure": false, @@ -2740,7 +2872,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1941, + "id": 1982, "isConstant": false, "isLValue": false, "isPure": false, @@ -2749,26 +2881,26 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1938, + "id": 1979, "name": "dailyLimit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1913, - "src": "2989:10:17", + "referencedDeclaration": 1954, + "src": "3192:10:17", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1765_storage_ptr", + "typeIdentifier": "t_struct$_DailyLimit_$1800_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit storage pointer" } }, - "id": 1939, + "id": 1980, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "spentToday", "nodeType": "MemberAccess", - "referencedDeclaration": 1762, - "src": "2989:21:17", + "referencedDeclaration": 1797, + "src": "3192:21:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2778,18 +2910,18 @@ "operator": "+", "rightExpression": { "argumentTypes": null, - "id": 1940, + "id": 1981, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1907, - "src": "3013:6:17", + "referencedDeclaration": 1948, + "src": "3216:6:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "2989:30:17", + "src": "3192:30:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2801,32 +2933,32 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1942, + "id": 1983, "name": "dailyLimit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1913, - "src": "3023:10:17", + "referencedDeclaration": 1954, + "src": "3226:10:17", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1765_storage_ptr", + "typeIdentifier": "t_struct$_DailyLimit_$1800_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit storage pointer" } }, - "id": 1943, + "id": 1984, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "dailyLimit", "nodeType": "MemberAccess", - "referencedDeclaration": 1760, - "src": "3023:21:17", + "referencedDeclaration": 1795, + "src": "3226:21:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "2989:55:17", + "src": "3192:55:17", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2840,7 +2972,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1951, + "id": 1992, "isConstant": false, "isLValue": false, "isPure": false, @@ -2851,7 +2983,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1948, + "id": 1989, "isConstant": false, "isLValue": false, "isPure": false, @@ -2860,26 +2992,26 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1945, + "id": 1986, "name": "dailyLimit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1913, - "src": "3060:10:17", + "referencedDeclaration": 1954, + "src": "3263:10:17", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1765_storage_ptr", + "typeIdentifier": "t_struct$_DailyLimit_$1800_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit storage pointer" } }, - "id": 1946, + "id": 1987, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "spentToday", "nodeType": "MemberAccess", - "referencedDeclaration": 1762, - "src": "3060:21:17", + "referencedDeclaration": 1797, + "src": "3263:21:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2889,18 +3021,18 @@ "operator": "+", "rightExpression": { "argumentTypes": null, - "id": 1947, + "id": 1988, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1907, - "src": "3084:6:17", + "referencedDeclaration": 1948, + "src": "3287:6:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3060:30:17", + "src": "3263:30:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2912,59 +3044,59 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1949, + "id": 1990, "name": "dailyLimit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1913, - "src": "3093:10:17", + "referencedDeclaration": 1954, + "src": "3296:10:17", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1765_storage_ptr", + "typeIdentifier": "t_struct$_DailyLimit_$1800_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit storage pointer" } }, - "id": 1950, + "id": 1991, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "spentToday", "nodeType": "MemberAccess", - "referencedDeclaration": 1762, - "src": "3093:21:17", + "referencedDeclaration": 1797, + "src": "3296:21:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3060:54:17", + "src": "3263:54:17", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "2989:125:17", + "src": "3192:125:17", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 1955, + "id": 1996, "nodeType": "IfStatement", - "src": "2982:157:17", + "src": "3185:157:17", "trueBody": { "expression": { "argumentTypes": null, "hexValue": "74727565", - "id": 1953, + "id": 1994, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "3135:4:17", + "src": "3338:4:17", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -2972,24 +3104,24 @@ }, "value": "true" }, - "functionReturnParameters": 1911, - "id": 1954, + "functionReturnParameters": 1952, + "id": 1995, "nodeType": "Return", - "src": "3128:11:17" + "src": "3331:11:17" } }, { "expression": { "argumentTypes": null, "hexValue": "66616c7365", - "id": 1956, + "id": 1997, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "3156:5:17", + "src": "3359:5:17", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -2997,15 +3129,15 @@ }, "value": "false" }, - "functionReturnParameters": 1911, - "id": 1957, + "functionReturnParameters": 1952, + "id": 1998, "nodeType": "Return", - "src": "3149:12:17" + "src": "3352:12:17" } ] }, "documentation": null, - "id": 1959, + "id": 2000, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -3013,16 +3145,16 @@ "name": "isUnderLimit", "nodeType": "FunctionDefinition", "parameters": { - "id": 1908, + "id": 1949, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1905, + "id": 1946, "name": "token", "nodeType": "VariableDeclaration", - "scope": 1959, - "src": "2702:13:17", + "scope": 2000, + "src": "2905:13:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3030,10 +3162,10 @@ "typeString": "address" }, "typeName": { - "id": 1904, + "id": 1945, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2702:7:17", + "src": "2905:7:17", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3044,11 +3176,11 @@ }, { "constant": false, - "id": 1907, + "id": 1948, "name": "amount", "nodeType": "VariableDeclaration", - "scope": 1959, - "src": "2717:14:17", + "scope": 2000, + "src": "2920:14:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3056,10 +3188,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1906, + "id": 1947, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2717:7:17", + "src": "2920:7:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3069,20 +3201,20 @@ "visibility": "internal" } ], - "src": "2701:31:17" + "src": "2904:31:17" }, "payable": false, "returnParameters": { - "id": 1911, + "id": 1952, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1910, + "id": 1951, "name": "", "nodeType": "VariableDeclaration", - "scope": 1959, - "src": "2767:4:17", + "scope": 2000, + "src": "2970:4:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3090,10 +3222,10 @@ "typeString": "bool" }, "typeName": { - "id": 1909, + "id": 1950, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "2767:4:17", + "src": "2970:4:17", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3103,19 +3235,19 @@ "visibility": "internal" } ], - "src": "2766:6:17" + "src": "2969:6:17" }, - "scope": 1973, - "src": "2680:488:17", + "scope": 2014, + "src": "2883:488:17", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 1971, + "id": 2012, "nodeType": "Block", - "src": "3332:44:17", + "src": "3535:44:17", "statements": [ { "expression": { @@ -3124,19 +3256,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1969, + "id": 2010, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1964, + "id": 2005, "name": "now", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2600, - "src": "3349:3:17", + "referencedDeclaration": 2656, + "src": "3552:3:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3153,19 +3285,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1967, + "id": 2008, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1965, + "id": 2006, "name": "now", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2600, - "src": "3356:3:17", + "referencedDeclaration": 2656, + "src": "3559:3:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3176,14 +3308,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "31", - "id": 1966, + "id": 2007, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3362:6:17", + "src": "3565:6:17", "subdenomination": "days", "typeDescriptions": { "typeIdentifier": "t_rational_86400_by_1", @@ -3191,41 +3323,41 @@ }, "value": "1" }, - "src": "3356:12:17", + "src": "3559:12:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], - "id": 1968, + "id": 2009, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", - "src": "3355:14:17", + "src": "3558:14:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3349:20:17", + "src": "3552:20:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 1963, - "id": 1970, + "functionReturnParameters": 2004, + "id": 2011, "nodeType": "Return", - "src": "3342:27:17" + "src": "3545:27:17" } ] }, "documentation": "@dev Returns last midnight as Unix timestamp.\n @return Unix timestamp.", - "id": 1972, + "id": 2013, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -3233,23 +3365,23 @@ "name": "today", "nodeType": "FunctionDefinition", "parameters": { - "id": 1960, + "id": 2001, "nodeType": "ParameterList", "parameters": [], - "src": "3274:2:17" + "src": "3477:2:17" }, "payable": false, "returnParameters": { - "id": 1963, + "id": 2004, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1962, + "id": 2003, "name": "", "nodeType": "VariableDeclaration", - "scope": 1972, - "src": "3322:4:17", + "scope": 2013, + "src": "3525:4:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3257,10 +3389,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1961, + "id": 2002, "name": "uint", "nodeType": "ElementaryTypeName", - "src": "3322:4:17", + "src": "3525:4:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3270,33 +3402,33 @@ "visibility": "internal" } ], - "src": "3321:6:17" + "src": "3524:6:17" }, - "scope": 1973, - "src": "3260:116:17", + "scope": 2014, + "src": "3463:116:17", "stateMutability": "view", "superFunction": null, "visibility": "public" } ], - "scope": 1974, - "src": "296:3082:17" + "scope": 2015, + "src": "296:3285:17" } ], - "src": "0:3379:17" + "src": "0:3582:17" }, "legacyAST": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/modules/DailyLimitModule.sol", "exportedSymbols": { "DailyLimitModule": [ - 1973 + 2014 ] }, - "id": 1974, + "id": 2015, "nodeType": "SourceUnit", "nodes": [ { - "id": 1742, + "id": 1777, "literals": [ "solidity", "0.4", @@ -3308,10 +3440,10 @@ { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Module.sol", "file": "../Module.sol", - "id": 1743, + "id": 1778, "nodeType": "ImportDirective", - "scope": 1974, - "sourceUnit": 751, + "scope": 2015, + "sourceUnit": 763, "src": "24:23:17", "symbolAliases": [], "unitAlias": "" @@ -3319,10 +3451,10 @@ { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/ModuleManager.sol", "file": "../ModuleManager.sol", - "id": 1744, + "id": 1779, "nodeType": "ImportDirective", - "scope": 1974, - "sourceUnit": 1101, + "scope": 2015, + "sourceUnit": 1119, "src": "48:30:17", "symbolAliases": [], "unitAlias": "" @@ -3330,10 +3462,10 @@ { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/OwnerManager.sol", "file": "../OwnerManager.sol", - "id": 1745, + "id": 1780, "nodeType": "ImportDirective", - "scope": 1974, - "sourceUnit": 1473, + "scope": 2015, + "sourceUnit": 1505, "src": "79:29:17", "symbolAliases": [], "unitAlias": "" @@ -3341,9 +3473,9 @@ { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Enum.sol", "file": "../Enum.sol", - "id": 1746, + "id": 1781, "nodeType": "ImportDirective", - "scope": 1974, + "scope": 2015, "sourceUnit": 31, "src": "109:21:17", "symbolAliases": [], @@ -3355,45 +3487,45 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 1747, + "id": 1782, "name": "Module", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 750, + "referencedDeclaration": 762, "src": "325:6:17", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$750", + "typeIdentifier": "t_contract$_Module_$762", "typeString": "contract Module" } }, - "id": 1748, + "id": 1783, "nodeType": "InheritanceSpecifier", "src": "325:6:17" } ], "contractDependencies": [ - 652, - 750, - 1619 + 662, + 762, + 1654 ], "contractKind": "contract", "documentation": "@title Daily Limit Module - Allows to transfer limited amounts of ERC20 tokens and Ether without confirmations.\n @author Stefan George - ", "fullyImplemented": true, - "id": 1973, + "id": 2014, "linearizedBaseContracts": [ - 1973, - 750, - 652, - 1619 + 2014, + 762, + 662, + 1654 ], "name": "DailyLimitModule", "nodeType": "ContractDefinition", "nodes": [ { "constant": true, - "id": 1751, + "id": 1786, "name": "NAME", "nodeType": "VariableDeclaration", - "scope": 1973, + "scope": 2014, "src": "339:50:17", "stateVariable": true, "storageLocation": "default", @@ -3402,7 +3534,7 @@ "typeString": "string" }, "typeName": { - "id": 1749, + "id": 1784, "name": "string", "nodeType": "ElementaryTypeName", "src": "339:6:17", @@ -3414,7 +3546,7 @@ "value": { "argumentTypes": null, "hexValue": "4461696c79204c696d6974204d6f64756c65", - "id": 1750, + "id": 1785, "isConstant": false, "isLValue": false, "isPure": true, @@ -3433,10 +3565,10 @@ }, { "constant": true, - "id": 1754, + "id": 1789, "name": "VERSION", "nodeType": "VariableDeclaration", - "scope": 1973, + "scope": 2014, "src": "395:40:17", "stateVariable": true, "storageLocation": "default", @@ -3445,7 +3577,7 @@ "typeString": "string" }, "typeName": { - "id": 1752, + "id": 1787, "name": "string", "nodeType": "ElementaryTypeName", "src": "395:6:17", @@ -3457,7 +3589,7 @@ "value": { "argumentTypes": null, "hexValue": "302e302e31", - "id": 1753, + "id": 1788, "isConstant": false, "isLValue": false, "isPure": true, @@ -3476,21 +3608,21 @@ }, { "constant": false, - "id": 1758, + "id": 1793, "name": "dailyLimits", "nodeType": "VariableDeclaration", - "scope": 1973, + "scope": 2014, "src": "513:50:17", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1765_storage_$", + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1800_storage_$", "typeString": "mapping(address => struct DailyLimitModule.DailyLimit)" }, "typeName": { - "id": 1757, + "id": 1792, "keyType": { - "id": 1755, + "id": 1790, "name": "address", "nodeType": "ElementaryTypeName", "src": "522:7:17", @@ -3502,18 +3634,18 @@ "nodeType": "Mapping", "src": "513:31:17", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1765_storage_$", + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1800_storage_$", "typeString": "mapping(address => struct DailyLimitModule.DailyLimit)" }, "valueType": { "contractScope": null, - "id": 1756, + "id": 1791, "name": "DailyLimit", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1765, + "referencedDeclaration": 1800, "src": "533:10:17", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1765_storage_ptr", + "typeIdentifier": "t_struct$_DailyLimit_$1800_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit" } } @@ -3523,14 +3655,14 @@ }, { "canonicalName": "DailyLimitModule.DailyLimit", - "id": 1765, + "id": 1800, "members": [ { "constant": false, - "id": 1760, + "id": 1795, "name": "dailyLimit", "nodeType": "VariableDeclaration", - "scope": 1765, + "scope": 1800, "src": "598:18:17", "stateVariable": false, "storageLocation": "default", @@ -3539,7 +3671,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1759, + "id": 1794, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "598:7:17", @@ -3553,10 +3685,10 @@ }, { "constant": false, - "id": 1762, + "id": 1797, "name": "spentToday", "nodeType": "VariableDeclaration", - "scope": 1765, + "scope": 1800, "src": "626:18:17", "stateVariable": false, "storageLocation": "default", @@ -3565,7 +3697,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1761, + "id": 1796, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "626:7:17", @@ -3579,10 +3711,10 @@ }, { "constant": false, - "id": 1764, + "id": 1799, "name": "lastDay", "nodeType": "VariableDeclaration", - "scope": 1765, + "scope": 1800, "src": "654:15:17", "stateVariable": false, "storageLocation": "default", @@ -3591,7 +3723,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1763, + "id": 1798, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "654:7:17", @@ -3606,13 +3738,13 @@ ], "name": "DailyLimit", "nodeType": "StructDefinition", - "scope": 1973, + "scope": 2014, "src": "570:106:17", "visibility": "public" }, { "body": { - "id": 1800, + "id": 1835, "nodeType": "Block", "src": "994:146:17", "statements": [ @@ -3622,18 +3754,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 1774, + "id": 1809, "name": "setManager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 749, + "referencedDeclaration": 761, "src": "1004:10:17", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()" } }, - "id": 1775, + "id": 1810, "isConstant": false, "isLValue": false, "isPure": false, @@ -3647,7 +3779,7 @@ "typeString": "tuple()" } }, - "id": 1776, + "id": 1811, "nodeType": "ExpressionStatement", "src": "1004:12:17" }, @@ -3655,7 +3787,7 @@ "body": { "expression": { "argumentTypes": null, - "id": 1797, + "id": 1832, "isConstant": false, "isLValue": false, "isPure": false, @@ -3666,41 +3798,41 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1788, + "id": 1823, "name": "dailyLimits", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1758, + "referencedDeclaration": 1793, "src": "1082:11:17", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1765_storage_$", + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1800_storage_$", "typeString": "mapping(address => struct DailyLimitModule.DailyLimit storage ref)" } }, - "id": 1792, + "id": 1827, "indexExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1789, + "id": 1824, "name": "tokens", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1768, + "referencedDeclaration": 1803, "src": "1094:6:17", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 1791, + "id": 1826, "indexExpression": { "argumentTypes": null, - "id": 1790, + "id": 1825, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1778, + "referencedDeclaration": 1813, "src": "1101:1:17", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -3725,18 +3857,18 @@ "nodeType": "IndexAccess", "src": "1082:22:17", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1765_storage", + "typeIdentifier": "t_struct$_DailyLimit_$1800_storage", "typeString": "struct DailyLimitModule.DailyLimit storage ref" } }, - "id": 1793, + "id": 1828, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "dailyLimit", "nodeType": "MemberAccess", - "referencedDeclaration": 1760, + "referencedDeclaration": 1795, "src": "1082:33:17", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -3749,25 +3881,25 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1794, + "id": 1829, "name": "_dailyLimits", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1771, + "referencedDeclaration": 1806, "src": "1118:12:17", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[] memory" } }, - "id": 1796, + "id": 1831, "indexExpression": { "argumentTypes": null, - "id": 1795, + "id": 1830, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1778, + "referencedDeclaration": 1813, "src": "1131:1:17", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -3791,7 +3923,7 @@ "typeString": "uint256" } }, - "id": 1798, + "id": 1833, "nodeType": "ExpressionStatement", "src": "1082:51:17" }, @@ -3801,18 +3933,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1784, + "id": 1819, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1781, + "id": 1816, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1778, + "referencedDeclaration": 1813, "src": "1046:1:17", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -3825,18 +3957,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1782, + "id": 1817, "name": "tokens", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1768, + "referencedDeclaration": 1803, "src": "1050:6:17", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 1783, + "id": 1818, "isConstant": false, "isLValue": false, "isPure": false, @@ -3856,18 +3988,18 @@ "typeString": "bool" } }, - "id": 1799, + "id": 1834, "initializationExpression": { "assignments": [ - 1778 + 1813 ], "declarations": [ { "constant": false, - "id": 1778, + "id": 1813, "name": "i", "nodeType": "VariableDeclaration", - "scope": 1801, + "scope": 1836, "src": "1031:9:17", "stateVariable": false, "storageLocation": "default", @@ -3876,7 +4008,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1777, + "id": 1812, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1031:7:17", @@ -3889,11 +4021,11 @@ "visibility": "internal" } ], - "id": 1780, + "id": 1815, "initialValue": { "argumentTypes": null, "hexValue": "30", - "id": 1779, + "id": 1814, "isConstant": false, "isLValue": false, "isPure": true, @@ -3914,7 +4046,7 @@ "loopExpression": { "expression": { "argumentTypes": null, - "id": 1786, + "id": 1821, "isConstant": false, "isLValue": false, "isPure": false, @@ -3925,11 +4057,11 @@ "src": "1065:3:17", "subExpression": { "argumentTypes": null, - "id": 1785, + "id": 1820, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1778, + "referencedDeclaration": 1813, "src": "1065:1:17", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -3941,7 +4073,7 @@ "typeString": "uint256" } }, - "id": 1787, + "id": 1822, "nodeType": "ExpressionStatement", "src": "1065:3:17" }, @@ -3951,7 +4083,7 @@ ] }, "documentation": "@dev Setup function sets initial storage of contract.\n @param tokens List of token addresses. Ether is represented with address 0x0.\n @param _dailyLimits List of daily limits in smalles units (e.g. Wei for Ether).", - "id": 1801, + "id": 1836, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -3959,15 +4091,15 @@ "name": "setup", "nodeType": "FunctionDefinition", "parameters": { - "id": 1772, + "id": 1807, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1768, + "id": 1803, "name": "tokens", "nodeType": "VariableDeclaration", - "scope": 1801, + "scope": 1836, "src": "933:16:17", "stateVariable": false, "storageLocation": "default", @@ -3977,7 +4109,7 @@ }, "typeName": { "baseType": { - "id": 1766, + "id": 1801, "name": "address", "nodeType": "ElementaryTypeName", "src": "933:7:17", @@ -3986,7 +4118,7 @@ "typeString": "address" } }, - "id": 1767, + "id": 1802, "length": null, "nodeType": "ArrayTypeName", "src": "933:9:17", @@ -4000,10 +4132,10 @@ }, { "constant": false, - "id": 1771, + "id": 1806, "name": "_dailyLimits", "nodeType": "VariableDeclaration", - "scope": 1801, + "scope": 1836, "src": "951:22:17", "stateVariable": false, "storageLocation": "default", @@ -4013,7 +4145,7 @@ }, "typeName": { "baseType": { - "id": 1769, + "id": 1804, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "951:7:17", @@ -4022,7 +4154,7 @@ "typeString": "uint256" } }, - "id": 1770, + "id": 1805, "length": null, "nodeType": "ArrayTypeName", "src": "951:9:17", @@ -4039,12 +4171,12 @@ }, "payable": false, "returnParameters": { - "id": 1773, + "id": 1808, "nodeType": "ParameterList", "parameters": [], "src": "994:0:17" }, - "scope": 1973, + "scope": 2014, "src": "918:222:17", "stateMutability": "nonpayable", "superFunction": null, @@ -4052,14 +4184,14 @@ }, { "body": { - "id": 1817, + "id": 1852, "nodeType": "Block", "src": "1467:59:17", "statements": [ { "expression": { "argumentTypes": null, - "id": 1815, + "id": 1850, "isConstant": false, "isLValue": false, "isPure": false, @@ -4070,25 +4202,25 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1810, + "id": 1845, "name": "dailyLimits", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1758, + "referencedDeclaration": 1793, "src": "1477:11:17", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1765_storage_$", + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1800_storage_$", "typeString": "mapping(address => struct DailyLimitModule.DailyLimit storage ref)" } }, - "id": 1812, + "id": 1847, "indexExpression": { "argumentTypes": null, - "id": 1811, + "id": 1846, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1803, + "referencedDeclaration": 1838, "src": "1489:5:17", "typeDescriptions": { "typeIdentifier": "t_address", @@ -4102,18 +4234,18 @@ "nodeType": "IndexAccess", "src": "1477:18:17", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1765_storage", + "typeIdentifier": "t_struct$_DailyLimit_$1800_storage", "typeString": "struct DailyLimitModule.DailyLimit storage ref" } }, - "id": 1813, + "id": 1848, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "dailyLimit", "nodeType": "MemberAccess", - "referencedDeclaration": 1760, + "referencedDeclaration": 1795, "src": "1477:29:17", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -4124,11 +4256,11 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1814, + "id": 1849, "name": "dailyLimit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1805, + "referencedDeclaration": 1840, "src": "1509:10:17", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -4141,28 +4273,28 @@ "typeString": "uint256" } }, - "id": 1816, + "id": 1851, "nodeType": "ExpressionStatement", "src": "1477:42:17" } ] }, "documentation": "@dev Allows to update the daily limit for a specified token. This can only be done via a Safe transaction.\n @param token Token contract address.\n @param dailyLimit Daily limit in smallest token unit.", - "id": 1818, + "id": 1853, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 1808, + "id": 1843, "modifierName": { "argumentTypes": null, - "id": 1807, + "id": 1842, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 730, + "referencedDeclaration": 741, "src": "1452:10:17", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", @@ -4176,15 +4308,15 @@ "name": "changeDailyLimit", "nodeType": "FunctionDefinition", "parameters": { - "id": 1806, + "id": 1841, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1803, + "id": 1838, "name": "token", "nodeType": "VariableDeclaration", - "scope": 1818, + "scope": 1853, "src": "1394:13:17", "stateVariable": false, "storageLocation": "default", @@ -4193,7 +4325,7 @@ "typeString": "address" }, "typeName": { - "id": 1802, + "id": 1837, "name": "address", "nodeType": "ElementaryTypeName", "src": "1394:7:17", @@ -4207,10 +4339,10 @@ }, { "constant": false, - "id": 1805, + "id": 1840, "name": "dailyLimit", "nodeType": "VariableDeclaration", - "scope": 1818, + "scope": 1853, "src": "1409:18:17", "stateVariable": false, "storageLocation": "default", @@ -4219,7 +4351,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1804, + "id": 1839, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1409:7:17", @@ -4236,12 +4368,12 @@ }, "payable": false, "returnParameters": { - "id": 1809, + "id": 1844, "nodeType": "ParameterList", "parameters": [], "src": "1467:0:17" }, - "scope": 1973, + "scope": 2014, "src": "1368:158:17", "stateMutability": "nonpayable", "superFunction": null, @@ -4249,9 +4381,9 @@ }, { "body": { - "id": 1902, + "id": 1943, "nodeType": "Block", - "src": "1979:695:17", + "src": "1979:898:17", "statements": [ { "expression": { @@ -4264,18 +4396,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1832, + "id": 1867, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2598, + "referencedDeclaration": 2654, "src": "2104:3:17", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 1833, + "id": 1868, "isConstant": false, "isLValue": false, "isPure": false, @@ -4302,14 +4434,14 @@ "arguments": [ { "argumentTypes": null, - "id": 1829, + "id": 1864, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 717, + "referencedDeclaration": 727, "src": "2087:7:17", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1100", + "typeIdentifier": "t_contract$_ModuleManager_$1118", "typeString": "contract ModuleManager" } } @@ -4317,22 +4449,22 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_ModuleManager_$1100", + "typeIdentifier": "t_contract$_ModuleManager_$1118", "typeString": "contract ModuleManager" } ], - "id": 1828, + "id": 1863, "name": "OwnerManager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1472, + "referencedDeclaration": 1504, "src": "2074:12:17", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_OwnerManager_$1472_$", + "typeIdentifier": "t_type$_t_contract$_OwnerManager_$1504_$", "typeString": "type(contract OwnerManager)" } }, - "id": 1830, + "id": 1865, "isConstant": false, "isLValue": false, "isPure": false, @@ -4342,25 +4474,25 @@ "nodeType": "FunctionCall", "src": "2074:21:17", "typeDescriptions": { - "typeIdentifier": "t_contract$_OwnerManager_$1472", + "typeIdentifier": "t_contract$_OwnerManager_$1504", "typeString": "contract OwnerManager" } }, - "id": 1831, + "id": 1866, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "isOwner", "nodeType": "MemberAccess", - "referencedDeclaration": 1422, + "referencedDeclaration": 1454, "src": "2074:29:17", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view external returns (bool)" } }, - "id": 1834, + "id": 1869, "isConstant": false, "isLValue": false, "isPure": false, @@ -4373,6 +4505,24 @@ "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "4d6574686f642063616e206f6e6c792062652063616c6c656420627920616e206f776e6572", + "id": 1870, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2117:39:17", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_4df072353ff501a1071e1cc3e2eb3ee0ebb21a35321efe90c0960bf2f4356640", + "typeString": "literal_string \"Method can only be called by an owner\"" + }, + "value": "Method can only be called by an owner" } ], "expression": { @@ -4380,23 +4530,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_4df072353ff501a1071e1cc3e2eb3ee0ebb21a35321efe90c0960bf2f4356640", + "typeString": "literal_string \"Method can only be called by an owner\"" } ], - "id": 1827, + "id": 1862, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, + "referencedDeclaration": 2658, "src": "2066:7:17", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 1835, + "id": 1871, "isConstant": false, "isLValue": false, "isPure": false, @@ -4404,15 +4558,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2066:50:17", + "src": "2066:91:17", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1836, + "id": 1872, "nodeType": "ExpressionStatement", - "src": "2066:50:17" + "src": "2066:91:17" }, { "expression": { @@ -4424,19 +4578,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1840, + "id": 1876, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1838, + "id": 1874, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1822, - "src": "2134:2:17", + "referencedDeclaration": 1857, + "src": "2175:2:17", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4447,14 +4601,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1839, + "id": 1875, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2140:1:17", + "src": "2181:1:17", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -4462,11 +4616,29 @@ }, "value": "0" }, - "src": "2134:7:17", + "src": "2175:7:17", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "496e76616c696420746f20616464726573732070726f7669646564", + "id": 1877, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2184:29:17", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c5adba0692e08f8080ea3ec2bf95727d181df9c72d0fc6db8f77e3703d9523f1", + "typeString": "literal_string \"Invalid to address provided\"" + }, + "value": "Invalid to address provided" } ], "expression": { @@ -4474,23 +4646,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_c5adba0692e08f8080ea3ec2bf95727d181df9c72d0fc6db8f77e3703d9523f1", + "typeString": "literal_string \"Invalid to address provided\"" } ], - "id": 1837, + "id": 1873, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "2126:7:17", + "referencedDeclaration": 2658, + "src": "2167:7:17", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 1841, + "id": 1878, "isConstant": false, "isLValue": false, "isPure": false, @@ -4498,15 +4674,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2126:16:17", + "src": "2167:47:17", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1842, + "id": 1879, "nodeType": "ExpressionStatement", - "src": "2126:16:17" + "src": "2167:47:17" }, { "expression": { @@ -4518,19 +4694,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1846, + "id": 1883, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1844, + "id": 1881, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1824, - "src": "2160:6:17", + "referencedDeclaration": 1859, + "src": "2232:6:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4541,14 +4717,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1845, + "id": 1882, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2169:1:17", + "src": "2241:1:17", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -4556,11 +4732,29 @@ }, "value": "0" }, - "src": "2160:10:17", + "src": "2232:10:17", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "496e76616c696420616d6f756e742070726f7669646564", + "id": 1884, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2244:25:17", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_991bec80688b0edba4751e32429f6879002de57199ff2c6b5bf0742d348ba58f", + "typeString": "literal_string \"Invalid amount provided\"" + }, + "value": "Invalid amount provided" } ], "expression": { @@ -4568,23 +4762,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_991bec80688b0edba4751e32429f6879002de57199ff2c6b5bf0742d348ba58f", + "typeString": "literal_string \"Invalid amount provided\"" } ], - "id": 1843, + "id": 1880, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "2152:7:17", + "referencedDeclaration": 2658, + "src": "2224:7:17", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 1847, + "id": 1885, "isConstant": false, "isLValue": false, "isPure": false, @@ -4592,15 +4790,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2152:19:17", + "src": "2224:46:17", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1848, + "id": 1886, "nodeType": "ExpressionStatement", - "src": "2152:19:17" + "src": "2224:46:17" }, { "expression": { @@ -4611,12 +4809,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1851, + "id": 1889, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1820, - "src": "2266:5:17", + "referencedDeclaration": 1855, + "src": "2365:5:17", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4624,12 +4822,12 @@ }, { "argumentTypes": null, - "id": 1852, + "id": 1890, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1824, - "src": "2273:6:17", + "referencedDeclaration": 1859, + "src": "2372:6:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4647,18 +4845,18 @@ "typeString": "uint256" } ], - "id": 1850, + "id": 1888, "name": "isUnderLimit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1959, - "src": "2253:12:17", + "referencedDeclaration": 2000, + "src": "2352:12:17", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) returns (bool)" } }, - "id": 1853, + "id": 1891, "isConstant": false, "isLValue": false, "isPure": false, @@ -4666,11 +4864,29 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2253:27:17", + "src": "2352:27:17", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "4461696c79206c696d697420686173206265656e2072656163686564", + "id": 1892, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2381:30:17", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_8c8c9a9731e3c1970f356c6998c7e6418ab5b55402b68846f03a8bbe49c05905", + "typeString": "literal_string \"Daily limit has been reached\"" + }, + "value": "Daily limit has been reached" } ], "expression": { @@ -4678,23 +4894,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_8c8c9a9731e3c1970f356c6998c7e6418ab5b55402b68846f03a8bbe49c05905", + "typeString": "literal_string \"Daily limit has been reached\"" } ], - "id": 1849, + "id": 1887, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "2245:7:17", + "referencedDeclaration": 2658, + "src": "2344:7:17", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 1854, + "id": 1893, "isConstant": false, "isLValue": false, "isPure": false, @@ -4702,20 +4922,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2245:36:17", + "src": "2344:68:17", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1855, + "id": 1894, "nodeType": "ExpressionStatement", - "src": "2245:36:17" + "src": "2344:68:17" }, { "expression": { "argumentTypes": null, - "id": 1861, + "id": 1900, "isConstant": false, "isLValue": false, "isPure": false, @@ -4726,26 +4946,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1856, + "id": 1895, "name": "dailyLimits", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1758, - "src": "2291:11:17", + "referencedDeclaration": 1793, + "src": "2422:11:17", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1765_storage_$", + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1800_storage_$", "typeString": "mapping(address => struct DailyLimitModule.DailyLimit storage ref)" } }, - "id": 1858, + "id": 1897, "indexExpression": { "argumentTypes": null, - "id": 1857, + "id": 1896, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1820, - "src": "2303:5:17", + "referencedDeclaration": 1855, + "src": "2434:5:17", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4756,21 +4976,21 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2291:18:17", + "src": "2422:18:17", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1765_storage", + "typeIdentifier": "t_struct$_DailyLimit_$1800_storage", "typeString": "struct DailyLimitModule.DailyLimit storage ref" } }, - "id": 1859, + "id": 1898, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "spentToday", "nodeType": "MemberAccess", - "referencedDeclaration": 1762, - "src": "2291:29:17", + "referencedDeclaration": 1797, + "src": "2422:29:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4780,26 +5000,26 @@ "operator": "+=", "rightHandSide": { "argumentTypes": null, - "id": 1860, + "id": 1899, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1824, - "src": "2324:6:17", + "referencedDeclaration": 1859, + "src": "2455:6:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "2291:39:17", + "src": "2422:39:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 1862, + "id": 1901, "nodeType": "ExpressionStatement", - "src": "2291:39:17" + "src": "2422:39:17" }, { "condition": { @@ -4808,19 +5028,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1865, + "id": 1904, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1863, + "id": 1902, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1820, - "src": "2344:5:17", + "referencedDeclaration": 1855, + "src": "2475:5:17", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4831,14 +5051,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1864, + "id": 1903, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2353:1:17", + "src": "2484:1:17", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -4846,29 +5066,29 @@ }, "value": "0" }, - "src": "2344:10:17", + "src": "2475:10:17", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": { - "id": 1900, + "id": 1941, "nodeType": "Block", - "src": "2466:202:17", + "src": "2633:238:17", "statements": [ { "assignments": [ - 1880 + 1920 ], "declarations": [ { "constant": false, - "id": 1880, + "id": 1920, "name": "data", "nodeType": "VariableDeclaration", - "scope": 1903, - "src": "2480:17:17", + "scope": 1944, + "src": "2647:17:17", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -4876,10 +5096,10 @@ "typeString": "bytes" }, "typeName": { - "id": 1879, + "id": 1919, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "2480:5:17", + "src": "2647:5:17", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -4889,21 +5109,21 @@ "visibility": "internal" } ], - "id": 1887, + "id": 1927, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "7472616e7366657228616464726573732c75696e7432353629", - "id": 1883, + "id": 1923, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2524:27:17", + "src": "2691:27:17", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_a9059cbb2ab09eb219583f4a59a5d0623ade346d962bcd4e46b11da047c9049b", @@ -4913,12 +5133,12 @@ }, { "argumentTypes": null, - "id": 1884, + "id": 1924, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1822, - "src": "2553:2:17", + "referencedDeclaration": 1857, + "src": "2720:2:17", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4926,12 +5146,12 @@ }, { "argumentTypes": null, - "id": 1885, + "id": 1925, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1824, - "src": "2557:6:17", + "referencedDeclaration": 1859, + "src": "2724:6:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4955,18 +5175,18 @@ ], "expression": { "argumentTypes": null, - "id": 1881, + "id": 1921, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2585, - "src": "2500:3:17", + "referencedDeclaration": 2641, + "src": "2667:3:17", "typeDescriptions": { "typeIdentifier": "t_magic_abi", "typeString": "abi" } }, - "id": 1882, + "id": 1922, "isConstant": false, "isLValue": false, "isPure": true, @@ -4974,13 +5194,13 @@ "memberName": "encodeWithSignature", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2500:23:17", + "src": "2667:23:17", "typeDescriptions": { "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$", "typeString": "function (string memory) pure returns (bytes memory)" } }, - "id": 1886, + "id": 1926, "isConstant": false, "isLValue": false, "isPure": false, @@ -4988,14 +5208,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2500:64:17", + "src": "2667:64:17", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, "nodeType": "VariableDeclarationStatement", - "src": "2480:84:17" + "src": "2647:84:17" }, { "expression": { @@ -5006,12 +5226,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1891, + "id": 1931, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1820, - "src": "2620:5:17", + "referencedDeclaration": 1855, + "src": "2787:5:17", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5020,14 +5240,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 1892, + "id": 1932, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2627:1:17", + "src": "2794:1:17", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -5037,12 +5257,12 @@ }, { "argumentTypes": null, - "id": 1893, + "id": 1933, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1880, - "src": "2630:4:17", + "referencedDeclaration": 1920, + "src": "2797:4:17", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -5054,18 +5274,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1894, + "id": 1934, "name": "Enum", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 30, - "src": "2636:4:17", + "src": "2803:4:17", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_Enum_$30_$", "typeString": "type(contract Enum)" } }, - "id": 1895, + "id": 1935, "isConstant": false, "isLValue": false, "isPure": false, @@ -5073,13 +5293,13 @@ "memberName": "Operation", "nodeType": "MemberAccess", "referencedDeclaration": 29, - "src": "2636:14:17", + "src": "2803:14:17", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_Operation_$29_$", "typeString": "type(enum Enum.Operation)" } }, - "id": 1896, + "id": 1936, "isConstant": false, "isLValue": false, "isPure": true, @@ -5087,7 +5307,7 @@ "memberName": "Call", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2636:19:17", + "src": "2803:19:17", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" @@ -5115,32 +5335,32 @@ ], "expression": { "argumentTypes": null, - "id": 1889, + "id": 1929, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 717, - "src": "2586:7:17", + "referencedDeclaration": 727, + "src": "2753:7:17", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1100", + "typeIdentifier": "t_contract$_ModuleManager_$1118", "typeString": "contract ModuleManager" } }, - "id": 1890, + "id": 1930, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "execTransactionFromModule", "nodeType": "MemberAccess", - "referencedDeclaration": 927, - "src": "2586:33:17", + "referencedDeclaration": 945, + "src": "2753:33:17", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$returns$_t_bool_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation) external returns (bool)" } }, - "id": 1897, + "id": 1937, "isConstant": false, "isLValue": false, "isPure": false, @@ -5148,11 +5368,29 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2586:70:17", + "src": "2753:70:17", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "436f756c64206e6f74206578656375746520746f6b656e207472616e73666572", + "id": 1938, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2825:34:17", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_00c0b742664159361be6aebbe2af44c4ae7eb95e13260265d1e1cf75d2593709", + "typeString": "literal_string \"Could not execute token transfer\"" + }, + "value": "Could not execute token transfer" } ], "expression": { @@ -5160,23 +5398,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_00c0b742664159361be6aebbe2af44c4ae7eb95e13260265d1e1cf75d2593709", + "typeString": "literal_string \"Could not execute token transfer\"" } ], - "id": 1888, + "id": 1928, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "2578:7:17", + "referencedDeclaration": 2658, + "src": "2745:7:17", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 1898, + "id": 1939, "isConstant": false, "isLValue": false, "isPure": false, @@ -5184,25 +5426,25 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2578:79:17", + "src": "2745:115:17", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1899, + "id": 1940, "nodeType": "ExpressionStatement", - "src": "2578:79:17" + "src": "2745:115:17" } ] }, - "id": 1901, + "id": 1942, "nodeType": "IfStatement", - "src": "2340:328:17", + "src": "2471:400:17", "trueBody": { - "id": 1878, + "id": 1918, "nodeType": "Block", - "src": "2356:104:17", + "src": "2487:140:17", "statements": [ { "expression": { @@ -5213,12 +5455,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1869, + "id": 1908, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1822, - "src": "2412:2:17", + "referencedDeclaration": 1857, + "src": "2543:2:17", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5226,12 +5468,12 @@ }, { "argumentTypes": null, - "id": 1870, + "id": 1909, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1824, - "src": "2416:6:17", + "referencedDeclaration": 1859, + "src": "2547:6:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5240,14 +5482,14 @@ { "argumentTypes": null, "hexValue": "", - "id": 1871, + "id": 1910, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2424:2:17", + "src": "2555:2:17", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", @@ -5261,18 +5503,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1872, + "id": 1911, "name": "Enum", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 30, - "src": "2428:4:17", + "src": "2559:4:17", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_Enum_$30_$", "typeString": "type(contract Enum)" } }, - "id": 1873, + "id": 1912, "isConstant": false, "isLValue": false, "isPure": false, @@ -5280,13 +5522,13 @@ "memberName": "Operation", "nodeType": "MemberAccess", "referencedDeclaration": 29, - "src": "2428:14:17", + "src": "2559:14:17", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_Operation_$29_$", "typeString": "type(enum Enum.Operation)" } }, - "id": 1874, + "id": 1913, "isConstant": false, "isLValue": false, "isPure": true, @@ -5294,7 +5536,7 @@ "memberName": "Call", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2428:19:17", + "src": "2559:19:17", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" @@ -5322,32 +5564,32 @@ ], "expression": { "argumentTypes": null, - "id": 1867, + "id": 1906, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 717, - "src": "2378:7:17", + "referencedDeclaration": 727, + "src": "2509:7:17", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1100", + "typeIdentifier": "t_contract$_ModuleManager_$1118", "typeString": "contract ModuleManager" } }, - "id": 1868, + "id": 1907, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "execTransactionFromModule", "nodeType": "MemberAccess", - "referencedDeclaration": 927, - "src": "2378:33:17", + "referencedDeclaration": 945, + "src": "2509:33:17", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$returns$_t_bool_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation) external returns (bool)" } }, - "id": 1875, + "id": 1914, "isConstant": false, "isLValue": false, "isPure": false, @@ -5355,11 +5597,29 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2378:70:17", + "src": "2509:70:17", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "436f756c64206e6f742065786563757465206574686572207472616e73666572", + "id": 1915, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2581:34:17", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_2fae53cac084168982e43888b6e5eff084959ab65d511777b56b4cbb265d2586", + "typeString": "literal_string \"Could not execute ether transfer\"" + }, + "value": "Could not execute ether transfer" } ], "expression": { @@ -5367,23 +5627,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_2fae53cac084168982e43888b6e5eff084959ab65d511777b56b4cbb265d2586", + "typeString": "literal_string \"Could not execute ether transfer\"" } ], - "id": 1866, + "id": 1905, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "2370:7:17", + "referencedDeclaration": 2658, + "src": "2501:7:17", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 1876, + "id": 1916, "isConstant": false, "isLValue": false, "isPure": false, @@ -5391,15 +5655,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2370:79:17", + "src": "2501:115:17", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1877, + "id": 1917, "nodeType": "ExpressionStatement", - "src": "2370:79:17" + "src": "2501:115:17" } ] } @@ -5407,7 +5671,7 @@ ] }, "documentation": "@dev Returns if Safe transaction is a valid daily limit transaction.\n @param token Address of the token that should be transfered (0 for Ether)\n @param to Address to which the tokens should be transfered\n @param amount Amount of tokens (or Ether) that should be transfered\n @return Returns if transaction can be executed.", - "id": 1903, + "id": 1944, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -5415,15 +5679,15 @@ "name": "executeDailyLimit", "nodeType": "FunctionDefinition", "parameters": { - "id": 1825, + "id": 1860, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1820, + "id": 1855, "name": "token", "nodeType": "VariableDeclaration", - "scope": 1903, + "scope": 1944, "src": "1917:13:17", "stateVariable": false, "storageLocation": "default", @@ -5432,7 +5696,7 @@ "typeString": "address" }, "typeName": { - "id": 1819, + "id": 1854, "name": "address", "nodeType": "ElementaryTypeName", "src": "1917:7:17", @@ -5446,10 +5710,10 @@ }, { "constant": false, - "id": 1822, + "id": 1857, "name": "to", "nodeType": "VariableDeclaration", - "scope": 1903, + "scope": 1944, "src": "1932:10:17", "stateVariable": false, "storageLocation": "default", @@ -5458,7 +5722,7 @@ "typeString": "address" }, "typeName": { - "id": 1821, + "id": 1856, "name": "address", "nodeType": "ElementaryTypeName", "src": "1932:7:17", @@ -5472,10 +5736,10 @@ }, { "constant": false, - "id": 1824, + "id": 1859, "name": "amount", "nodeType": "VariableDeclaration", - "scope": 1903, + "scope": 1944, "src": "1944:14:17", "stateVariable": false, "storageLocation": "default", @@ -5484,7 +5748,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1823, + "id": 1858, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1944:7:17", @@ -5501,50 +5765,50 @@ }, "payable": false, "returnParameters": { - "id": 1826, + "id": 1861, "nodeType": "ParameterList", "parameters": [], "src": "1979:0:17" }, - "scope": 1973, - "src": "1890:784:17", + "scope": 2014, + "src": "1890:987:17", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1958, + "id": 1999, "nodeType": "Block", - "src": "2777:391:17", + "src": "2980:391:17", "statements": [ { "assignments": [ - 1913 + 1954 ], "declarations": [ { "constant": false, - "id": 1913, + "id": 1954, "name": "dailyLimit", "nodeType": "VariableDeclaration", - "scope": 1959, - "src": "2787:29:17", + "scope": 2000, + "src": "2990:29:17", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1765_storage_ptr", + "typeIdentifier": "t_struct$_DailyLimit_$1800_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit" }, "typeName": { "contractScope": null, - "id": 1912, + "id": 1953, "name": "DailyLimit", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1765, - "src": "2787:10:17", + "referencedDeclaration": 1800, + "src": "2990:10:17", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1765_storage_ptr", + "typeIdentifier": "t_struct$_DailyLimit_$1800_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit" } }, @@ -5552,31 +5816,31 @@ "visibility": "internal" } ], - "id": 1917, + "id": 1958, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1914, + "id": 1955, "name": "dailyLimits", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1758, - "src": "2819:11:17", + "referencedDeclaration": 1793, + "src": "3022:11:17", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1765_storage_$", + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1800_storage_$", "typeString": "mapping(address => struct DailyLimitModule.DailyLimit storage ref)" } }, - "id": 1916, + "id": 1957, "indexExpression": { "argumentTypes": null, - "id": 1915, + "id": 1956, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1905, - "src": "2831:5:17", + "referencedDeclaration": 1946, + "src": "3034:5:17", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5587,14 +5851,14 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2819:18:17", + "src": "3022:18:17", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1765_storage", + "typeIdentifier": "t_struct$_DailyLimit_$1800_storage", "typeString": "struct DailyLimitModule.DailyLimit storage ref" } }, "nodeType": "VariableDeclarationStatement", - "src": "2787:50:17" + "src": "2990:50:17" }, { "condition": { @@ -5603,7 +5867,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1922, + "id": 1963, "isConstant": false, "isLValue": false, "isPure": false, @@ -5613,18 +5877,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 1918, + "id": 1959, "name": "today", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1972, - "src": "2851:5:17", + "referencedDeclaration": 2013, + "src": "3054:5:17", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, - "id": 1919, + "id": 1960, "isConstant": false, "isLValue": false, "isPure": false, @@ -5632,7 +5896,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2851:7:17", + "src": "3054:7:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5644,50 +5908,50 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1920, + "id": 1961, "name": "dailyLimit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1913, - "src": "2861:10:17", + "referencedDeclaration": 1954, + "src": "3064:10:17", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1765_storage_ptr", + "typeIdentifier": "t_struct$_DailyLimit_$1800_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit storage pointer" } }, - "id": 1921, + "id": 1962, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "lastDay", "nodeType": "MemberAccess", - "referencedDeclaration": 1764, - "src": "2861:18:17", + "referencedDeclaration": 1799, + "src": "3064:18:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "2851:28:17", + "src": "3054:28:17", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 1937, + "id": 1978, "nodeType": "IfStatement", - "src": "2847:126:17", + "src": "3050:126:17", "trueBody": { - "id": 1936, + "id": 1977, "nodeType": "Block", - "src": "2881:92:17", + "src": "3084:92:17", "statements": [ { "expression": { "argumentTypes": null, - "id": 1928, + "id": 1969, "isConstant": false, "isLValue": false, "isPure": false, @@ -5696,26 +5960,26 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1923, + "id": 1964, "name": "dailyLimit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1913, - "src": "2895:10:17", + "referencedDeclaration": 1954, + "src": "3098:10:17", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1765_storage_ptr", + "typeIdentifier": "t_struct$_DailyLimit_$1800_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit storage pointer" } }, - "id": 1925, + "id": 1966, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "lastDay", "nodeType": "MemberAccess", - "referencedDeclaration": 1764, - "src": "2895:18:17", + "referencedDeclaration": 1799, + "src": "3098:18:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5728,18 +5992,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 1926, + "id": 1967, "name": "today", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1972, - "src": "2916:5:17", + "referencedDeclaration": 2013, + "src": "3119:5:17", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, - "id": 1927, + "id": 1968, "isConstant": false, "isLValue": false, "isPure": false, @@ -5747,26 +6011,26 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2916:7:17", + "src": "3119:7:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "2895:28:17", + "src": "3098:28:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 1929, + "id": 1970, "nodeType": "ExpressionStatement", - "src": "2895:28:17" + "src": "3098:28:17" }, { "expression": { "argumentTypes": null, - "id": 1934, + "id": 1975, "isConstant": false, "isLValue": false, "isPure": false, @@ -5775,26 +6039,26 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1930, + "id": 1971, "name": "dailyLimit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1913, - "src": "2937:10:17", + "referencedDeclaration": 1954, + "src": "3140:10:17", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1765_storage_ptr", + "typeIdentifier": "t_struct$_DailyLimit_$1800_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit storage pointer" } }, - "id": 1932, + "id": 1973, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "spentToday", "nodeType": "MemberAccess", - "referencedDeclaration": 1762, - "src": "2937:21:17", + "referencedDeclaration": 1797, + "src": "3140:21:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5805,14 +6069,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "30", - "id": 1933, + "id": 1974, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2961:1:17", + "src": "3164:1:17", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -5820,15 +6084,15 @@ }, "value": "0" }, - "src": "2937:25:17", + "src": "3140:25:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 1935, + "id": 1976, "nodeType": "ExpressionStatement", - "src": "2937:25:17" + "src": "3140:25:17" } ] } @@ -5840,7 +6104,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 1952, + "id": 1993, "isConstant": false, "isLValue": false, "isPure": false, @@ -5851,7 +6115,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1944, + "id": 1985, "isConstant": false, "isLValue": false, "isPure": false, @@ -5862,7 +6126,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1941, + "id": 1982, "isConstant": false, "isLValue": false, "isPure": false, @@ -5871,26 +6135,26 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1938, + "id": 1979, "name": "dailyLimit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1913, - "src": "2989:10:17", + "referencedDeclaration": 1954, + "src": "3192:10:17", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1765_storage_ptr", + "typeIdentifier": "t_struct$_DailyLimit_$1800_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit storage pointer" } }, - "id": 1939, + "id": 1980, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "spentToday", "nodeType": "MemberAccess", - "referencedDeclaration": 1762, - "src": "2989:21:17", + "referencedDeclaration": 1797, + "src": "3192:21:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5900,18 +6164,18 @@ "operator": "+", "rightExpression": { "argumentTypes": null, - "id": 1940, + "id": 1981, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1907, - "src": "3013:6:17", + "referencedDeclaration": 1948, + "src": "3216:6:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "2989:30:17", + "src": "3192:30:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5923,32 +6187,32 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1942, + "id": 1983, "name": "dailyLimit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1913, - "src": "3023:10:17", + "referencedDeclaration": 1954, + "src": "3226:10:17", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1765_storage_ptr", + "typeIdentifier": "t_struct$_DailyLimit_$1800_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit storage pointer" } }, - "id": 1943, + "id": 1984, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "dailyLimit", "nodeType": "MemberAccess", - "referencedDeclaration": 1760, - "src": "3023:21:17", + "referencedDeclaration": 1795, + "src": "3226:21:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "2989:55:17", + "src": "3192:55:17", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5962,7 +6226,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1951, + "id": 1992, "isConstant": false, "isLValue": false, "isPure": false, @@ -5973,7 +6237,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1948, + "id": 1989, "isConstant": false, "isLValue": false, "isPure": false, @@ -5982,26 +6246,26 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1945, + "id": 1986, "name": "dailyLimit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1913, - "src": "3060:10:17", + "referencedDeclaration": 1954, + "src": "3263:10:17", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1765_storage_ptr", + "typeIdentifier": "t_struct$_DailyLimit_$1800_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit storage pointer" } }, - "id": 1946, + "id": 1987, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "spentToday", "nodeType": "MemberAccess", - "referencedDeclaration": 1762, - "src": "3060:21:17", + "referencedDeclaration": 1797, + "src": "3263:21:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6011,18 +6275,18 @@ "operator": "+", "rightExpression": { "argumentTypes": null, - "id": 1947, + "id": 1988, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1907, - "src": "3084:6:17", + "referencedDeclaration": 1948, + "src": "3287:6:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3060:30:17", + "src": "3263:30:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6034,59 +6298,59 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1949, + "id": 1990, "name": "dailyLimit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1913, - "src": "3093:10:17", + "referencedDeclaration": 1954, + "src": "3296:10:17", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1765_storage_ptr", + "typeIdentifier": "t_struct$_DailyLimit_$1800_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit storage pointer" } }, - "id": 1950, + "id": 1991, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "spentToday", "nodeType": "MemberAccess", - "referencedDeclaration": 1762, - "src": "3093:21:17", + "referencedDeclaration": 1797, + "src": "3296:21:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3060:54:17", + "src": "3263:54:17", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "2989:125:17", + "src": "3192:125:17", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 1955, + "id": 1996, "nodeType": "IfStatement", - "src": "2982:157:17", + "src": "3185:157:17", "trueBody": { "expression": { "argumentTypes": null, "hexValue": "74727565", - "id": 1953, + "id": 1994, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "3135:4:17", + "src": "3338:4:17", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -6094,24 +6358,24 @@ }, "value": "true" }, - "functionReturnParameters": 1911, - "id": 1954, + "functionReturnParameters": 1952, + "id": 1995, "nodeType": "Return", - "src": "3128:11:17" + "src": "3331:11:17" } }, { "expression": { "argumentTypes": null, "hexValue": "66616c7365", - "id": 1956, + "id": 1997, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "3156:5:17", + "src": "3359:5:17", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -6119,15 +6383,15 @@ }, "value": "false" }, - "functionReturnParameters": 1911, - "id": 1957, + "functionReturnParameters": 1952, + "id": 1998, "nodeType": "Return", - "src": "3149:12:17" + "src": "3352:12:17" } ] }, "documentation": null, - "id": 1959, + "id": 2000, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -6135,16 +6399,16 @@ "name": "isUnderLimit", "nodeType": "FunctionDefinition", "parameters": { - "id": 1908, + "id": 1949, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1905, + "id": 1946, "name": "token", "nodeType": "VariableDeclaration", - "scope": 1959, - "src": "2702:13:17", + "scope": 2000, + "src": "2905:13:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6152,10 +6416,10 @@ "typeString": "address" }, "typeName": { - "id": 1904, + "id": 1945, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2702:7:17", + "src": "2905:7:17", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6166,11 +6430,11 @@ }, { "constant": false, - "id": 1907, + "id": 1948, "name": "amount", "nodeType": "VariableDeclaration", - "scope": 1959, - "src": "2717:14:17", + "scope": 2000, + "src": "2920:14:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6178,10 +6442,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1906, + "id": 1947, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2717:7:17", + "src": "2920:7:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6191,20 +6455,20 @@ "visibility": "internal" } ], - "src": "2701:31:17" + "src": "2904:31:17" }, "payable": false, "returnParameters": { - "id": 1911, + "id": 1952, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1910, + "id": 1951, "name": "", "nodeType": "VariableDeclaration", - "scope": 1959, - "src": "2767:4:17", + "scope": 2000, + "src": "2970:4:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6212,10 +6476,10 @@ "typeString": "bool" }, "typeName": { - "id": 1909, + "id": 1950, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "2767:4:17", + "src": "2970:4:17", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6225,19 +6489,19 @@ "visibility": "internal" } ], - "src": "2766:6:17" + "src": "2969:6:17" }, - "scope": 1973, - "src": "2680:488:17", + "scope": 2014, + "src": "2883:488:17", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 1971, + "id": 2012, "nodeType": "Block", - "src": "3332:44:17", + "src": "3535:44:17", "statements": [ { "expression": { @@ -6246,19 +6510,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1969, + "id": 2010, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1964, + "id": 2005, "name": "now", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2600, - "src": "3349:3:17", + "referencedDeclaration": 2656, + "src": "3552:3:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6275,19 +6539,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1967, + "id": 2008, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1965, + "id": 2006, "name": "now", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2600, - "src": "3356:3:17", + "referencedDeclaration": 2656, + "src": "3559:3:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6298,14 +6562,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "31", - "id": 1966, + "id": 2007, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3362:6:17", + "src": "3565:6:17", "subdenomination": "days", "typeDescriptions": { "typeIdentifier": "t_rational_86400_by_1", @@ -6313,41 +6577,41 @@ }, "value": "1" }, - "src": "3356:12:17", + "src": "3559:12:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], - "id": 1968, + "id": 2009, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", - "src": "3355:14:17", + "src": "3558:14:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3349:20:17", + "src": "3552:20:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 1963, - "id": 1970, + "functionReturnParameters": 2004, + "id": 2011, "nodeType": "Return", - "src": "3342:27:17" + "src": "3545:27:17" } ] }, "documentation": "@dev Returns last midnight as Unix timestamp.\n @return Unix timestamp.", - "id": 1972, + "id": 2013, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -6355,23 +6619,23 @@ "name": "today", "nodeType": "FunctionDefinition", "parameters": { - "id": 1960, + "id": 2001, "nodeType": "ParameterList", "parameters": [], - "src": "3274:2:17" + "src": "3477:2:17" }, "payable": false, "returnParameters": { - "id": 1963, + "id": 2004, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1962, + "id": 2003, "name": "", "nodeType": "VariableDeclaration", - "scope": 1972, - "src": "3322:4:17", + "scope": 2013, + "src": "3525:4:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6379,10 +6643,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1961, + "id": 2002, "name": "uint", "nodeType": "ElementaryTypeName", - "src": "3322:4:17", + "src": "3525:4:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6392,20 +6656,20 @@ "visibility": "internal" } ], - "src": "3321:6:17" + "src": "3524:6:17" }, - "scope": 1973, - "src": "3260:116:17", + "scope": 2014, + "src": "3463:116:17", "stateMutability": "view", "superFunction": null, "visibility": "public" } ], - "scope": 1974, - "src": "296:3082:17" + "scope": 2015, + "src": "296:3285:17" } ], - "src": "0:3379:17" + "src": "0:3582:17" }, "compiler": { "name": "solc", @@ -6415,22 +6679,16 @@ "4": { "events": {}, "links": {}, - "address": "0x7fbf23d81d86e6d983bb5526e1456a314057ffb0", - "transactionHash": "0x6c99547388ac2e4a058dfefd9a50240efb12fa4b21c127c89dcca96ca3e918d1" - }, - "1527316019334": { - "events": {}, - "links": {}, - "address": "0xc78d5518d62b7a5bd2659c432996dd55ca07f1eb", - "transactionHash": "0xa9c94eb8ff4c3c857211c3b03fa7356009f4952d8cc71d3953be16cd0152a022" + "address": "0xf7c0628a4cc1c38eef958e62bd15576a9a418cdc", + "transactionHash": "0x7b776cf74bc1a0d0a3ecd14727e4c5b7f4d21b791cdb802c39bf86255d574338" }, "1527420696956": { "events": {}, "links": {}, - "address": "0xf289e80fb030333c4b18827149f3148c1597e5cd", - "transactionHash": "0x25e24bddf0042536191b50d1de301cc2aaa3356b6aac5044c793dcbe358a72f9" + "address": "0x557498e7ad8193f837dd25e1c1a056282004314a", + "transactionHash": "0x609ccb6f82d0ea07fe6a3dbe55f81e0b5bf70b08b12a64a681bb2667c0da7713" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-27T11:31:46.254Z" + "updatedAt": "2018-05-28T06:08:59.478Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/DelegateConstructorProxy.json b/safe-contracts/build/contracts/DelegateConstructorProxy.json index 939b5322..581f7cb6 100644 --- a/safe-contracts/build/contracts/DelegateConstructorProxy.json +++ b/safe-contracts/build/contracts/DelegateConstructorProxy.json @@ -50,10 +50,10 @@ "type": "fallback" } ], - "bytecode": "0x608060405234801561001057600080fd5b5060405161026d38038061026d83398101806040528101908080519060200190929190805182019291905050508160008173ffffffffffffffffffffffffffffffffffffffff161415151561006457600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506000815111156100f15773ffffffffffffffffffffffffffffffffffffffff60005416600080835160208501846127105a03f46040513d6000823e60008214156100ed573d81fd5b5050505b505061016b806101026000396000f30060806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680634555d5c91461008b5780635c60da1b146100b6575b73ffffffffffffffffffffffffffffffffffffffff600054163660008037600080366000845af43d6000803e6000811415610086573d6000fd5b3d6000f35b34801561009757600080fd5b506100a061010d565b6040518082815260200191505060405180910390f35b3480156100c257600080fd5b506100cb610116565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60006002905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050905600a165627a7a723058205cd4a89651ca60d8b50982ec7e3fbdce37b95b9583ada7bf65fc3dad95a54f750029", - "deployedBytecode": "0x60806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680634555d5c91461008b5780635c60da1b146100b6575b73ffffffffffffffffffffffffffffffffffffffff600054163660008037600080366000845af43d6000803e6000811415610086573d6000fd5b3d6000f35b34801561009757600080fd5b506100a061010d565b6040518082815260200191505060405180910390f35b3480156100c257600080fd5b506100cb610116565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60006002905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050905600a165627a7a723058205cd4a89651ca60d8b50982ec7e3fbdce37b95b9583ada7bf65fc3dad95a54f750029", - "sourceMap": "355:882:0:-;;;610:625;8:9:-1;5:2;;;30:1;27;20:12;5:2;610:625:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;668:11;593:1:11;578:11;:16;;;;570:25;;;;;;;;618:11;605:10;;:24;;;;;;;;;;;;;;;;;;508:128;735:1:0;714:11;:18;:22;710:519;;;879:42;875:1;869:8;865:57;1043:1;1040;1026:11;1020:18;1013:4;1000:11;996:22;984:10;976:5;971:3;967:15;954:91;1079:4;1073:11;1124:14;1121:1;1116:3;1101:38;1171:1;1162:7;1159:14;1156:2;;;1188:14;1183:3;1176:27;1156:2;829:390;;;;610:625;;355:882;;;;;;", - "deployedSourceMap": "355:882:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;915:42:11;911:1;905:8;901:57;990:14;987:1;984;971:34;1085:1;1082;1066:14;1063:1;1051:10;1046:3;1033:54;1121:16;1118:1;1115;1100:38;1166:1;1157:7;1154:14;1151:2;;;1181:16;1178:1;1171:27;1151:2;1223:16;1220:1;1213:27;1386:104;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1386:104:11;;;;;;;;;;;;;;;;;;;;;;;1262:118;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1262:118:11;;;;;;;;;;;;;;;;;;;;;;;;;;;1386:104;1452:7;1482:1;1475:8;;1386:104;:::o;1262:118::-;1333:7;1363:10;;;;;;;;;;;1356:17;;1262:118;:::o", + "bytecode": "0x608060405234801561001057600080fd5b506040516102fc3803806102fc83398101806040528101908080519060200190929190805182019291905050508160008173ffffffffffffffffffffffffffffffffffffffff16141515156100f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f496e76616c6964206d617374657220636f707920616464726573732070726f7681526020017f696465640000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506000815111156101805773ffffffffffffffffffffffffffffffffffffffff60005416600080835160208501846127105a03f46040513d6000823e600082141561017c573d81fd5b5050505b505061016b806101916000396000f30060806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680634555d5c91461008b5780635c60da1b146100b6575b73ffffffffffffffffffffffffffffffffffffffff600054163660008037600080366000845af43d6000803e6000811415610086573d6000fd5b3d6000f35b34801561009757600080fd5b506100a061010d565b6040518082815260200191505060405180910390f35b3480156100c257600080fd5b506100cb610116565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60006002905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050905600a165627a7a72305820bab5357556c704bffef0f96326dd27742408be175057ffd8f4f58237314cfd520029", + "deployedBytecode": "0x60806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680634555d5c91461008b5780635c60da1b146100b6575b73ffffffffffffffffffffffffffffffffffffffff600054163660008037600080366000845af43d6000803e6000811415610086573d6000fd5b3d6000f35b34801561009757600080fd5b506100a061010d565b6040518082815260200191505060405180910390f35b3480156100c257600080fd5b506100cb610116565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60006002905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050905600a165627a7a72305820bab5357556c704bffef0f96326dd27742408be175057ffd8f4f58237314cfd520029", + "sourceMap": "355:882:0:-;;;610:625;8:9:-1;5:2;;;30:1;27;20:12;5:2;610:625:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;668:11;593:1:11;578:11;:16;;;;570:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;658:11;645:10;;:24;;;;;;;;;;;;;;;;;;508:168;735:1:0;714:11;:18;:22;710:519;;;879:42;875:1;869:8;865:57;1043:1;1040;1026:11;1020:18;1013:4;1000:11;996:22;984:10;976:5;971:3;967:15;954:91;1079:4;1073:11;1124:14;1121:1;1116:3;1101:38;1171:1;1162:7;1159:14;1156:2;;;1188:14;1183:3;1176:27;1156:2;829:390;;;;610:625;;355:882;;;;;;", + "deployedSourceMap": "355:882:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;955:42:11;951:1;945:8;941:57;1030:14;1027:1;1024;1011:34;1125:1;1122;1106:14;1103:1;1091:10;1086:3;1073:54;1161:16;1158:1;1155;1140:38;1206:1;1197:7;1194:14;1191:2;;;1221:16;1218:1;1211:27;1191:2;1263:16;1260:1;1253:27;1426:104;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1426:104:11;;;;;;;;;;;;;;;;;;;;;;;1302:118;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1302:118:11;;;;;;;;;;;;;;;;;;;;;;;;;;;1426:104;1492:7;1522:1;1515:8;;1426:104;:::o;1302:118::-;1373:7;1403:10;;;;;;;;;;;1396:17;;1302:118;:::o", "source": "pragma solidity 0.4.24;\nimport \"./Proxy.sol\";\n\n\n/// @title Delegate Constructor Proxy - Generic proxy contract allows to execute all transactions applying the code of a master contract. It is possible to send along initialization data with the constructor.\n/// @author Stefan George - \n/// @author Richard Meissner - \ncontract DelegateConstructorProxy is Proxy {\n\n /// @dev Constructor function sets address of master copy contract.\n /// @param _masterCopy Master copy address.\n /// @param initializer Data used for a delegate call to initialize the contract.\n constructor(address _masterCopy, bytes initializer) Proxy(_masterCopy)\n public\n {\n if (initializer.length > 0) {\n // solium-disable-next-line security/no-inline-assembly\n assembly {\n let masterCopy := and(sload(0), 0xffffffffffffffffffffffffffffffffffffffff)\n let success := delegatecall(sub(gas, 10000), masterCopy, add(initializer, 0x20), mload(initializer), 0, 0)\n let ptr := mload(0x40)\n returndatacopy(ptr, 0, returndatasize)\n if eq(success, 0) { revert(ptr, returndatasize) }\n }\n }\n }\n}\n", "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/DelegateConstructorProxy.sol", "ast": { @@ -82,7 +82,7 @@ "id": 2, "nodeType": "ImportDirective", "scope": 24, - "sourceUnit": 1569, + "sourceUnit": 1603, "src": "24:21:0", "symbolAliases": [], "unitAlias": "" @@ -96,10 +96,10 @@ "id": 3, "name": "Proxy", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1568, + "referencedDeclaration": 1602, "src": "392:5:0", "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1568", + "typeIdentifier": "t_contract$_Proxy_$1602", "typeString": "contract Proxy" } }, @@ -109,7 +109,7 @@ } ], "contractDependencies": [ - 1568 + 1602 ], "contractKind": "contract", "documentation": "@title Delegate Constructor Proxy - Generic proxy contract allows to execute all transactions applying the code of a master contract. It is possible to send along initialization data with the constructor.\n @author Stefan George - \n @author Richard Meissner - ", @@ -117,7 +117,7 @@ "id": 23, "linearizedBaseContracts": [ 23, - 1568 + 1602 ], "name": "DelegateConstructorProxy", "nodeType": "ContractDefinition", @@ -264,10 +264,10 @@ "name": "Proxy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1568, + "referencedDeclaration": 1602, "src": "662:5:0", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Proxy_$1568_$", + "typeIdentifier": "t_type$_t_contract$_Proxy_$1602_$", "typeString": "type(contract Proxy)" } }, @@ -382,7 +382,7 @@ "id": 2, "nodeType": "ImportDirective", "scope": 24, - "sourceUnit": 1569, + "sourceUnit": 1603, "src": "24:21:0", "symbolAliases": [], "unitAlias": "" @@ -396,10 +396,10 @@ "id": 3, "name": "Proxy", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1568, + "referencedDeclaration": 1602, "src": "392:5:0", "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1568", + "typeIdentifier": "t_contract$_Proxy_$1602", "typeString": "contract Proxy" } }, @@ -409,7 +409,7 @@ } ], "contractDependencies": [ - 1568 + 1602 ], "contractKind": "contract", "documentation": "@title Delegate Constructor Proxy - Generic proxy contract allows to execute all transactions applying the code of a master contract. It is possible to send along initialization data with the constructor.\n @author Stefan George - \n @author Richard Meissner - ", @@ -417,7 +417,7 @@ "id": 23, "linearizedBaseContracts": [ 23, - 1568 + 1602 ], "name": "DelegateConstructorProxy", "nodeType": "ContractDefinition", @@ -564,10 +564,10 @@ "name": "Proxy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1568, + "referencedDeclaration": 1602, "src": "662:5:0", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Proxy_$1568_$", + "typeIdentifier": "t_type$_t_contract$_Proxy_$1602_$", "typeString": "type(contract Proxy)" } }, @@ -662,5 +662,5 @@ }, "networks": {}, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-27T11:12:45.574Z" + "updatedAt": "2018-05-28T05:59:52.697Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/ERC20Token.json b/safe-contracts/build/contracts/ERC20Token.json index 406c841d..9277a225 100644 --- a/safe-contracts/build/contracts/ERC20Token.json +++ b/safe-contracts/build/contracts/ERC20Token.json @@ -185,14 +185,14 @@ "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/interfaces/ERC20Token.sol", "exportedSymbols": { "ERC20Token": [ - 1685 + 1720 ] }, - "id": 1686, + "id": 1721, "nodeType": "SourceUnit", "nodes": [ { - "id": 1621, + "id": 1656, "literals": [ "solidity", "^", @@ -208,19 +208,19 @@ "contractKind": "contract", "documentation": null, "fullyImplemented": false, - "id": 1685, + "id": 1720, "linearizedBaseContracts": [ - 1685 + 1720 ], "name": "ERC20Token", "nodeType": "ContractDefinition", "nodes": [ { "constant": false, - "id": 1623, + "id": 1658, "name": "totalSupply", "nodeType": "VariableDeclaration", - "scope": 1685, + "scope": 1720, "src": "616:26:14", "stateVariable": true, "storageLocation": "default", @@ -229,7 +229,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1622, + "id": 1657, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "616:7:14", @@ -244,7 +244,7 @@ { "body": null, "documentation": "@param _owner The address from which the balance will be retrieved\n @return The balance", - "id": 1630, + "id": 1665, "implemented": false, "isConstructor": false, "isDeclaredConst": true, @@ -252,15 +252,15 @@ "name": "balanceOf", "nodeType": "FunctionDefinition", "parameters": { - "id": 1626, + "id": 1661, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1625, + "id": 1660, "name": "_owner", "nodeType": "VariableDeclaration", - "scope": 1630, + "scope": 1665, "src": "771:14:14", "stateVariable": false, "storageLocation": "default", @@ -269,7 +269,7 @@ "typeString": "address" }, "typeName": { - "id": 1624, + "id": 1659, "name": "address", "nodeType": "ElementaryTypeName", "src": "771:7:14", @@ -286,15 +286,15 @@ }, "payable": false, "returnParameters": { - "id": 1629, + "id": 1664, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1628, + "id": 1663, "name": "balance", "nodeType": "VariableDeclaration", - "scope": 1630, + "scope": 1665, "src": "812:15:14", "stateVariable": false, "storageLocation": "default", @@ -303,7 +303,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1627, + "id": 1662, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "812:7:14", @@ -318,7 +318,7 @@ ], "src": "811:17:14" }, - "scope": 1685, + "scope": 1720, "src": "752:77:14", "stateMutability": "view", "superFunction": null, @@ -327,7 +327,7 @@ { "body": null, "documentation": "@notice send `_value` token to `_to` from `msg.sender`\n @param _to The address of the recipient\n @param _value The amount of token to be transferred\n @return Whether the transfer was successful or not", - "id": 1639, + "id": 1674, "implemented": false, "isConstructor": false, "isDeclaredConst": false, @@ -335,15 +335,15 @@ "name": "transfer", "nodeType": "FunctionDefinition", "parameters": { - "id": 1635, + "id": 1670, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1632, + "id": 1667, "name": "_to", "nodeType": "VariableDeclaration", - "scope": 1639, + "scope": 1674, "src": "1083:11:14", "stateVariable": false, "storageLocation": "default", @@ -352,7 +352,7 @@ "typeString": "address" }, "typeName": { - "id": 1631, + "id": 1666, "name": "address", "nodeType": "ElementaryTypeName", "src": "1083:7:14", @@ -366,10 +366,10 @@ }, { "constant": false, - "id": 1634, + "id": 1669, "name": "_value", "nodeType": "VariableDeclaration", - "scope": 1639, + "scope": 1674, "src": "1096:14:14", "stateVariable": false, "storageLocation": "default", @@ -378,7 +378,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1633, + "id": 1668, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1096:7:14", @@ -395,15 +395,15 @@ }, "payable": false, "returnParameters": { - "id": 1638, + "id": 1673, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1637, + "id": 1672, "name": "success", "nodeType": "VariableDeclaration", - "scope": 1639, + "scope": 1674, "src": "1128:12:14", "stateVariable": false, "storageLocation": "default", @@ -412,7 +412,7 @@ "typeString": "bool" }, "typeName": { - "id": 1636, + "id": 1671, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1128:4:14", @@ -427,7 +427,7 @@ ], "src": "1127:14:14" }, - "scope": 1685, + "scope": 1720, "src": "1065:77:14", "stateMutability": "nonpayable", "superFunction": null, @@ -436,7 +436,7 @@ { "body": null, "documentation": "@notice send `_value` token to `_to` from `_from` on the condition it is approved by `_from`\n @param _from The address of the sender\n @param _to The address of the recipient\n @param _value The amount of token to be transferred\n @return Whether the transfer was successful or not", - "id": 1650, + "id": 1685, "implemented": false, "isConstructor": false, "isDeclaredConst": false, @@ -444,15 +444,15 @@ "name": "transferFrom", "nodeType": "FunctionDefinition", "parameters": { - "id": 1646, + "id": 1681, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1641, + "id": 1676, "name": "_from", "nodeType": "VariableDeclaration", - "scope": 1650, + "scope": 1685, "src": "1485:13:14", "stateVariable": false, "storageLocation": "default", @@ -461,7 +461,7 @@ "typeString": "address" }, "typeName": { - "id": 1640, + "id": 1675, "name": "address", "nodeType": "ElementaryTypeName", "src": "1485:7:14", @@ -475,10 +475,10 @@ }, { "constant": false, - "id": 1643, + "id": 1678, "name": "_to", "nodeType": "VariableDeclaration", - "scope": 1650, + "scope": 1685, "src": "1500:11:14", "stateVariable": false, "storageLocation": "default", @@ -487,7 +487,7 @@ "typeString": "address" }, "typeName": { - "id": 1642, + "id": 1677, "name": "address", "nodeType": "ElementaryTypeName", "src": "1500:7:14", @@ -501,10 +501,10 @@ }, { "constant": false, - "id": 1645, + "id": 1680, "name": "_value", "nodeType": "VariableDeclaration", - "scope": 1650, + "scope": 1685, "src": "1513:14:14", "stateVariable": false, "storageLocation": "default", @@ -513,7 +513,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1644, + "id": 1679, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1513:7:14", @@ -530,15 +530,15 @@ }, "payable": false, "returnParameters": { - "id": 1649, + "id": 1684, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1648, + "id": 1683, "name": "success", "nodeType": "VariableDeclaration", - "scope": 1650, + "scope": 1685, "src": "1545:12:14", "stateVariable": false, "storageLocation": "default", @@ -547,7 +547,7 @@ "typeString": "bool" }, "typeName": { - "id": 1647, + "id": 1682, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1545:4:14", @@ -562,7 +562,7 @@ ], "src": "1544:14:14" }, - "scope": 1685, + "scope": 1720, "src": "1463:96:14", "stateMutability": "nonpayable", "superFunction": null, @@ -571,7 +571,7 @@ { "body": null, "documentation": "@notice `msg.sender` approves `_spender` to spend `_value` tokens\n @param _spender The address of the account able to transfer the tokens\n @param _value The amount of tokens to be approved for transfer\n @return Whether the approval was successful or not", - "id": 1659, + "id": 1694, "implemented": false, "isConstructor": false, "isDeclaredConst": false, @@ -579,15 +579,15 @@ "name": "approve", "nodeType": "FunctionDefinition", "parameters": { - "id": 1655, + "id": 1690, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1652, + "id": 1687, "name": "_spender", "nodeType": "VariableDeclaration", - "scope": 1659, + "scope": 1694, "src": "1865:16:14", "stateVariable": false, "storageLocation": "default", @@ -596,7 +596,7 @@ "typeString": "address" }, "typeName": { - "id": 1651, + "id": 1686, "name": "address", "nodeType": "ElementaryTypeName", "src": "1865:7:14", @@ -610,10 +610,10 @@ }, { "constant": false, - "id": 1654, + "id": 1689, "name": "_value", "nodeType": "VariableDeclaration", - "scope": 1659, + "scope": 1694, "src": "1883:14:14", "stateVariable": false, "storageLocation": "default", @@ -622,7 +622,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1653, + "id": 1688, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1883:7:14", @@ -639,15 +639,15 @@ }, "payable": false, "returnParameters": { - "id": 1658, + "id": 1693, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1657, + "id": 1692, "name": "success", "nodeType": "VariableDeclaration", - "scope": 1659, + "scope": 1694, "src": "1915:12:14", "stateVariable": false, "storageLocation": "default", @@ -656,7 +656,7 @@ "typeString": "bool" }, "typeName": { - "id": 1656, + "id": 1691, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1915:4:14", @@ -671,7 +671,7 @@ ], "src": "1914:14:14" }, - "scope": 1685, + "scope": 1720, "src": "1848:81:14", "stateMutability": "nonpayable", "superFunction": null, @@ -680,7 +680,7 @@ { "body": null, "documentation": "@param _owner The address of the account owning tokens\n @param _spender The address of the account able to transfer the tokens\n @return Amount of remaining tokens allowed to spent", - "id": 1668, + "id": 1703, "implemented": false, "isConstructor": false, "isDeclaredConst": true, @@ -688,15 +688,15 @@ "name": "allowance", "nodeType": "FunctionDefinition", "parameters": { - "id": 1664, + "id": 1699, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1661, + "id": 1696, "name": "_owner", "nodeType": "VariableDeclaration", - "scope": 1668, + "scope": 1703, "src": "2156:14:14", "stateVariable": false, "storageLocation": "default", @@ -705,7 +705,7 @@ "typeString": "address" }, "typeName": { - "id": 1660, + "id": 1695, "name": "address", "nodeType": "ElementaryTypeName", "src": "2156:7:14", @@ -719,10 +719,10 @@ }, { "constant": false, - "id": 1663, + "id": 1698, "name": "_spender", "nodeType": "VariableDeclaration", - "scope": 1668, + "scope": 1703, "src": "2172:16:14", "stateVariable": false, "storageLocation": "default", @@ -731,7 +731,7 @@ "typeString": "address" }, "typeName": { - "id": 1662, + "id": 1697, "name": "address", "nodeType": "ElementaryTypeName", "src": "2172:7:14", @@ -748,15 +748,15 @@ }, "payable": false, "returnParameters": { - "id": 1667, + "id": 1702, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1666, + "id": 1701, "name": "remaining", "nodeType": "VariableDeclaration", - "scope": 1668, + "scope": 1703, "src": "2215:17:14", "stateVariable": false, "storageLocation": "default", @@ -765,7 +765,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1665, + "id": 1700, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2215:7:14", @@ -780,7 +780,7 @@ ], "src": "2214:19:14" }, - "scope": 1685, + "scope": 1720, "src": "2137:97:14", "stateMutability": "view", "superFunction": null, @@ -789,20 +789,20 @@ { "anonymous": false, "documentation": null, - "id": 1676, + "id": 1711, "name": "Transfer", "nodeType": "EventDefinition", "parameters": { - "id": 1675, + "id": 1710, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1670, + "id": 1705, "indexed": true, "name": "_from", "nodeType": "VariableDeclaration", - "scope": 1676, + "scope": 1711, "src": "2255:21:14", "stateVariable": false, "storageLocation": "default", @@ -811,7 +811,7 @@ "typeString": "address" }, "typeName": { - "id": 1669, + "id": 1704, "name": "address", "nodeType": "ElementaryTypeName", "src": "2255:7:14", @@ -825,11 +825,11 @@ }, { "constant": false, - "id": 1672, + "id": 1707, "indexed": true, "name": "_to", "nodeType": "VariableDeclaration", - "scope": 1676, + "scope": 1711, "src": "2278:19:14", "stateVariable": false, "storageLocation": "default", @@ -838,7 +838,7 @@ "typeString": "address" }, "typeName": { - "id": 1671, + "id": 1706, "name": "address", "nodeType": "ElementaryTypeName", "src": "2278:7:14", @@ -852,11 +852,11 @@ }, { "constant": false, - "id": 1674, + "id": 1709, "indexed": false, "name": "_value", "nodeType": "VariableDeclaration", - "scope": 1676, + "scope": 1711, "src": "2299:14:14", "stateVariable": false, "storageLocation": "default", @@ -865,7 +865,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1673, + "id": 1708, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2299:7:14", @@ -885,20 +885,20 @@ { "anonymous": false, "documentation": null, - "id": 1684, + "id": 1719, "name": "Approval", "nodeType": "EventDefinition", "parameters": { - "id": 1683, + "id": 1718, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1678, + "id": 1713, "indexed": true, "name": "_owner", "nodeType": "VariableDeclaration", - "scope": 1684, + "scope": 1719, "src": "2335:22:14", "stateVariable": false, "storageLocation": "default", @@ -907,7 +907,7 @@ "typeString": "address" }, "typeName": { - "id": 1677, + "id": 1712, "name": "address", "nodeType": "ElementaryTypeName", "src": "2335:7:14", @@ -921,11 +921,11 @@ }, { "constant": false, - "id": 1680, + "id": 1715, "indexed": true, "name": "_spender", "nodeType": "VariableDeclaration", - "scope": 1684, + "scope": 1719, "src": "2359:24:14", "stateVariable": false, "storageLocation": "default", @@ -934,7 +934,7 @@ "typeString": "address" }, "typeName": { - "id": 1679, + "id": 1714, "name": "address", "nodeType": "ElementaryTypeName", "src": "2359:7:14", @@ -948,11 +948,11 @@ }, { "constant": false, - "id": 1682, + "id": 1717, "indexed": false, "name": "_value", "nodeType": "VariableDeclaration", - "scope": 1684, + "scope": 1719, "src": "2385:14:14", "stateVariable": false, "storageLocation": "default", @@ -961,7 +961,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1681, + "id": 1716, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2385:7:14", @@ -979,7 +979,7 @@ "src": "2320:81:14" } ], - "scope": 1686, + "scope": 1721, "src": "129:2274:14" } ], @@ -989,14 +989,14 @@ "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/interfaces/ERC20Token.sol", "exportedSymbols": { "ERC20Token": [ - 1685 + 1720 ] }, - "id": 1686, + "id": 1721, "nodeType": "SourceUnit", "nodes": [ { - "id": 1621, + "id": 1656, "literals": [ "solidity", "^", @@ -1012,19 +1012,19 @@ "contractKind": "contract", "documentation": null, "fullyImplemented": false, - "id": 1685, + "id": 1720, "linearizedBaseContracts": [ - 1685 + 1720 ], "name": "ERC20Token", "nodeType": "ContractDefinition", "nodes": [ { "constant": false, - "id": 1623, + "id": 1658, "name": "totalSupply", "nodeType": "VariableDeclaration", - "scope": 1685, + "scope": 1720, "src": "616:26:14", "stateVariable": true, "storageLocation": "default", @@ -1033,7 +1033,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1622, + "id": 1657, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "616:7:14", @@ -1048,7 +1048,7 @@ { "body": null, "documentation": "@param _owner The address from which the balance will be retrieved\n @return The balance", - "id": 1630, + "id": 1665, "implemented": false, "isConstructor": false, "isDeclaredConst": true, @@ -1056,15 +1056,15 @@ "name": "balanceOf", "nodeType": "FunctionDefinition", "parameters": { - "id": 1626, + "id": 1661, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1625, + "id": 1660, "name": "_owner", "nodeType": "VariableDeclaration", - "scope": 1630, + "scope": 1665, "src": "771:14:14", "stateVariable": false, "storageLocation": "default", @@ -1073,7 +1073,7 @@ "typeString": "address" }, "typeName": { - "id": 1624, + "id": 1659, "name": "address", "nodeType": "ElementaryTypeName", "src": "771:7:14", @@ -1090,15 +1090,15 @@ }, "payable": false, "returnParameters": { - "id": 1629, + "id": 1664, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1628, + "id": 1663, "name": "balance", "nodeType": "VariableDeclaration", - "scope": 1630, + "scope": 1665, "src": "812:15:14", "stateVariable": false, "storageLocation": "default", @@ -1107,7 +1107,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1627, + "id": 1662, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "812:7:14", @@ -1122,7 +1122,7 @@ ], "src": "811:17:14" }, - "scope": 1685, + "scope": 1720, "src": "752:77:14", "stateMutability": "view", "superFunction": null, @@ -1131,7 +1131,7 @@ { "body": null, "documentation": "@notice send `_value` token to `_to` from `msg.sender`\n @param _to The address of the recipient\n @param _value The amount of token to be transferred\n @return Whether the transfer was successful or not", - "id": 1639, + "id": 1674, "implemented": false, "isConstructor": false, "isDeclaredConst": false, @@ -1139,15 +1139,15 @@ "name": "transfer", "nodeType": "FunctionDefinition", "parameters": { - "id": 1635, + "id": 1670, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1632, + "id": 1667, "name": "_to", "nodeType": "VariableDeclaration", - "scope": 1639, + "scope": 1674, "src": "1083:11:14", "stateVariable": false, "storageLocation": "default", @@ -1156,7 +1156,7 @@ "typeString": "address" }, "typeName": { - "id": 1631, + "id": 1666, "name": "address", "nodeType": "ElementaryTypeName", "src": "1083:7:14", @@ -1170,10 +1170,10 @@ }, { "constant": false, - "id": 1634, + "id": 1669, "name": "_value", "nodeType": "VariableDeclaration", - "scope": 1639, + "scope": 1674, "src": "1096:14:14", "stateVariable": false, "storageLocation": "default", @@ -1182,7 +1182,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1633, + "id": 1668, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1096:7:14", @@ -1199,15 +1199,15 @@ }, "payable": false, "returnParameters": { - "id": 1638, + "id": 1673, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1637, + "id": 1672, "name": "success", "nodeType": "VariableDeclaration", - "scope": 1639, + "scope": 1674, "src": "1128:12:14", "stateVariable": false, "storageLocation": "default", @@ -1216,7 +1216,7 @@ "typeString": "bool" }, "typeName": { - "id": 1636, + "id": 1671, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1128:4:14", @@ -1231,7 +1231,7 @@ ], "src": "1127:14:14" }, - "scope": 1685, + "scope": 1720, "src": "1065:77:14", "stateMutability": "nonpayable", "superFunction": null, @@ -1240,7 +1240,7 @@ { "body": null, "documentation": "@notice send `_value` token to `_to` from `_from` on the condition it is approved by `_from`\n @param _from The address of the sender\n @param _to The address of the recipient\n @param _value The amount of token to be transferred\n @return Whether the transfer was successful or not", - "id": 1650, + "id": 1685, "implemented": false, "isConstructor": false, "isDeclaredConst": false, @@ -1248,15 +1248,15 @@ "name": "transferFrom", "nodeType": "FunctionDefinition", "parameters": { - "id": 1646, + "id": 1681, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1641, + "id": 1676, "name": "_from", "nodeType": "VariableDeclaration", - "scope": 1650, + "scope": 1685, "src": "1485:13:14", "stateVariable": false, "storageLocation": "default", @@ -1265,7 +1265,7 @@ "typeString": "address" }, "typeName": { - "id": 1640, + "id": 1675, "name": "address", "nodeType": "ElementaryTypeName", "src": "1485:7:14", @@ -1279,10 +1279,10 @@ }, { "constant": false, - "id": 1643, + "id": 1678, "name": "_to", "nodeType": "VariableDeclaration", - "scope": 1650, + "scope": 1685, "src": "1500:11:14", "stateVariable": false, "storageLocation": "default", @@ -1291,7 +1291,7 @@ "typeString": "address" }, "typeName": { - "id": 1642, + "id": 1677, "name": "address", "nodeType": "ElementaryTypeName", "src": "1500:7:14", @@ -1305,10 +1305,10 @@ }, { "constant": false, - "id": 1645, + "id": 1680, "name": "_value", "nodeType": "VariableDeclaration", - "scope": 1650, + "scope": 1685, "src": "1513:14:14", "stateVariable": false, "storageLocation": "default", @@ -1317,7 +1317,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1644, + "id": 1679, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1513:7:14", @@ -1334,15 +1334,15 @@ }, "payable": false, "returnParameters": { - "id": 1649, + "id": 1684, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1648, + "id": 1683, "name": "success", "nodeType": "VariableDeclaration", - "scope": 1650, + "scope": 1685, "src": "1545:12:14", "stateVariable": false, "storageLocation": "default", @@ -1351,7 +1351,7 @@ "typeString": "bool" }, "typeName": { - "id": 1647, + "id": 1682, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1545:4:14", @@ -1366,7 +1366,7 @@ ], "src": "1544:14:14" }, - "scope": 1685, + "scope": 1720, "src": "1463:96:14", "stateMutability": "nonpayable", "superFunction": null, @@ -1375,7 +1375,7 @@ { "body": null, "documentation": "@notice `msg.sender` approves `_spender` to spend `_value` tokens\n @param _spender The address of the account able to transfer the tokens\n @param _value The amount of tokens to be approved for transfer\n @return Whether the approval was successful or not", - "id": 1659, + "id": 1694, "implemented": false, "isConstructor": false, "isDeclaredConst": false, @@ -1383,15 +1383,15 @@ "name": "approve", "nodeType": "FunctionDefinition", "parameters": { - "id": 1655, + "id": 1690, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1652, + "id": 1687, "name": "_spender", "nodeType": "VariableDeclaration", - "scope": 1659, + "scope": 1694, "src": "1865:16:14", "stateVariable": false, "storageLocation": "default", @@ -1400,7 +1400,7 @@ "typeString": "address" }, "typeName": { - "id": 1651, + "id": 1686, "name": "address", "nodeType": "ElementaryTypeName", "src": "1865:7:14", @@ -1414,10 +1414,10 @@ }, { "constant": false, - "id": 1654, + "id": 1689, "name": "_value", "nodeType": "VariableDeclaration", - "scope": 1659, + "scope": 1694, "src": "1883:14:14", "stateVariable": false, "storageLocation": "default", @@ -1426,7 +1426,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1653, + "id": 1688, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1883:7:14", @@ -1443,15 +1443,15 @@ }, "payable": false, "returnParameters": { - "id": 1658, + "id": 1693, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1657, + "id": 1692, "name": "success", "nodeType": "VariableDeclaration", - "scope": 1659, + "scope": 1694, "src": "1915:12:14", "stateVariable": false, "storageLocation": "default", @@ -1460,7 +1460,7 @@ "typeString": "bool" }, "typeName": { - "id": 1656, + "id": 1691, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1915:4:14", @@ -1475,7 +1475,7 @@ ], "src": "1914:14:14" }, - "scope": 1685, + "scope": 1720, "src": "1848:81:14", "stateMutability": "nonpayable", "superFunction": null, @@ -1484,7 +1484,7 @@ { "body": null, "documentation": "@param _owner The address of the account owning tokens\n @param _spender The address of the account able to transfer the tokens\n @return Amount of remaining tokens allowed to spent", - "id": 1668, + "id": 1703, "implemented": false, "isConstructor": false, "isDeclaredConst": true, @@ -1492,15 +1492,15 @@ "name": "allowance", "nodeType": "FunctionDefinition", "parameters": { - "id": 1664, + "id": 1699, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1661, + "id": 1696, "name": "_owner", "nodeType": "VariableDeclaration", - "scope": 1668, + "scope": 1703, "src": "2156:14:14", "stateVariable": false, "storageLocation": "default", @@ -1509,7 +1509,7 @@ "typeString": "address" }, "typeName": { - "id": 1660, + "id": 1695, "name": "address", "nodeType": "ElementaryTypeName", "src": "2156:7:14", @@ -1523,10 +1523,10 @@ }, { "constant": false, - "id": 1663, + "id": 1698, "name": "_spender", "nodeType": "VariableDeclaration", - "scope": 1668, + "scope": 1703, "src": "2172:16:14", "stateVariable": false, "storageLocation": "default", @@ -1535,7 +1535,7 @@ "typeString": "address" }, "typeName": { - "id": 1662, + "id": 1697, "name": "address", "nodeType": "ElementaryTypeName", "src": "2172:7:14", @@ -1552,15 +1552,15 @@ }, "payable": false, "returnParameters": { - "id": 1667, + "id": 1702, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1666, + "id": 1701, "name": "remaining", "nodeType": "VariableDeclaration", - "scope": 1668, + "scope": 1703, "src": "2215:17:14", "stateVariable": false, "storageLocation": "default", @@ -1569,7 +1569,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1665, + "id": 1700, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2215:7:14", @@ -1584,7 +1584,7 @@ ], "src": "2214:19:14" }, - "scope": 1685, + "scope": 1720, "src": "2137:97:14", "stateMutability": "view", "superFunction": null, @@ -1593,20 +1593,20 @@ { "anonymous": false, "documentation": null, - "id": 1676, + "id": 1711, "name": "Transfer", "nodeType": "EventDefinition", "parameters": { - "id": 1675, + "id": 1710, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1670, + "id": 1705, "indexed": true, "name": "_from", "nodeType": "VariableDeclaration", - "scope": 1676, + "scope": 1711, "src": "2255:21:14", "stateVariable": false, "storageLocation": "default", @@ -1615,7 +1615,7 @@ "typeString": "address" }, "typeName": { - "id": 1669, + "id": 1704, "name": "address", "nodeType": "ElementaryTypeName", "src": "2255:7:14", @@ -1629,11 +1629,11 @@ }, { "constant": false, - "id": 1672, + "id": 1707, "indexed": true, "name": "_to", "nodeType": "VariableDeclaration", - "scope": 1676, + "scope": 1711, "src": "2278:19:14", "stateVariable": false, "storageLocation": "default", @@ -1642,7 +1642,7 @@ "typeString": "address" }, "typeName": { - "id": 1671, + "id": 1706, "name": "address", "nodeType": "ElementaryTypeName", "src": "2278:7:14", @@ -1656,11 +1656,11 @@ }, { "constant": false, - "id": 1674, + "id": 1709, "indexed": false, "name": "_value", "nodeType": "VariableDeclaration", - "scope": 1676, + "scope": 1711, "src": "2299:14:14", "stateVariable": false, "storageLocation": "default", @@ -1669,7 +1669,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1673, + "id": 1708, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2299:7:14", @@ -1689,20 +1689,20 @@ { "anonymous": false, "documentation": null, - "id": 1684, + "id": 1719, "name": "Approval", "nodeType": "EventDefinition", "parameters": { - "id": 1683, + "id": 1718, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1678, + "id": 1713, "indexed": true, "name": "_owner", "nodeType": "VariableDeclaration", - "scope": 1684, + "scope": 1719, "src": "2335:22:14", "stateVariable": false, "storageLocation": "default", @@ -1711,7 +1711,7 @@ "typeString": "address" }, "typeName": { - "id": 1677, + "id": 1712, "name": "address", "nodeType": "ElementaryTypeName", "src": "2335:7:14", @@ -1725,11 +1725,11 @@ }, { "constant": false, - "id": 1680, + "id": 1715, "indexed": true, "name": "_spender", "nodeType": "VariableDeclaration", - "scope": 1684, + "scope": 1719, "src": "2359:24:14", "stateVariable": false, "storageLocation": "default", @@ -1738,7 +1738,7 @@ "typeString": "address" }, "typeName": { - "id": 1679, + "id": 1714, "name": "address", "nodeType": "ElementaryTypeName", "src": "2359:7:14", @@ -1752,11 +1752,11 @@ }, { "constant": false, - "id": 1682, + "id": 1717, "indexed": false, "name": "_value", "nodeType": "VariableDeclaration", - "scope": 1684, + "scope": 1719, "src": "2385:14:14", "stateVariable": false, "storageLocation": "default", @@ -1765,7 +1765,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1681, + "id": 1716, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2385:7:14", @@ -1783,7 +1783,7 @@ "src": "2320:81:14" } ], - "scope": 1686, + "scope": 1721, "src": "129:2274:14" } ], @@ -1795,5 +1795,5 @@ }, "networks": {}, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-27T11:12:45.584Z" + "updatedAt": "2018-05-28T05:59:52.707Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/Enum.json b/safe-contracts/build/contracts/Enum.json index 94e98a6e..fe2d43fd 100644 --- a/safe-contracts/build/contracts/Enum.json +++ b/safe-contracts/build/contracts/Enum.json @@ -147,5 +147,5 @@ }, "networks": {}, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-27T11:12:45.575Z" + "updatedAt": "2018-05-28T05:59:52.697Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/GnosisSafe.json b/safe-contracts/build/contracts/GnosisSafe.json index 26770b8b..1c65be82 100644 --- a/safe-contracts/build/contracts/GnosisSafe.json +++ b/safe-contracts/build/contracts/GnosisSafe.json @@ -301,10 +301,10 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50612100806100206000396000f3006080604052600436106100e6576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632f54bf6e146100e8578063468721a714610143578063610b5925146101fb57806385e332cd1461023e57806386040aa9146102955780638cff635514610305578063a04222e11461035c578063a0e67e2b14610435578063a3f4df7e146104a1578063b2494df314610531578063b7f3358d1461059d578063b91a667f146105cd578063e009cfde1461061d578063e318b52b14610680578063e75235b814610703578063ffa1ad7414610734575b005b3480156100f457600080fd5b50610129600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107c4565b604051808215151515815260200191505060405180910390f35b34801561014f57600080fd5b506101e1600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190505050610846565b604051808215151515815260200191505060405180910390f35b34801561020757600080fd5b5061023c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506108e2565b005b34801561024a57600080fd5b50610253610b5b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156102a157600080fd5b50610303600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050610b60565b005b34801561031157600080fd5b5061031a610de6565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561036857600080fd5b5061043360048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803560ff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050610deb565b005b34801561044157600080fd5b5061044a610e05565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561048d578082015181840152602081019050610472565b505050509050019250505060405180910390f35b3480156104ad57600080fd5b506104b6610fa0565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104f65780820151818401526020810190506104db565b50505050905090810190601f1680156105235780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561053d57600080fd5b50610546610fd9565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561058957808201518184015260208101905061056e565b505050509050019250505060405180910390f35b3480156105a957600080fd5b506105cb600480360381019080803560ff16906020019092919050505061127c565b005b3480156105d957600080fd5b5061061b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff1690602001909291905050506112fb565b005b34801561062957600080fd5b5061067e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506115b3565b005b34801561068c57600080fd5b50610701600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506117e2565b005b34801561070f57600080fd5b50610718611b77565b604051808260ff1660ff16815260200191505060405180910390f35b34801561074057600080fd5b50610749611b8e565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561078957808201518184015260208101905061076e565b50505050905090810190601f1680156107b65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b600080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b6000806000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515156108cb57600080fd5b6108d8858585855a611bc7565b9050949350505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561091c57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141580156109705750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b151561097b57600080fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156109fe57600080fd5b600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600181565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610b9a57600080fd5b8060ff1660016002540310151515610bb157600080fd5b8173ffffffffffffffffffffffffffffffffffffffff16600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610c4a57600080fd5b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600260008154809291906001900391905055508060ff16600360009054906101000a900460ff1660ff16141515610de157610de08161127c565b5b505050565b600181565b610df58484611cc4565b610dff8282611f54565b50505050565b606080600080600254604051908082528060200260200182016040528015610e3c5781602001602082028038833980820191505090505b5092506000915060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515610f9757808383815181101515610eec57fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508180600101925050610ea7565b82935050505090565b6040805190810160405280600e81526020017f4d6f64756c65204d616e6167657200000000000000000000000000000000000081525081565b6060600080606060009250600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415156110eb576000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508280600101935050611047565b8260405190808252806020026020018201604052801561111a5781602001602082028038833980820191505090505b50905060009250600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515611273578181848151811015156111c957fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508280600101935050611184565b80935050505090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156112b657600080fd5b6002548160ff16111515156112ca57600080fd5b60018160ff16101515156112dd57600080fd5b80600360006101000a81548160ff021916908360ff16021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561133557600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff16141580156113895750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b151561139457600080fd5b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561141857600080fd5b60016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506002600081548092919060010191905055508060ff16600360009054906101000a900460ff1660ff161415156115af576115ae8161127c565b5b5050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156115ed57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561168557600080fd5b6000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561181c57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141580156118705750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b151561187b57600080fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156118ff57600080fd5b8173ffffffffffffffffffffffffffffffffffffffff16600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561199857600080fd5b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b6000600360009054906101000a900460ff16905090565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b60008060006002811115611bd757fe5b846002811115611be357fe5b1415611bfc57611bf587878786612092565b9150611cba565b60016002811115611c0957fe5b846002811115611c1557fe5b1415611c2d57611c268786856120ab565b9150611cb9565b611c36856120c2565b905060008173ffffffffffffffffffffffffffffffffffffffff16141591507f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b5b5095945050505050565b600080600080600360009054906101000a900460ff1660ff16141515611ce957600080fd5b84518460ff1611151515611cfc57600080fd5b60018460ff1610151515611d0f57600080fd5b60019250600091505b8451821015611eac578482815181101515611d2f57fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff1614158015611d8f5750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1515611d9a57600080fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611e1e57600080fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508092508180600101925050611d18565b60018060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550845160028190555083600360006101000a81548160ff021916908360ff1602179055505050505050565b6000806000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611fd857600080fd5b6001600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008273ffffffffffffffffffffffffffffffffffffffff1614151561208e5761208282825a6120ab565b151561208d57600080fd5b5b5050565b6000806000845160208601878987f19050949350505050565b60008060008451602086018786f490509392505050565b60008151602083016000f090509190505600a165627a7a72305820320bc4a9d7df05e83245d3a6f7c0c117f907d8577ab1a6fb3eb23fc392c0a32b0029", - "deployedBytecode": "0x6080604052600436106100e6576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632f54bf6e146100e8578063468721a714610143578063610b5925146101fb57806385e332cd1461023e57806386040aa9146102955780638cff635514610305578063a04222e11461035c578063a0e67e2b14610435578063a3f4df7e146104a1578063b2494df314610531578063b7f3358d1461059d578063b91a667f146105cd578063e009cfde1461061d578063e318b52b14610680578063e75235b814610703578063ffa1ad7414610734575b005b3480156100f457600080fd5b50610129600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107c4565b604051808215151515815260200191505060405180910390f35b34801561014f57600080fd5b506101e1600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190505050610846565b604051808215151515815260200191505060405180910390f35b34801561020757600080fd5b5061023c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506108e2565b005b34801561024a57600080fd5b50610253610b5b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156102a157600080fd5b50610303600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050610b60565b005b34801561031157600080fd5b5061031a610de6565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561036857600080fd5b5061043360048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803560ff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050610deb565b005b34801561044157600080fd5b5061044a610e05565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561048d578082015181840152602081019050610472565b505050509050019250505060405180910390f35b3480156104ad57600080fd5b506104b6610fa0565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104f65780820151818401526020810190506104db565b50505050905090810190601f1680156105235780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561053d57600080fd5b50610546610fd9565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561058957808201518184015260208101905061056e565b505050509050019250505060405180910390f35b3480156105a957600080fd5b506105cb600480360381019080803560ff16906020019092919050505061127c565b005b3480156105d957600080fd5b5061061b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff1690602001909291905050506112fb565b005b34801561062957600080fd5b5061067e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506115b3565b005b34801561068c57600080fd5b50610701600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506117e2565b005b34801561070f57600080fd5b50610718611b77565b604051808260ff1660ff16815260200191505060405180910390f35b34801561074057600080fd5b50610749611b8e565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561078957808201518184015260208101905061076e565b50505050905090810190601f1680156107b65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b600080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b6000806000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515156108cb57600080fd5b6108d8858585855a611bc7565b9050949350505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561091c57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141580156109705750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b151561097b57600080fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156109fe57600080fd5b600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600181565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610b9a57600080fd5b8060ff1660016002540310151515610bb157600080fd5b8173ffffffffffffffffffffffffffffffffffffffff16600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610c4a57600080fd5b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600260008154809291906001900391905055508060ff16600360009054906101000a900460ff1660ff16141515610de157610de08161127c565b5b505050565b600181565b610df58484611cc4565b610dff8282611f54565b50505050565b606080600080600254604051908082528060200260200182016040528015610e3c5781602001602082028038833980820191505090505b5092506000915060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515610f9757808383815181101515610eec57fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508180600101925050610ea7565b82935050505090565b6040805190810160405280600e81526020017f4d6f64756c65204d616e6167657200000000000000000000000000000000000081525081565b6060600080606060009250600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415156110eb576000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508280600101935050611047565b8260405190808252806020026020018201604052801561111a5781602001602082028038833980820191505090505b50905060009250600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515611273578181848151811015156111c957fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508280600101935050611184565b80935050505090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156112b657600080fd5b6002548160ff16111515156112ca57600080fd5b60018160ff16101515156112dd57600080fd5b80600360006101000a81548160ff021916908360ff16021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561133557600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff16141580156113895750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b151561139457600080fd5b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561141857600080fd5b60016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506002600081548092919060010191905055508060ff16600360009054906101000a900460ff1660ff161415156115af576115ae8161127c565b5b5050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156115ed57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561168557600080fd5b6000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561181c57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141580156118705750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b151561187b57600080fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156118ff57600080fd5b8173ffffffffffffffffffffffffffffffffffffffff16600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561199857600080fd5b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b6000600360009054906101000a900460ff16905090565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b60008060006002811115611bd757fe5b846002811115611be357fe5b1415611bfc57611bf587878786612092565b9150611cba565b60016002811115611c0957fe5b846002811115611c1557fe5b1415611c2d57611c268786856120ab565b9150611cb9565b611c36856120c2565b905060008173ffffffffffffffffffffffffffffffffffffffff16141591507f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b5b5095945050505050565b600080600080600360009054906101000a900460ff1660ff16141515611ce957600080fd5b84518460ff1611151515611cfc57600080fd5b60018460ff1610151515611d0f57600080fd5b60019250600091505b8451821015611eac578482815181101515611d2f57fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff1614158015611d8f5750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1515611d9a57600080fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611e1e57600080fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508092508180600101925050611d18565b60018060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550845160028190555083600360006101000a81548160ff021916908360ff1602179055505050505050565b6000806000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611fd857600080fd5b6001600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008273ffffffffffffffffffffffffffffffffffffffff1614151561208e5761208282825a6120ab565b151561208d57600080fd5b5b5050565b6000806000845160208601878987f19050949350505050565b60008060008451602086018786f490509392505050565b60008151602083016000f090509190505600a165627a7a72305820320bc4a9d7df05e83245d3a6f7c0c117f907d8577ab1a6fb3eb23fc392c0a32b0029", + "bytecode": "0x608060405234801561001057600080fd5b50612e0a806100206000396000f3006080604052600436106100e6576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632f54bf6e146100e8578063468721a714610143578063610b5925146101fb57806385e332cd1461023e57806386040aa9146102955780638cff635514610305578063a04222e11461035c578063a0e67e2b14610435578063a3f4df7e146104a1578063b2494df314610531578063b7f3358d1461059d578063b91a667f146105cd578063e009cfde1461061d578063e318b52b14610680578063e75235b814610703578063ffa1ad7414610734575b005b3480156100f457600080fd5b50610129600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107c4565b604051808215151515815260200191505060405180910390f35b34801561014f57600080fd5b506101e1600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190505050610846565b604051808215151515815260200191505060405180910390f35b34801561020757600080fd5b5061023c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610971565b005b34801561024a57600080fd5b50610253610d4b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156102a157600080fd5b50610303600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050610d50565b005b34801561031157600080fd5b5061031a611183565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561036857600080fd5b5061043360048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803560ff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050611188565b005b34801561044157600080fd5b5061044a6111a2565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561048d578082015181840152602081019050610472565b505050509050019250505060405180910390f35b3480156104ad57600080fd5b506104b661133d565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104f65780820151818401526020810190506104db565b50505050905090810190601f1680156105235780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561053d57600080fd5b50610546611376565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561058957808201518184015260208101905061056e565b505050509050019250505060405180910390f35b3480156105a957600080fd5b506105cb600480360381019080803560ff169060200190929190505050611619565b005b3480156105d957600080fd5b5061061b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050611845565b005b34801561062957600080fd5b5061067e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611c5e565b005b34801561068c57600080fd5b50610701600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611fab565b005b34801561070f57600080fd5b50610718612530565b604051808260ff1660ff16815260200191505060405180910390f35b34801561074057600080fd5b50610749612547565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561078957808201518184015260208101905061076e565b50505050905090810190601f1680156107b65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b600080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b6000806000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415151561095a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d206181526020017f6e20656e61626c6564206d6f64756c650000000000000000000000000000000081525060400191505060405180910390fd5b610967858585855a612580565b9050949350505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610a3a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614158015610a8e5750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1515610b02576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f496e76616c6964206d6f64756c6520616464726573732070726f76696465640081525060200191505060405180910390fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610bee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4d6f64756c652068617320616c7265616479206265656e20616464656400000081525060200191505060405180910390fd5b600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600181565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610e19576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b8060ff1660016002540310151515610ebf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260358152602001807f4e6577206f776e657220636f756e74206e6565647320746f206265206c61726781526020017f6572207468616e206e6577207468726573686f6c64000000000000000000000081525060400191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff16600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610fe7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f496e76616c696420707265764f776e65722c206f776e6572207061697220707281526020017f6f7669646564000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600260008154809291906001900391905055508060ff16600360009054906101000a900460ff1660ff1614151561117e5761117d81611619565b5b505050565b600181565b611192848461267d565b61119c8282612b66565b50505050565b6060806000806002546040519080825280602002602001820160405280156111d95781602001602082028038833980820191505090505b5092506000915060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415156113345780838381518110151561128957fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508180600101925050611244565b82935050505090565b6040805190810160405280600e81526020017f4d6f64756c65204d616e6167657200000000000000000000000000000000000081525081565b6060600080606060009250600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515611488576000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915082806001019350506113e4565b826040519080825280602002602001820160405280156114b75781602001602082028038833980820191505090505b50905060009250600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415156116105781818481518110151561156657fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508280600101935050611521565b80935050505090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156116e2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b6002548160ff1611151515611785576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f5468726573686f6c642063616e6e6f7420657863656564206f776e657220636f81526020017f756e74000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60018160ff1610151515611827576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f5468726573686f6c64206e6565647320746f206265206772656174657220746881526020017f616e20300000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b80600360006101000a81548160ff021916908360ff16021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561190e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff16141580156119625750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15156119d6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611ac3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4164647265737320697320616c726561647920616e206f776e6572000000000081525060200191505060405180910390fd5b60016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506002600081548092919060010191905055508060ff16600360009054906101000a900460ff1660ff16141515611c5a57611c5981611619565b5b5050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611d27576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611e4e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001807f496e76616c696420707265764d6f64756c652c206d6f64756c6520706169722081526020017f70726f766964656400000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612074576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141580156120c85750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b151561213c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612229576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4164647265737320697320616c726561647920616e206f776e6572000000000081525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff16600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612351576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f496e76616c696420707265764f776e65722c206f776e6572207061697220707281526020017f6f7669646564000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b6000600360009054906101000a900460ff16905090565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000806000600281111561259057fe5b84600281111561259c57fe5b14156125b5576125ae87878786612d9c565b9150612673565b600160028111156125c257fe5b8460028111156125ce57fe5b14156125e6576125df878685612db5565b9150612672565b6125ef85612dcc565b905060008173ffffffffffffffffffffffffffffffffffffffff16141591507f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b5b5095945050505050565b600080600080600360009054906101000a900460ff1660ff1614151561270b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f4f776e657273206861766520616c7265616479206265656e207365747570000081525060200191505060405180910390fd5b84518460ff16111515156127ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f5468726573686f6c642063616e6e6f7420657863656564206f776e657220636f81526020017f756e74000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60018460ff161015151561284f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f5468726573686f6c64206e6565647320746f206265206772656174657220746881526020017f616e20300000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60019250600091505b8451821015612abe57848281518110151561286f57fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff16141580156128cf5750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1515612943576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612a30576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4475706c6963617465206f776e657220616464726573732070726f766964656481525060200191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508092508180600101925050612858565b60018060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550845160028190555083600360006101000a81548160ff021916908360ff1602179055505050505050565b6000806000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612c79576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f4d6f64756c6573206861766520616c7265616479206265656e20696e6974696181526020017f6c697a656400000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6001600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008273ffffffffffffffffffffffffffffffffffffffff16141515612d9857612d2382825a612db5565b1515612d97576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f436f756c64206e6f742066696e69736820696e697469616c697a6174696f6e0081525060200191505060405180910390fd5b5b5050565b6000806000845160208601878987f19050949350505050565b60008060008451602086018786f490509392505050565b60008151602083016000f090509190505600a165627a7a7230582065aa5e98bad88b1083376f6b7b456f01e5be25657c4edb16fad24aa7dc5667cb0029", + "deployedBytecode": "0x6080604052600436106100e6576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632f54bf6e146100e8578063468721a714610143578063610b5925146101fb57806385e332cd1461023e57806386040aa9146102955780638cff635514610305578063a04222e11461035c578063a0e67e2b14610435578063a3f4df7e146104a1578063b2494df314610531578063b7f3358d1461059d578063b91a667f146105cd578063e009cfde1461061d578063e318b52b14610680578063e75235b814610703578063ffa1ad7414610734575b005b3480156100f457600080fd5b50610129600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107c4565b604051808215151515815260200191505060405180910390f35b34801561014f57600080fd5b506101e1600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190505050610846565b604051808215151515815260200191505060405180910390f35b34801561020757600080fd5b5061023c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610971565b005b34801561024a57600080fd5b50610253610d4b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156102a157600080fd5b50610303600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050610d50565b005b34801561031157600080fd5b5061031a611183565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561036857600080fd5b5061043360048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803560ff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050611188565b005b34801561044157600080fd5b5061044a6111a2565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561048d578082015181840152602081019050610472565b505050509050019250505060405180910390f35b3480156104ad57600080fd5b506104b661133d565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104f65780820151818401526020810190506104db565b50505050905090810190601f1680156105235780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561053d57600080fd5b50610546611376565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561058957808201518184015260208101905061056e565b505050509050019250505060405180910390f35b3480156105a957600080fd5b506105cb600480360381019080803560ff169060200190929190505050611619565b005b3480156105d957600080fd5b5061061b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050611845565b005b34801561062957600080fd5b5061067e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611c5e565b005b34801561068c57600080fd5b50610701600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611fab565b005b34801561070f57600080fd5b50610718612530565b604051808260ff1660ff16815260200191505060405180910390f35b34801561074057600080fd5b50610749612547565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561078957808201518184015260208101905061076e565b50505050905090810190601f1680156107b65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b600080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b6000806000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415151561095a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d206181526020017f6e20656e61626c6564206d6f64756c650000000000000000000000000000000081525060400191505060405180910390fd5b610967858585855a612580565b9050949350505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610a3a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614158015610a8e5750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1515610b02576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f496e76616c6964206d6f64756c6520616464726573732070726f76696465640081525060200191505060405180910390fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610bee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4d6f64756c652068617320616c7265616479206265656e20616464656400000081525060200191505060405180910390fd5b600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600181565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610e19576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b8060ff1660016002540310151515610ebf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260358152602001807f4e6577206f776e657220636f756e74206e6565647320746f206265206c61726781526020017f6572207468616e206e6577207468726573686f6c64000000000000000000000081525060400191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff16600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610fe7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f496e76616c696420707265764f776e65722c206f776e6572207061697220707281526020017f6f7669646564000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600260008154809291906001900391905055508060ff16600360009054906101000a900460ff1660ff1614151561117e5761117d81611619565b5b505050565b600181565b611192848461267d565b61119c8282612b66565b50505050565b6060806000806002546040519080825280602002602001820160405280156111d95781602001602082028038833980820191505090505b5092506000915060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415156113345780838381518110151561128957fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508180600101925050611244565b82935050505090565b6040805190810160405280600e81526020017f4d6f64756c65204d616e6167657200000000000000000000000000000000000081525081565b6060600080606060009250600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515611488576000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915082806001019350506113e4565b826040519080825280602002602001820160405280156114b75781602001602082028038833980820191505090505b50905060009250600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415156116105781818481518110151561156657fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508280600101935050611521565b80935050505090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156116e2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b6002548160ff1611151515611785576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f5468726573686f6c642063616e6e6f7420657863656564206f776e657220636f81526020017f756e74000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60018160ff1610151515611827576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f5468726573686f6c64206e6565647320746f206265206772656174657220746881526020017f616e20300000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b80600360006101000a81548160ff021916908360ff16021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561190e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff16141580156119625750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15156119d6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611ac3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4164647265737320697320616c726561647920616e206f776e6572000000000081525060200191505060405180910390fd5b60016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506002600081548092919060010191905055508060ff16600360009054906101000a900460ff1660ff16141515611c5a57611c5981611619565b5b5050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611d27576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611e4e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001807f496e76616c696420707265764d6f64756c652c206d6f64756c6520706169722081526020017f70726f766964656400000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612074576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141580156120c85750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b151561213c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612229576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4164647265737320697320616c726561647920616e206f776e6572000000000081525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff16600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612351576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f496e76616c696420707265764f776e65722c206f776e6572207061697220707281526020017f6f7669646564000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b6000600360009054906101000a900460ff16905090565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000806000600281111561259057fe5b84600281111561259c57fe5b14156125b5576125ae87878786612d9c565b9150612673565b600160028111156125c257fe5b8460028111156125ce57fe5b14156125e6576125df878685612db5565b9150612672565b6125ef85612dcc565b905060008173ffffffffffffffffffffffffffffffffffffffff16141591507f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b5b5095945050505050565b600080600080600360009054906101000a900460ff1660ff1614151561270b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f4f776e657273206861766520616c7265616479206265656e207365747570000081525060200191505060405180910390fd5b84518460ff16111515156127ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f5468726573686f6c642063616e6e6f7420657863656564206f776e657220636f81526020017f756e74000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60018460ff161015151561284f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f5468726573686f6c64206e6565647320746f206265206772656174657220746881526020017f616e20300000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60019250600091505b8451821015612abe57848281518110151561286f57fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff16141580156128cf5750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1515612943576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612a30576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4475706c6963617465206f776e657220616464726573732070726f766964656481525060200191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508092508180600101925050612858565b60018060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550845160028190555083600360006101000a81548160ff021916908360ff1602179055505050505050565b6000806000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612c79576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f4d6f64756c6573206861766520616c7265616479206265656e20696e6974696181526020017f6c697a656400000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6001600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008273ffffffffffffffffffffffffffffffffffffffff16141515612d9857612d2382825a612db5565b1515612d97576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f436f756c64206e6f742066696e69736820696e697469616c697a6174696f6e0081525060200191505060405180910390fd5b5b5050565b6000806000845160208601878987f19050949350505050565b60008060008451602086018786f490509392505050565b60008151602083016000f090509190505600a165627a7a7230582065aa5e98bad88b1083376f6b7b456f01e5be25657c4edb16fad24aa7dc5667cb0029", "sourceMap": "322:674:2:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;322:674:2;;;;;;;", - "deployedSourceMap": "322:674:2:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4841:129:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4841:129:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2522:377:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2522:377:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1235:391;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1235:391:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;499:55;;8:9:-1;5:2;;;30:1;27;20:12;5:2;499:55:8;;;;;;;;;;;;;;;;;;;;;;;;;;;2776:573:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2776:573:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;287:54;;8:9:-1;5:2;;;30:1;27;20:12;5:2;287:54:9;;;;;;;;;;;;;;;;;;;;;;;;;;;693:301:2;;8:9:-1;5:2;;;30:1;27;20:12;5:2;693:301:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5052:458:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5052:458:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;5052:458:9;;;;;;;;;;;;;;;;;401:46:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;401:46:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;401:46:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4423:738;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4423:738:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;4423:738:8;;;;;;;;;;;;;;;;;4398:318:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4398:318:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;1906:528;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1906:528:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1887:299:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1887:299:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3683:526:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3683:526:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4722:113;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4722:113:9;;;;;;;;;;;;;;;;;;;;;;;;;;;453:40:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;453:40:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;453:40:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4841:129:9;4918:4;4962:1;4945:6;:13;4952:5;4945:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;;4938:25;;4841:129;;;:::o;2522:377:8:-;2654:12;2762:1;2739:7;:19;2747:10;2739:19;;;;;;;;;;;;;;;;;;;;;;;;;:24;;;;2731:33;;;;;;;;2846:46;2854:2;2858:5;2865:4;2871:9;2882;2846:7;:46::i;:::-;2836:56;;2522:377;;;;;;:::o;1235:391::-;244:4:13;222:27;;:10;:27;;;214:36;;;;;;;;1401:1:8;1390:6;1382:20;;;;:59;;;;;550:3;1406:35;;1414:6;1406:35;;;;1382:59;1374:68;;;;;;;;1520:1;1501:7;:15;1509:6;1501:15;;;;;;;;;;;;;;;;;;;;;;;;;:20;;;1493:29;;;;;;;;1550:7;:25;550:3;1550:25;;;;;;;;;;;;;;;;;;;;;;;;;1532:7;:15;1540:6;1532:15;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;1613:6;1585:7;:25;550:3;1585:25;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;1235:391;:::o;499:55::-;550:3;499:55;:::o;2776:573:9:-;244:4:13;222:27;;:10;:27;;;214:36;;;;;;;;3000:10:9;2982:28;;2995:1;2982:10;;:14;:28;;2974:37;;;;;;;;3112:5;3091:26;;:6;:17;3098:9;3091:17;;;;;;;;;;;;;;;;;;;;;;;;;:26;;;3083:35;;;;;;;;3148:6;:13;3155:5;3148:13;;;;;;;;;;;;;;;;;;;;;;;;;3128:6;:17;3135:9;3128:17;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;3187:1;3171:6;:13;3178:5;3171:13;;;;;;;;;;;;;;;;:17;;;;;;;;;;;;;;;;;;3198:10;;:12;;;;;;;;;;;;;;3291:10;3278:23;;:9;;;;;;;;;;;:23;;;;3274:68;;;3315:27;3331:10;3315:15;:27::i;:::-;3274:68;2776:573;;;:::o;287:54::-;337:3;287:54;:::o;693:301:2:-;798:32;810:7;819:10;798:11;:32::i;:::-;965:22;978:2;982:4;965:12;:22::i;:::-;693:301;;;;:::o;5052:458:9:-;5118:9;5143:22;5237:13;5264:20;5182:10;;5168:25;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;5168:25:9;;;;5143:50;;5253:1;5237:17;;5287:6;:23;337:3;5287:23;;;;;;;;;;;;;;;;;;;;;;;;;5264:46;;5320:162;337:3;5326:31;;:12;:31;;;;5320:162;;;5388:12;5373:5;5379;5373:12;;;;;;;;;;;;;;;;;:27;;;;;;;;;;;5429:6;:20;5436:12;5429:20;;;;;;;;;;;;;;;;;;;;;;;;;5414:35;;5463:8;;;;;;;5320:162;;;5498:5;5491:12;;5052:458;;;;:::o;401:46:8:-;;;;;;;;;;;;;;;;;;;;:::o;4423:738::-;4490:9;4549:19;4582:21;4782:22;4571:1;4549:23;;4606:7;:25;550:3;4606:25;;;;;;;;;;;;;;;;;;;;;;;;;4582:49;;4641:132;550:3;4647:33;;:13;:33;;;;4641:132;;;4712:7;:22;4720:13;4712:22;;;;;;;;;;;;;;;;;;;;;;;;;4696:38;;4748:14;;;;;;;4641:132;;;4821:11;4807:26;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;4807:26:8;;;;4782:51;;4891:1;4877:15;;4918:7;:25;550:3;4918:25;;;;;;;;;;;;;;;;;;;;;;;;;4902:41;;4953:180;550:3;4959:33;;:13;:33;;;;4953:180;;;5029:13;5008:5;5014:11;5008:18;;;;;;;;;;;;;;;;;:34;;;;;;;;;;;5072:7;:22;5080:13;5072:22;;;;;;;;;;;;;;;;;;;;;;;;;5056:38;;5108:14;;;;;;;4953:180;;;5149:5;5142:12;;4423:738;;;;:::o;4398:318:9:-;244:4:13;222:27;;:10;:27;;;214:36;;;;;;;;4580:10:9;;4566;:24;;;;4558:33;;;;;;;;4675:1;4661:10;:15;;;;4653:24;;;;;;;;4699:10;4687:9;;:22;;;;;;;;;;;;;;;;;;4398:318;:::o;1906:528::-;244:4:13;222:27;;:10;:27;;;214:36;;;;;;;;2076:1:9;2067:5;:10;;;;:38;;;;;337:3;2081:24;;:5;:24;;;;2067:38;2059:47;;;;;;;;2181:1;2164:6;:13;2171:5;2164:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;2156:27;;;;;;;;2209:6;:23;337:3;2209:23;;;;;;;;;;;;;;;;;;;;;;;;;2193:6;:13;2200:5;2193:13;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;2268:5;2242:6;:23;337:3;2242:23;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;2283:10;;:12;;;;;;;;;;;;;2376:10;2363:23;;:9;;;;;;;;;;;:23;;;;2359:68;;;2400:27;2416:10;2400:15;:27::i;:::-;2359:68;1906:528;;:::o;1887:299:8:-;244:4:13;222:27;;:10;:27;;;214:36;;;;;;;;2095:6:8;2064:38;;:7;:19;2072:10;2064:19;;;;;;;;;;;;;;;;;;;;;;;;;:38;;;2056:47;;;;;;;;2135:7;:15;2143:6;2135:15;;;;;;;;;;;;;;;;;;;;;;;;;2113:7;:19;2121:10;2113:19;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;2178:1;2160:7;:15;2168:6;2160:15;;;;;;;;;;;;;;;;:19;;;;;;;;;;;;;;;;;;1887:299;;:::o;3683:526:9:-;244:4:13;222:27;;:10;:27;;;214:36;;;;;;;;3866:1:9;3854:8;:13;;;;:44;;;;;337:3;3871:27;;:8;:27;;;;3854:44;3846:53;;;;;;;;3977:1;3957:6;:16;3964:8;3957:16;;;;;;;;;;;;;;;;;;;;;;;;;:21;;;3949:30;;;;;;;;4080:8;4059:29;;:6;:17;4066:9;4059:17;;;;;;;;;;;;;;;;;;;;;;;;;:29;;;4051:38;;;;;;;;4118:6;:16;4125:8;4118:16;;;;;;;;;;;;;;;;;;;;;;;;;4099:6;:16;4106:8;4099:16;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;4164:8;4144:6;:17;4151:9;4144:17;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;4201:1;4182:6;:16;4189:8;4182:16;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;3683:526;;;:::o;4722:113::-;4791:5;4819:9;;;;;;;;;;;4812:16;;4722:113;:::o;453:40:8:-;;;;;;;;;;;;;;;;;;;;:::o;2905:548::-;3036:12;3307:19;3081;3068:32;;;;;;;;:9;:32;;;;;;;;;3064:383;;;3124:35;3136:2;3140:5;3147:4;3153:5;3124:11;:35::i;:::-;3114:45;;3064:383;;;3191:27;3178:40;;;;;;;;:9;:40;;;;;;;;;3174:273;;;3242:36;3262:2;3266:4;3272:5;3242:19;:36::i;:::-;3232:46;;3174:273;;;3329:19;3343:4;3329:13;:19::i;:::-;3307:41;;3387:1;3372:11;:16;;;;3362:26;;3407:29;3424:11;3407:29;;;;;;;;;;;;;;;;;;;;;;3174:273;3064:383;2905:548;;;;;;;;:::o;641:1025:9:-;1132:20;1185:9;1284:13;875:1;862:9;;;;;;;;;;;:14;;;854:23;;;;;;;;984:7;:14;970:10;:28;;;;962:37;;;;;;;;1083:1;1069:10;:15;;;;1061:24;;;;;;;;337:3;1132:38;;1197:1;1185:13;;1180:363;1204:7;:14;1200:1;:18;1180:363;;;1300:7;1308:1;1300:10;;;;;;;;;;;;;;;;;;1284:26;;1341:1;1332:5;:10;;;;:38;;;;;337:3;1346:24;;:5;:24;;;;1332:38;1324:47;;;;;;;;1454:1;1437:6;:13;1444:5;1437:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;1429:27;;;;;;;;1493:5;1470:6;:20;1477:12;1470:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;1527:5;1512:20;;1220:3;;;;;;;1180:363;;;337:3;1552:6;:20;1559:12;1552:20;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;1613:7;:14;1600:10;:27;;;;1649:10;1637:9;;:22;;;;;;;;;;;;;;;;;;641:1025;;;;;:::o;735:333:8:-;849:1;820:7;:25;550:3;820:25;;;;;;;;;;;;;;;;;;;;;;;;;:30;;;812:39;;;;;;;;550:3;861:7;:25;550:3;861:25;;;;;;;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;925:1;919:2;:7;;;;915:146;;;1020:40;1040:2;1044:4;1050:9;1020:19;:40::i;:::-;1012:49;;;;;;;;915:146;735:333;;:::o;3459:309::-;3568:12;3750:1;3747;3740:4;3734:11;3727:4;3721;3717:15;3710:5;3706:2;3699:5;3694:58;3683:69;;3669:93;;;;;;:::o;3774:303::-;3876:12;4059:1;4056;4049:4;4043:11;4036:4;4030;4026:15;4022:2;4015:5;4002:59;3991:70;;3977:94;;;;;:::o;4083:261::-;4152:19;4322:4;4316:11;4309:4;4303;4299:15;4296:1;4289:39;4274:54;;4260:78;;;:::o", + "deployedSourceMap": "322:674:2:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5374:129:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5374:129:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2710:429:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2710:429:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1311:459;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1311:459:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;499:55;;8:9:-1;5:2;;;30:1;27;20:12;5:2;499:55:8;;;;;;;;;;;;;;;;;;;;;;;;;;;3024:672:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3024:672:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;287:54;;8:9:-1;5:2;;;30:1;27;20:12;5:2;287:54:9;;;;;;;;;;;;;;;;;;;;;;;;;;;693:301:2;;8:9:-1;5:2;;;30:1;27;20:12;5:2;693:301:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5585:458:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5585:458:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;5585:458:9;;;;;;;;;;;;;;;;;401:46:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;401:46:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;401:46:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4663:738;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4663:738:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;4663:738:8;;;;;;;;;;;;;;;;;4852:397:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4852:397:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;2089:593;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2089:593:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2031:343:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2031:343:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4030:633:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4030:633:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5255:113;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5255:113:9;;;;;;;;;;;;;;;;;;;;;;;;;;;453:40:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;453:40:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;453:40:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5374:129:9;5451:4;5495:1;5478:6;:13;5485:5;5478:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;;5471:25;;5374:129;;;:::o;2710:429:8:-;2842:12;2950:1;2927:7;:19;2935:10;2927:19;;;;;;;;;;;;;;;;;;;;;;;;;:24;;;;2919:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3086:46;3094:2;3098:5;3105:4;3111:9;3122;3086:7;:46::i;:::-;3076:56;;2710:429;;;;;;:::o;1311:459::-;244:4:13;222:27;;:10;:27;;;214:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1477:1:8;1466:6;1458:20;;;;:59;;;;;550:3;1482:35;;1490:6;1482:35;;;;1458:59;1450:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1631:1;1612:7;:15;1620:6;1612:15;;;;;;;;;;;;;;;;;;;;;;;;;:20;;;1604:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1694:7;:25;550:3;1694:25;;;;;;;;;;;;;;;;;;;;;;;;;1676:7;:15;1684:6;1676:15;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;1757:6;1729:7;:25;550:3;1729:25;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;1311:459;:::o;499:55::-;550:3;499:55;:::o;3024:672:9:-;244:4:13;222:27;;:10;:27;;;214:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3248:10:9;3230:28;;3243:1;3230:10;;:14;:28;;3222:94;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3417:5;3396:26;;:6;:17;3403:9;3396:17;;;;;;;;;;;;;;;;;;;;;;;;;:26;;;3388:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3495:6;:13;3502:5;3495:13;;;;;;;;;;;;;;;;;;;;;;;;;3475:6;:17;3482:9;3475:17;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;3534:1;3518:6;:13;3525:5;3518:13;;;;;;;;;;;;;;;;:17;;;;;;;;;;;;;;;;;;3545:10;;:12;;;;;;;;;;;;;;3638:10;3625:23;;:9;;;;;;;;;;;:23;;;;3621:68;;;3662:27;3678:10;3662:15;:27::i;:::-;3621:68;3024:672;;;:::o;287:54::-;337:3;287:54;:::o;693:301:2:-;798:32;810:7;819:10;798:11;:32::i;:::-;965:22;978:2;982:4;965:12;:22::i;:::-;693:301;;;;:::o;5585:458:9:-;5651:9;5676:22;5770:13;5797:20;5715:10;;5701:25;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;5701:25:9;;;;5676:50;;5786:1;5770:17;;5820:6;:23;337:3;5820:23;;;;;;;;;;;;;;;;;;;;;;;;;5797:46;;5853:162;337:3;5859:31;;:12;:31;;;;5853:162;;;5921:12;5906:5;5912;5906:12;;;;;;;;;;;;;;;;;:27;;;;;;;;;;;5962:6;:20;5969:12;5962:20;;;;;;;;;;;;;;;;;;;;;;;;;5947:35;;5996:8;;;;;;;5853:162;;;6031:5;6024:12;;5585:458;;;;:::o;401:46:8:-;;;;;;;;;;;;;;;;;;;;:::o;4663:738::-;4730:9;4789:19;4822:21;5022:22;4811:1;4789:23;;4846:7;:25;550:3;4846:25;;;;;;;;;;;;;;;;;;;;;;;;;4822:49;;4881:132;550:3;4887:33;;:13;:33;;;;4881:132;;;4952:7;:22;4960:13;4952:22;;;;;;;;;;;;;;;;;;;;;;;;;4936:38;;4988:14;;;;;;;4881:132;;;5061:11;5047:26;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;5047:26:8;;;;5022:51;;5131:1;5117:15;;5158:7;:25;550:3;5158:25;;;;;;;;;;;;;;;;;;;;;;;;;5142:41;;5193:180;550:3;5199:33;;:13;:33;;;;5193:180;;;5269:13;5248:5;5254:11;5248:18;;;;;;;;;;;;;;;;;:34;;;;;;;;;;;5312:7;:22;5320:13;5312:22;;;;;;;;;;;;;;;;;;;;;;;;;5296:38;;5348:14;;;;;;;5193:180;;;5389:5;5382:12;;4663:738;;;;:::o;4852:397:9:-;244:4:13;222:27;;:10;:27;;;214:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5034:10:9;;5020;:24;;;;5012:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5168:1;5154:10;:15;;;;5146:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5232:10;5220:9;;:22;;;;;;;;;;;;;;;;;;4852:397;:::o;2089:593::-;244:4:13;222:27;;:10;:27;;;214:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2259:1:9;2250:5;:10;;;;:38;;;;;337:3;2264:24;;:5;:24;;;;2250:38;2242:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2398:1;2381:6;:13;2388:5;2381:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;2373:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2457:6;:23;337:3;2457:23;;;;;;;;;;;;;;;;;;;;;;;;;2441:6;:13;2448:5;2441:13;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;2516:5;2490:6;:23;337:3;2490:23;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;2531:10;;:12;;;;;;;;;;;;;2624:10;2611:23;;:9;;;;;;;;;;;:23;;;;2607:68;;;2648:27;2664:10;2648:15;:27::i;:::-;2607:68;2089:593;;:::o;2031:343:8:-;244:4:13;222:27;;:10;:27;;;214:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2239:6:8;2208:38;;:7;:19;2216:10;2208:19;;;;;;;;;;;;;;;;;;;;;;;;;:38;;;2200:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2323:7;:15;2331:6;2323:15;;;;;;;;;;;;;;;;;;;;;;;;;2301:7;:19;2309:10;2301:19;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;2366:1;2348:7;:15;2356:6;2348:15;;;;;;;;;;;;;;;;:19;;;;;;;;;;;;;;;;;;2031:343;;:::o;4030:633:9:-;244:4:13;222:27;;:10;:27;;;214:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4213:1:9;4201:8;:13;;;;:44;;;;;337:3;4218:27;;:8;:27;;;;4201:44;4193:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4358:1;4338:6;:16;4345:8;4338:16;;;;;;;;;;;;;;;;;;;;;;;;;:21;;;4330:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4492:8;4471:29;;:6;:17;4478:9;4471:17;;;;;;;;;;;;;;;;;;;;;;;;;:29;;;4463:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4572:6;:16;4579:8;4572:16;;;;;;;;;;;;;;;;;;;;;;;;;4553:6;:16;4560:8;4553:16;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;4618:8;4598:6;:17;4605:9;4598:17;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;4655:1;4636:6;:16;4643:8;4636:16;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;4030:633;;;:::o;5255:113::-;5324:5;5352:9;;;;;;;;;;;5345:16;;5255:113;:::o;453:40:8:-;;;;;;;;;;;;;;;;;;;;:::o;3145:548::-;3276:12;3547:19;3321;3308:32;;;;;;;;:9;:32;;;;;;;;;3304:383;;;3364:35;3376:2;3380:5;3387:4;3393:5;3364:11;:35::i;:::-;3354:45;;3304:383;;;3431:27;3418:40;;;;;;;;:9;:40;;;;;;;;;3414:273;;;3482:36;3502:2;3506:4;3512:5;3482:19;:36::i;:::-;3472:46;;3414:273;;;3569:19;3583:4;3569:13;:19::i;:::-;3547:41;;3627:1;3612:11;:16;;;;3602:26;;3647:29;3664:11;3647:29;;;;;;;;;;;;;;;;;;;;;;3414:273;3304:383;3145:548;;;;;;;;:::o;641:1208:9:-;1245:20;1298:9;1397:13;875:1;862:9;;;;;;;;;;;:14;;;854:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1018:7;:14;1004:10;:28;;;;996:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1156:1;1142:10;:15;;;;1134:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;337:3;1245:38;;1310:1;1298:13;;1293:433;1317:7;:14;1313:1;:18;1293:433;;;1413:7;1421:1;1413:10;;;;;;;;;;;;;;;;;;1397:26;;1454:1;1445:5;:10;;;;:38;;;;;337:3;1459:24;;:5;:24;;;;1445:38;1437:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1601:1;1584:6;:13;1591:5;1584:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;1576:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1676:5;1653:6;:20;1660:12;1653:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;1710:5;1695:20;;1333:3;;;;;;;1293:433;;;337:3;1735:6;:20;1742:12;1735:20;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;1796:7;:14;1783:10;:27;;;;1832:10;1820:9;;:22;;;;;;;;;;;;;;;;;;641:1208;;;;;:::o;735:409:8:-;849:1;820:7;:25;550:3;820:25;;;;;;;;;;;;;;;;;;;;;;;;;:30;;;812:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;550:3;902:7;:25;550:3;902:25;;;;;;;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;966:1;960:2;:7;;;;956:181;;;1061:40;1081:2;1085:4;1091:9;1061:19;:40::i;:::-;1053:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;956:181;735:409;;:::o;3699:309::-;3808:12;3990:1;3987;3980:4;3974:11;3967:4;3961;3957:15;3950:5;3946:2;3939:5;3934:58;3923:69;;3909:93;;;;;;:::o;4014:303::-;4116:12;4299:1;4296;4289:4;4283:11;4276:4;4270;4266:15;4262:2;4255:5;4242:59;4231:70;;4217:94;;;;;:::o;4323:261::-;4392:19;4562:4;4556:11;4549:4;4543;4539:15;4536:1;4529:39;4514:54;;4500:78;;;:::o", "source": "pragma solidity 0.4.24;\nimport \"./Module.sol\";\nimport \"./ModuleManager.sol\";\nimport \"./OwnerManager.sol\";\n\n\n/// @title Gnosis Safe - A multisignature wallet with support for modules and owners. This contract needs to be extented to add functionality to execute transactions.\n/// @author Stefan George - \ncontract GnosisSafe is ModuleManager, OwnerManager {\n\n /// @dev Setup function sets initial storage of contract.\n /// @param _owners List of Safe owners.\n /// @param _threshold Number of required confirmations for a Safe transaction.\n /// @param to Contract address for optional delegate call.\n /// @param data Data payload for optional delegate call.\n function setup(address[] _owners, uint8 _threshold, address to, bytes data)\n public\n {\n setupOwners(_owners, _threshold);\n // As setupOwners can only be called if the contract has not been initialized we don't need a check for setupModules\n setupModules(to, data);\n }\n}\n", "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafe.sol", "ast": { @@ -333,7 +333,7 @@ "id": 33, "nodeType": "ImportDirective", "scope": 64, - "sourceUnit": 751, + "sourceUnit": 763, "src": "24:22:2", "symbolAliases": [], "unitAlias": "" @@ -344,7 +344,7 @@ "id": 34, "nodeType": "ImportDirective", "scope": 64, - "sourceUnit": 1101, + "sourceUnit": 1119, "src": "47:29:2", "symbolAliases": [], "unitAlias": "" @@ -355,7 +355,7 @@ "id": 35, "nodeType": "ImportDirective", "scope": 64, - "sourceUnit": 1473, + "sourceUnit": 1505, "src": "77:28:2", "symbolAliases": [], "unitAlias": "" @@ -369,10 +369,10 @@ "id": 36, "name": "ModuleManager", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1100, + "referencedDeclaration": 1118, "src": "345:13:2", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1100", + "typeIdentifier": "t_contract$_ModuleManager_$1118", "typeString": "contract ModuleManager" } }, @@ -387,10 +387,10 @@ "id": 38, "name": "OwnerManager", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1472, + "referencedDeclaration": 1504, "src": "360:12:2", "typeDescriptions": { - "typeIdentifier": "t_contract$_OwnerManager_$1472", + "typeIdentifier": "t_contract$_OwnerManager_$1504", "typeString": "contract OwnerManager" } }, @@ -400,9 +400,9 @@ } ], "contractDependencies": [ - 1100, - 1472, - 1619 + 1118, + 1504, + 1654 ], "contractKind": "contract", "documentation": "@title Gnosis Safe - A multisignature wallet with support for modules and owners. This contract needs to be extented to add functionality to execute transactions.\n @author Stefan George - ", @@ -410,9 +410,9 @@ "id": 63, "linearizedBaseContracts": [ 63, - 1472, - 1100, - 1619 + 1504, + 1118, + 1654 ], "name": "GnosisSafe", "nodeType": "ContractDefinition", @@ -469,7 +469,7 @@ "name": "setupOwners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1212, + "referencedDeclaration": 1235, "src": "798:11:2", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$_t_uint8_$returns$__$", @@ -540,7 +540,7 @@ "name": "setupModules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 815, + "referencedDeclaration": 829, "src": "965:12:2", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$__$", @@ -742,7 +742,7 @@ "id": 33, "nodeType": "ImportDirective", "scope": 64, - "sourceUnit": 751, + "sourceUnit": 763, "src": "24:22:2", "symbolAliases": [], "unitAlias": "" @@ -753,7 +753,7 @@ "id": 34, "nodeType": "ImportDirective", "scope": 64, - "sourceUnit": 1101, + "sourceUnit": 1119, "src": "47:29:2", "symbolAliases": [], "unitAlias": "" @@ -764,7 +764,7 @@ "id": 35, "nodeType": "ImportDirective", "scope": 64, - "sourceUnit": 1473, + "sourceUnit": 1505, "src": "77:28:2", "symbolAliases": [], "unitAlias": "" @@ -778,10 +778,10 @@ "id": 36, "name": "ModuleManager", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1100, + "referencedDeclaration": 1118, "src": "345:13:2", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1100", + "typeIdentifier": "t_contract$_ModuleManager_$1118", "typeString": "contract ModuleManager" } }, @@ -796,10 +796,10 @@ "id": 38, "name": "OwnerManager", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1472, + "referencedDeclaration": 1504, "src": "360:12:2", "typeDescriptions": { - "typeIdentifier": "t_contract$_OwnerManager_$1472", + "typeIdentifier": "t_contract$_OwnerManager_$1504", "typeString": "contract OwnerManager" } }, @@ -809,9 +809,9 @@ } ], "contractDependencies": [ - 1100, - 1472, - 1619 + 1118, + 1504, + 1654 ], "contractKind": "contract", "documentation": "@title Gnosis Safe - A multisignature wallet with support for modules and owners. This contract needs to be extented to add functionality to execute transactions.\n @author Stefan George - ", @@ -819,9 +819,9 @@ "id": 63, "linearizedBaseContracts": [ 63, - 1472, - 1100, - 1619 + 1504, + 1118, + 1654 ], "name": "GnosisSafe", "nodeType": "ContractDefinition", @@ -878,7 +878,7 @@ "name": "setupOwners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1212, + "referencedDeclaration": 1235, "src": "798:11:2", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$_t_uint8_$returns$__$", @@ -949,7 +949,7 @@ "name": "setupModules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 815, + "referencedDeclaration": 829, "src": "965:12:2", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$__$", @@ -1131,5 +1131,5 @@ }, "networks": {}, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-27T11:12:45.575Z" + "updatedAt": "2018-05-28T05:59:52.697Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/GnosisSafePersonalEdition.json b/safe-contracts/build/contracts/GnosisSafePersonalEdition.json index 970909dc..60a03dae 100644 --- a/safe-contracts/build/contracts/GnosisSafePersonalEdition.json +++ b/safe-contracts/build/contracts/GnosisSafePersonalEdition.json @@ -494,20 +494,20 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50612e18806100206000396000f300608060405260043610610128576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806314148af21461012a5780632f54bf6e146102d1578063468721a71461032c578063610b5925146103e45780637de7edef1461042757806385e332cd1461046a57806386040aa9146104c15780638cff635514610531578063a04222e114610588578063a0e67e2b14610661578063a3f4df7e146106cd578063ad8a04501461075d578063affed0e0146107a8578063b2494df3146107d3578063b7f3358d1461083f578063b91a667f1461086f578063ba08ea24146108bf578063c4ca3a9c146109c3578063e009cfde14610a77578063e318b52b14610ada578063e75235b814610b5d578063ffa1ad7414610b8e575b005b34801561013657600080fd5b506102cf600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190803590602001909291908035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050610c1e565b005b3480156102dd57600080fd5b50610312600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e41565b604051808215151515815260200191505060405180910390f35b34801561033857600080fd5b506103ca600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190505050610ec3565b604051808215151515815260200191505060405180910390f35b3480156103f057600080fd5b50610425600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f60565b005b34801561043357600080fd5b50610468600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506111dd565b005b34801561047657600080fd5b5061047f611280565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156104cd57600080fd5b5061052f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050611285565b005b34801561053d57600080fd5b5061054661150b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561059457600080fd5b5061065f60048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803560ff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050611510565b005b34801561066d57600080fd5b5061067661152a565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156106b957808201518184015260208101905061069e565b505050509050019250505060405180910390f35b3480156106d957600080fd5b506106e26116c5565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610722578082015181840152602081019050610707565b50505050905090810190601f16801561074f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561076957600080fd5b5061079260048036038101908080359060200190929190803590602001909291905050506116fe565b6040518082815260200191505060405180910390f35b3480156107b457600080fd5b506107bd611713565b6040518082815260200191505060405180910390f35b3480156107df57600080fd5b506107e8611719565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561082b578082015181840152602081019050610810565b505050509050019250505060405180910390f35b34801561084b57600080fd5b5061086d600480360381019080803560ff1690602001909291905050506119c0565b005b34801561087b57600080fd5b506108bd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050611a3f565b005b3480156108cb57600080fd5b506109a5600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190803590602001909291908035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611cf7565b60405180826000191660001916815260200191505060405180910390f35b3480156109cf57600080fd5b50610a61600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190505050611fde565b6040518082815260200191505060405180910390f35b348015610a8357600080fd5b50610ad8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506120fe565b005b348015610ae657600080fd5b50610b5b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612331565b005b348015610b6957600080fd5b50610b726126c6565b604051808260ff1660ff16815260200191505060405180910390f35b348015610b9a57600080fd5b50610ba36126dd565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610be3578082015181840152602081019050610bc8565b50505050905090810190601f168015610c105780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60008060005a9250610c44610c3c8f8f8f8f8f8f8f8f600554611cf7565b878787612716565b60056000815480929190600101919050555089612af85a0310151515610c6957600080fd5b610c768e8e8e8e8e6128dd565b1515610ca9577facfdb444727b3b8994850a379f4bfc8a5ca665a55604339199daafa16f687b1a60405160405180910390a15b6000881115610e3157610cbe5a84038a6116fe565b91508782029050600073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff161415610d46573273ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610d40573d6000803e3d6000fd5b50610e30565b8673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb32836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610de957600080fd5b505af1158015610dfd573d6000803e3d6000fd5b505050506040513d6020811015610e1357600080fd5b81019080805190602001909291905050501515610e2f57600080fd5b5b5b5050505050505050505050505050565b600080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600080600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151515610f4957600080fd5b610f56858585855a6128dd565b9050949350505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610f9a57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614158015610fee5750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1515610ff957600080fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561107d57600080fd5b60016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561121757600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561123d57600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600181565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156112bf57600080fd5b8060ff16600160035403101515156112d657600080fd5b8173ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561136f57600080fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360008154809291906001900391905055508060ff16600460009054906101000a900460ff1660ff1614151561150657611505816119c0565b5b505050565b600181565b61151a84846129da565b6115248282612c6b565b50505050565b6060806000806003546040519080825280602002602001820160405280156115615781602001602082028038833980820191505090505b5092506000915060026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415156116bc5780838381518110151561161157fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081806001019250506115cc565b82935050505090565b6040805190810160405280601c81526020017f476e6f736973205361666520506572736f6e616c2045646974696f6e0000000081525081565b6000615208612af88385010101905092915050565b60055481565b606060008060606000925060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151561182d57600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508280600101935050611788565b8260405190808252806020026020018201604052801561185c5781602001602082028038833980820191505090505b5090506000925060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415156119b75781818481518110151561190c57fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915082806001019350506118c7565b80935050505090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156119fa57600080fd5b6003548160ff1611151515611a0e57600080fd5b60018160ff1610151515611a2157600080fd5b80600460006101000a81548160ff021916908360ff16021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611a7957600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff1614158015611acd5750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1515611ad857600080fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611b5c57600080fd5b60026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506003600081548092919060010191905055508060ff16600460009054906101000a900460ff1660ff16141515611cf357611cf2816119c0565b5b5050565b600060197f01000000000000000000000000000000000000000000000000000000000000000260007f010000000000000000000000000000000000000000000000000000000000000002308c8c8c8c8c8c8c8c8c604051602001808d7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018c7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140189815260200188805190602001908083835b602083101515611e9f5780518252602082019150602081019050602083039250611e7a565b6001836020036101000a038019825116818451168082178552505050505050905001876002811115611ecd57fe5b60ff167f01000000000000000000000000000000000000000000000000000000000000000281526001018681526020018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018281526020019c505050505050505050505050506040516020818303038152906040526040518082805190602001908083835b602083101515611fa25780518252602082019150602081019050602083039250611f7d565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902090509998505050505050505050565b60008060003073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561201d57600080fd5b5a915061202d878787875a6128dd565b151561203857600080fd5b5a8203905080604051602001808281526020019150506040516020818303038152906040526040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156120c35780820151818401526020810190506120a8565b50505050905090810190601f1680156120f05780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561213857600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156121d157600080fd5b600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561236b57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141580156123bf5750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b15156123ca57600080fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561244e57600080fd5b8173ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156124e757600080fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b6000600460009054906101000a900460ff16905090565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000806000809250600090505b600460009054906101000a900460ff1660ff168110156128d457600187878381518110151561274e57fe5b90602001906020020151878481518110151561276657fe5b90602001906020020151878581518110151561277e57fe5b90602001906020020151604051600081526020016040526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000865af11580156127f9573d6000803e3d6000fd5b5050506020604051035191506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415151561288a57600080fd5b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161115156128c457600080fd5b8192508080600101915050612723565b50505050505050565b600080600060028111156128ed57fe5b8460028111156128f957fe5b14156129125761290b87878786612daa565b91506129d0565b6001600281111561291f57fe5b84600281111561292b57fe5b14156129435761293c878685612dc3565b91506129cf565b61294c85612dda565b905060008173ffffffffffffffffffffffffffffffffffffffff16141591507f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b5b5095945050505050565b600080600080600460009054906101000a900460ff1660ff161415156129ff57600080fd5b84518460ff1611151515612a1257600080fd5b60018460ff1610151515612a2557600080fd5b60019250600091505b8451821015612bc2578482815181101515612a4557fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff1614158015612aa55750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1515612ab057600080fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612b3457600080fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508092508180600101925050612a2e565b6001600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550845160038190555083600460006101000a81548160ff021916908360ff1602179055505050505050565b600060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612cf057600080fd5b6001806000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008273ffffffffffffffffffffffffffffffffffffffff16141515612da657612d9a82825a612dc3565b1515612da557600080fd5b5b5050565b6000806000845160208601878987f19050949350505050565b60008060008451602086018786f490509392505050565b60008151602083016000f090509190505600a165627a7a72305820347ad2b5b6fe6e72a8ecd2f9f47f2abf73193416650afadcef171dd55cb8297c0029", - "deployedBytecode": "0x608060405260043610610128576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806314148af21461012a5780632f54bf6e146102d1578063468721a71461032c578063610b5925146103e45780637de7edef1461042757806385e332cd1461046a57806386040aa9146104c15780638cff635514610531578063a04222e114610588578063a0e67e2b14610661578063a3f4df7e146106cd578063ad8a04501461075d578063affed0e0146107a8578063b2494df3146107d3578063b7f3358d1461083f578063b91a667f1461086f578063ba08ea24146108bf578063c4ca3a9c146109c3578063e009cfde14610a77578063e318b52b14610ada578063e75235b814610b5d578063ffa1ad7414610b8e575b005b34801561013657600080fd5b506102cf600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190803590602001909291908035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050610c1e565b005b3480156102dd57600080fd5b50610312600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e41565b604051808215151515815260200191505060405180910390f35b34801561033857600080fd5b506103ca600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190505050610ec3565b604051808215151515815260200191505060405180910390f35b3480156103f057600080fd5b50610425600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f60565b005b34801561043357600080fd5b50610468600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506111dd565b005b34801561047657600080fd5b5061047f611280565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156104cd57600080fd5b5061052f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050611285565b005b34801561053d57600080fd5b5061054661150b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561059457600080fd5b5061065f60048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803560ff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050611510565b005b34801561066d57600080fd5b5061067661152a565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156106b957808201518184015260208101905061069e565b505050509050019250505060405180910390f35b3480156106d957600080fd5b506106e26116c5565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610722578082015181840152602081019050610707565b50505050905090810190601f16801561074f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561076957600080fd5b5061079260048036038101908080359060200190929190803590602001909291905050506116fe565b6040518082815260200191505060405180910390f35b3480156107b457600080fd5b506107bd611713565b6040518082815260200191505060405180910390f35b3480156107df57600080fd5b506107e8611719565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561082b578082015181840152602081019050610810565b505050509050019250505060405180910390f35b34801561084b57600080fd5b5061086d600480360381019080803560ff1690602001909291905050506119c0565b005b34801561087b57600080fd5b506108bd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050611a3f565b005b3480156108cb57600080fd5b506109a5600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190803590602001909291908035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611cf7565b60405180826000191660001916815260200191505060405180910390f35b3480156109cf57600080fd5b50610a61600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190505050611fde565b6040518082815260200191505060405180910390f35b348015610a8357600080fd5b50610ad8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506120fe565b005b348015610ae657600080fd5b50610b5b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612331565b005b348015610b6957600080fd5b50610b726126c6565b604051808260ff1660ff16815260200191505060405180910390f35b348015610b9a57600080fd5b50610ba36126dd565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610be3578082015181840152602081019050610bc8565b50505050905090810190601f168015610c105780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60008060005a9250610c44610c3c8f8f8f8f8f8f8f8f600554611cf7565b878787612716565b60056000815480929190600101919050555089612af85a0310151515610c6957600080fd5b610c768e8e8e8e8e6128dd565b1515610ca9577facfdb444727b3b8994850a379f4bfc8a5ca665a55604339199daafa16f687b1a60405160405180910390a15b6000881115610e3157610cbe5a84038a6116fe565b91508782029050600073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff161415610d46573273ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610d40573d6000803e3d6000fd5b50610e30565b8673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb32836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610de957600080fd5b505af1158015610dfd573d6000803e3d6000fd5b505050506040513d6020811015610e1357600080fd5b81019080805190602001909291905050501515610e2f57600080fd5b5b5b5050505050505050505050505050565b600080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600080600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151515610f4957600080fd5b610f56858585855a6128dd565b9050949350505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610f9a57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614158015610fee5750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1515610ff957600080fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561107d57600080fd5b60016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561121757600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561123d57600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600181565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156112bf57600080fd5b8060ff16600160035403101515156112d657600080fd5b8173ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561136f57600080fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360008154809291906001900391905055508060ff16600460009054906101000a900460ff1660ff1614151561150657611505816119c0565b5b505050565b600181565b61151a84846129da565b6115248282612c6b565b50505050565b6060806000806003546040519080825280602002602001820160405280156115615781602001602082028038833980820191505090505b5092506000915060026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415156116bc5780838381518110151561161157fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081806001019250506115cc565b82935050505090565b6040805190810160405280601c81526020017f476e6f736973205361666520506572736f6e616c2045646974696f6e0000000081525081565b6000615208612af88385010101905092915050565b60055481565b606060008060606000925060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151561182d57600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508280600101935050611788565b8260405190808252806020026020018201604052801561185c5781602001602082028038833980820191505090505b5090506000925060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415156119b75781818481518110151561190c57fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915082806001019350506118c7565b80935050505090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156119fa57600080fd5b6003548160ff1611151515611a0e57600080fd5b60018160ff1610151515611a2157600080fd5b80600460006101000a81548160ff021916908360ff16021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611a7957600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff1614158015611acd5750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1515611ad857600080fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611b5c57600080fd5b60026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506003600081548092919060010191905055508060ff16600460009054906101000a900460ff1660ff16141515611cf357611cf2816119c0565b5b5050565b600060197f01000000000000000000000000000000000000000000000000000000000000000260007f010000000000000000000000000000000000000000000000000000000000000002308c8c8c8c8c8c8c8c8c604051602001808d7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018c7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140189815260200188805190602001908083835b602083101515611e9f5780518252602082019150602081019050602083039250611e7a565b6001836020036101000a038019825116818451168082178552505050505050905001876002811115611ecd57fe5b60ff167f01000000000000000000000000000000000000000000000000000000000000000281526001018681526020018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018281526020019c505050505050505050505050506040516020818303038152906040526040518082805190602001908083835b602083101515611fa25780518252602082019150602081019050602083039250611f7d565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902090509998505050505050505050565b60008060003073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561201d57600080fd5b5a915061202d878787875a6128dd565b151561203857600080fd5b5a8203905080604051602001808281526020019150506040516020818303038152906040526040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156120c35780820151818401526020810190506120a8565b50505050905090810190601f1680156120f05780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561213857600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156121d157600080fd5b600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561236b57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141580156123bf5750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b15156123ca57600080fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561244e57600080fd5b8173ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156124e757600080fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b6000600460009054906101000a900460ff16905090565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000806000809250600090505b600460009054906101000a900460ff1660ff168110156128d457600187878381518110151561274e57fe5b90602001906020020151878481518110151561276657fe5b90602001906020020151878581518110151561277e57fe5b90602001906020020151604051600081526020016040526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000865af11580156127f9573d6000803e3d6000fd5b5050506020604051035191506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415151561288a57600080fd5b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161115156128c457600080fd5b8192508080600101915050612723565b50505050505050565b600080600060028111156128ed57fe5b8460028111156128f957fe5b14156129125761290b87878786612daa565b91506129d0565b6001600281111561291f57fe5b84600281111561292b57fe5b14156129435761293c878685612dc3565b91506129cf565b61294c85612dda565b905060008173ffffffffffffffffffffffffffffffffffffffff16141591507f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b5b5095945050505050565b600080600080600460009054906101000a900460ff1660ff161415156129ff57600080fd5b84518460ff1611151515612a1257600080fd5b60018460ff1610151515612a2557600080fd5b60019250600091505b8451821015612bc2578482815181101515612a4557fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff1614158015612aa55750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1515612ab057600080fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612b3457600080fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508092508180600101925050612a2e565b6001600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550845160038190555083600460006101000a81548160ff021916908360ff1602179055505050505050565b600060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612cf057600080fd5b6001806000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008273ffffffffffffffffffffffffffffffffffffffff16141515612da657612d9a82825a612dc3565b1515612da557600080fd5b5b5050565b6000806000845160208601878987f19050949350505050565b60008060008451602086018786f490509392505050565b60008151602083016000f090509190505600a165627a7a72305820347ad2b5b6fe6e72a8ecd2f9f47f2abf73193416650afadcef171dd55cb8297c0029", - "sourceMap": "449:6193:3:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;449:6193:3;;;;;;;", - "deployedSourceMap": "449:6193:3:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1660:1367;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1660:1367:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4841:129:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4841:129:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2522:377:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2522:377:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1235:391;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1235:391:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;626:208:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;626:208:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;499:55:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;499:55:8;;;;;;;;;;;;;;;;;;;;;;;;;;;2776:573:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2776:573:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;287:54;;8:9:-1;5:2;;;30:1;27;20:12;5:2;287:54:9;;;;;;;;;;;;;;;;;;;;;;;;;;;693:301:2;;8:9:-1;5:2;;;30:1;27;20:12;5:2;693:301:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5052:458:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5052:458:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;5052:458:9;;;;;;;;;;;;;;;;;517:60:3;;8:9:-1;5:2;;;30:1;27;20:12;5:2;517:60:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;517:60:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3459:209;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3459:209:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;779:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;779:20:3;;;;;;;;;;;;;;;;;;;;;;;4423:738:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4423:738:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;4423:738:8;;;;;;;;;;;;;;;;;4398:318:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4398:318:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;1906:528;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1906:528:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6140:500:3;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6140:500:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4586:407;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4586:407:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1887:299:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1887:299:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3683:526:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3683:526:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4722:113;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4722:113:9;;;;;;;;;;;;;;;;;;;;;;;;;;;583:40:3;;8:9:-1;5:2;;;30:1;27;20:12;5:2;583:40:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;583:40:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1660:1367;1994:16;2565;2642:14;2013:9;1994:28;;2032:113;2042:93;2061:2;2065:5;2072:4;2078:9;2089;2100:7;2109:8;2119;2129:5;;2042:18;:93::i;:::-;2137:1;2140;2143;2032:9;:113::i;:::-;2206:5;;:7;;;;;;;;;;;;;2264:9;737:5;2231:9;:29;:42;;2223:51;;;;;;;;2289:46;2297:2;2301:5;2308:4;2314:9;2325;2289:7;:46::i;:::-;2288:47;2284:100;;;2356:17;;;;;;;;;;2284:100;2548:1;2537:8;:12;2533:486;;;2584:44;2609:9;2598:8;:20;2620:7;2584:13;:44::i;:::-;2565:63;;2670:8;2659;:19;2642:36;;2716:1;2696:22;;:8;:22;;;2692:317;;;2805:9;:18;;:26;2824:6;2805:26;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2805:26:3;2692:317;;;2956:8;2945:29;;;2975:9;2986:6;2945:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2945:48:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2945:48:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2945:48:3;;;;;;;;;;;;;;;;2937:57;;;;;;;;2692:317;2533:486;1660:1367;;;;;;;;;;;;;;:::o;4841:129:9:-;4918:4;4962:1;4945:6;:13;4952:5;4945:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;;4938:25;;4841:129;;;:::o;2522:377:8:-;2654:12;2762:1;2739:7;:19;2747:10;2739:19;;;;;;;;;;;;;;;;;;;;;;;;;:24;;;;2731:33;;;;;;;;2846:46;2854:2;2858:5;2865:4;2871:9;2882;2846:7;:46::i;:::-;2836:56;;2522:377;;;;;;:::o;1235:391::-;244:4:13;222:27;;:10;:27;;;214:36;;;;;;;;1401:1:8;1390:6;1382:20;;;;:59;;;;;550:3;1406:35;;1414:6;1406:35;;;;1382:59;1374:68;;;;;;;;1520:1;1501:7;:15;1509:6;1501:15;;;;;;;;;;;;;;;;;;;;;;;;;:20;;;1493:29;;;;;;;;1550:7;:25;550:3;1550:25;;;;;;;;;;;;;;;;;;;;;;;;;1532:7;:15;1540:6;1532:15;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;1613:6;1585:7;:25;550:3;1585:25;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;1235:391;:::o;626:208:5:-;244:4:13;222:27;;:10;:27;;;214:36;;;;;;;;791:1:5;776:11;:16;;;;768:25;;;;;;;;816:11;803:10;;:24;;;;;;;;;;;;;;;;;;626:208;:::o;499:55:8:-;550:3;499:55;:::o;2776:573:9:-;244:4:13;222:27;;:10;:27;;;214:36;;;;;;;;3000:10:9;2982:28;;2995:1;2982:10;;:14;:28;;2974:37;;;;;;;;3112:5;3091:26;;:6;:17;3098:9;3091:17;;;;;;;;;;;;;;;;;;;;;;;;;:26;;;3083:35;;;;;;;;3148:6;:13;3155:5;3148:13;;;;;;;;;;;;;;;;;;;;;;;;;3128:6;:17;3135:9;3128:17;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;3187:1;3171:6;:13;3178:5;3171:13;;;;;;;;;;;;;;;;:17;;;;;;;;;;;;;;;;;;3198:10;;:12;;;;;;;;;;;;;;3291:10;3278:23;;:9;;;;;;;;;;;:23;;;;3274:68;;;3315:27;3331:10;3315:15;:27::i;:::-;3274:68;2776:573;;;:::o;287:54::-;337:3;287:54;:::o;693:301:2:-;798:32;810:7;819:10;798:11;:32::i;:::-;965:22;978:2;982:4;965:12;:22::i;:::-;693:301;;;;:::o;5052:458:9:-;5118:9;5143:22;5237:13;5264:20;5182:10;;5168:25;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;5168:25:9;;;;5143:50;;5253:1;5237:17;;5287:6;:23;337:3;5287:23;;;;;;;;;;;;;;;;;;;;;;;;;5264:46;;5320:162;337:3;5326:31;;:12;:31;;;;5320:162;;;5388:12;5373:5;5379;5373:12;;;;;;;;;;;;;;;;;:27;;;;;;;;;;;5429:6;:20;5436:12;5429:20;;;;;;;;;;;;;;;;;;;;;;;;;5414:35;;5463:8;;;;;;;5320:162;;;5498:5;5491:12;;5052:458;;;;:::o;517:60:3:-;;;;;;;;;;;;;;;;;;;;:::o;3459:209::-;3568:7;680:5;737;3614:7;3599:12;:22;:42;:62;3592:69;;3459:209;;;;:::o;779:20::-;;;;:::o;4423:738:8:-;4490:9;4549:19;4582:21;4782:22;4571:1;4549:23;;4606:7;:25;550:3;4606:25;;;;;;;;;;;;;;;;;;;;;;;;;4582:49;;4641:132;550:3;4647:33;;:13;:33;;;;4641:132;;;4712:7;:22;4720:13;4712:22;;;;;;;;;;;;;;;;;;;;;;;;;4696:38;;4748:14;;;;;;;4641:132;;;4821:11;4807:26;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;4807:26:8;;;;4782:51;;4891:1;4877:15;;4918:7;:25;550:3;4918:25;;;;;;;;;;;;;;;;;;;;;;;;;4902:41;;4953:180;550:3;4959:33;;:13;:33;;;;4953:180;;;5029:13;5008:5;5014:11;5008:18;;;;;;;;;;;;;;;;;:34;;;;;;;;;;;5072:7;:22;5080:13;5072:22;;;;;;;;;;;;;;;;;;;;;;;;;5056:38;;5108:14;;;;;;;4953:180;;;5149:5;5142:12;;4423:738;;;;:::o;4398:318:9:-;244:4:13;222:27;;:10;:27;;;214:36;;;;;;;;4580:10:9;;4566;:24;;;;4558:33;;;;;;;;4675:1;4661:10;:15;;;;4653:24;;;;;;;;4699:10;4687:9;;:22;;;;;;;;;;;;;;;;;;4398:318;:::o;1906:528::-;244:4:13;222:27;;:10;:27;;;214:36;;;;;;;;2076:1:9;2067:5;:10;;;;:38;;;;;337:3;2081:24;;:5;:24;;;;2067:38;2059:47;;;;;;;;2181:1;2164:6;:13;2171:5;2164:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;2156:27;;;;;;;;2209:6;:23;337:3;2209:23;;;;;;;;;;;;;;;;;;;;;;;;;2193:6;:13;2200:5;2193:13;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;2268:5;2242:6;:23;337:3;2242:23;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;2283:10;;:12;;;;;;;;;;;;;2376:10;2363:23;;:9;;;;;;;;;;;:23;;;;2359:68;;;2400:27;2416:10;2400:15;:27::i;:::-;2359:68;1906:528;;:::o;6140:500:3:-;6451:7;6526:4;6521:10;;6538:1;6533:7;;6542:4;6548:2;6552:5;6559:4;6565:9;6576;6587:7;6596:8;6606;6616:6;6504:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;;;6504:119:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;6504:119:3;;;6481:152;;;;;;;;;;;;;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;;;6481:152:3;;;;;;;;;;;;;;;;6474:159;;6140:500;;;;;;;;;;;:::o;4586:407::-;4725:7;4748:16;4851:19;244:4:13;222:27;;:10;:27;;;214:36;;;;;;;;4767:9:3;4748:28;;4794:46;4802:2;4806:5;4813:4;4819:9;4830;4794:7;:46::i;:::-;4786:55;;;;;;;;4884:9;4873:8;:20;4851:42;;4972:11;4955:29;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;4955:29:3;;;4941: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;4941:45:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1887:299:8;244:4:13;222:27;;:10;:27;;;214:36;;;;;;;;2095:6:8;2064:38;;:7;:19;2072:10;2064:19;;;;;;;;;;;;;;;;;;;;;;;;;:38;;;2056:47;;;;;;;;2135:7;:15;2143:6;2135:15;;;;;;;;;;;;;;;;;;;;;;;;;2113:7;:19;2121:10;2113:19;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;2178:1;2160:7;:15;2168:6;2160:15;;;;;;;;;;;;;;;;:19;;;;;;;;;;;;;;;;;;1887:299;;:::o;3683:526:9:-;244:4:13;222:27;;:10;:27;;;214:36;;;;;;;;3866:1:9;3854:8;:13;;;;:44;;;;;337:3;3871:27;;:8;:27;;;;3854:44;3846:53;;;;;;;;3977:1;3957:6;:16;3964:8;3957:16;;;;;;;;;;;;;;;;;;;;;;;;;:21;;;3949:30;;;;;;;;4080:8;4059:29;;:6;:17;4066:9;4059:17;;;;;;;;;;;;;;;;;;;;;;;;;:29;;;4051:38;;;;;;;;4118:6;:16;4125:8;4118:16;;;;;;;;;;;;;;;;;;;;;;;;;4099:6;:16;4106:8;4099:16;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;4164:8;4144:6;:17;4151:9;4144:17;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;4201:1;4182:6;:16;4189:8;4182:16;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;3683:526;;;:::o;4722:113::-;4791:5;4819:9;;;;;;;;;;;4812:16;;4722:113;:::o;583:40:3:-;;;;;;;;;;;;;;;;;;;;:::o;4999:541::-;5165:17;5205:20;5235:9;5193:1;5165:30;;5305:1;5301:5;;5296:238;5312:9;;;;;;;;;;;5308:13;;:1;:13;5296:238;;;5357:33;5367:4;5373:1;5375;5373:4;;;;;;;;;;;;;;;;;;5379:1;5381;5379:4;;;;;;;;;;;;;;;;;;5385:1;5387;5385:4;;;;;;;;;;;;;;;;;;5357:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5357:33:3;;;;;;;;5342:48;;5436:1;5412:6;:20;5419:12;5412:20;;;;;;;;;;;;;;;;;;;;;;;;;:25;;;;5404:34;;;;;;;;5475:9;5460:24;;:12;:24;;;5452:33;;;;;;;;5511:12;5499:24;;5323:3;;;;;;;5296:238;;;4999:541;;;;;;;:::o;2905:548:8:-;3036:12;3307:19;3081;3068:32;;;;;;;;:9;:32;;;;;;;;;3064:383;;;3124:35;3136:2;3140:5;3147:4;3153:5;3124:11;:35::i;:::-;3114:45;;3064:383;;;3191:27;3178:40;;;;;;;;:9;:40;;;;;;;;;3174:273;;;3242:36;3262:2;3266:4;3272:5;3242:19;:36::i;:::-;3232:46;;3174:273;;;3329:19;3343:4;3329:13;:19::i;:::-;3307:41;;3387:1;3372:11;:16;;;;3362:26;;3407:29;3424:11;3407:29;;;;;;;;;;;;;;;;;;;;;;3174:273;3064:383;2905:548;;;;;;;;:::o;641:1025:9:-;1132:20;1185:9;1284:13;875:1;862:9;;;;;;;;;;;:14;;;854:23;;;;;;;;984:7;:14;970:10;:28;;;;962:37;;;;;;;;1083:1;1069:10;:15;;;;1061:24;;;;;;;;337:3;1132:38;;1197:1;1185:13;;1180:363;1204:7;:14;1200:1;:18;1180:363;;;1300:7;1308:1;1300:10;;;;;;;;;;;;;;;;;;1284:26;;1341:1;1332:5;:10;;;;:38;;;;;337:3;1346:24;;:5;:24;;;;1332:38;1324:47;;;;;;;;1454:1;1437:6;:13;1444:5;1437:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;1429:27;;;;;;;;1493:5;1470:6;:20;1477:12;1470:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;1527:5;1512:20;;1220:3;;;;;;;1180:363;;;337:3;1552:6;:20;1559:12;1552:20;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;1613:7;:14;1600:10;:27;;;;1649:10;1637:9;;:22;;;;;;;;;;;;;;;;;;641:1025;;;;;:::o;735:333:8:-;849:1;820:7;:25;550:3;820:25;;;;;;;;;;;;;;;;;;;;;;;;;:30;;;812:39;;;;;;;;550:3;861:7;:25;550:3;861:25;;;;;;;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;925:1;919:2;:7;;;;915:146;;;1020:40;1040:2;1044:4;1050:9;1020:19;:40::i;:::-;1012:49;;;;;;;;915:146;735:333;;:::o;3459:309::-;3568:12;3750:1;3747;3740:4;3734:11;3727:4;3721;3717:15;3710:5;3706:2;3699:5;3694:58;3683:69;;3669:93;;;;;;:::o;3774:303::-;3876:12;4059:1;4056;4049:4;4043:11;4036:4;4030;4026:15;4022:2;4015:5;4002:59;3991:70;;3977:94;;;;;:::o;4083:261::-;4152:19;4322:4;4316:11;4309:4;4303;4299:15;4296:1;4289:39;4274:54;;4260:78;;;:::o", - "source": "pragma solidity 0.4.24;\nimport \"./interfaces/ERC20Token.sol\";\nimport \"./GnosisSafe.sol\";\nimport \"./MasterCopy.sol\";\n\n\n/// @title Gnosis Safe Personal Edition - A multisignature wallet with support for confirmations using signed messages based on ERC191.\n/// @author Stefan George - \n/// @author Richard Meissner - \n/// @author Ricardo Guilherme Schmidt - (Status Research & Development GmbH) - Gas Token Payment\ncontract GnosisSafePersonalEdition is MasterCopy, GnosisSafe {\n\n string public constant NAME = \"Gnosis Safe Personal Edition\";\n string public constant VERSION = \"0.0.1\";\n \n uint256 internal constant BASE_TX_GAS_COSTS = 21000;\n uint256 internal constant PAYMENT_GAS_COSTS = 11000;\n\n event ExecutionFailed();\n\n uint256 public nonce;\n\n /// @dev Allows to execute a Safe transaction confirmed by required number of owners.\n /// @param to Destination address of Safe transaction.\n /// @param value Ether value of Safe transaction.\n /// @param data Data payload of Safe transaction.\n /// @param operation Operation type of Safe transaction.\n /// @param safeTxGas Gas that should be used for the Safe transaction.\n /// @param dataGas Gas costs for data used to trigger the safe transaction.\n /// @param gasPrice Gas price that should be used for the payment calculation.\n /// @param gasToken Token address (or 0 if ETH) that is used for the payment.\n /// @param v Array of signature V values sorted by owner addresses.\n /// @param r Array of signature R values sorted by owner addresses.\n /// @param s Array of signature S values sorted by owner addresses.\n function execAndPayTransaction(\n address to, \n uint256 value, \n bytes data, \n Enum.Operation operation, \n uint256 safeTxGas,\n uint256 dataGas,\n uint256 gasPrice,\n address gasToken,\n uint8[] v, \n bytes32[] r, \n bytes32[] s\n )\n public\n {\n uint256 startGas = gasleft();\n checkHash(getTransactionHash(to, value, data, operation, safeTxGas, dataGas, gasPrice, gasToken, nonce), v, r, s);\n // Increase nonce and execute transaction.\n nonce++;\n require(gasleft() - PAYMENT_GAS_COSTS >= safeTxGas);\n if (!execute(to, value, data, operation, safeTxGas)) {\n emit ExecutionFailed();\n }\n \n // We transfer the calculated tx costs to the tx.origin to avoid sending it to intermediate contracts that have made calls\n if (gasPrice > 0) {\n uint256 gasCosts = totalGasCosts(startGas - gasleft(), dataGas);\n uint256 amount = gasCosts * gasPrice;\n if (gasToken == address(0)) {\n // solium-disable-next-line security/no-tx-origin\n tx.origin.transfer(amount);\n } else {\n // solium-disable-next-line security/no-tx-origin\n require(ERC20Token(gasToken).transfer(tx.origin, amount));\n }\n } \n }\n\n /// @dev Calculates the total gas costs for a safe transaction with the gas costs for the execution of the transaction.\n /// @param executionGas Gas costs for the execution of the safe transaction.\n /// @param dataGas Gas costs for data used to trigger the safe transaction.\n /// @return Total gas costs for the execution (this includes gas costs for the payment to tx.origin, base transaction and payload data).\n function totalGasCosts(uint256 executionGas, uint256 dataGas) \n public \n pure\n returns (uint256) \n {\n return executionGas + dataGas + PAYMENT_GAS_COSTS + BASE_TX_GAS_COSTS;\n }\n\n /// @dev Allows to estimate a Safe transaction. \n /// This method is only meant for estimation purpose, therfore two different protection mechanism against execution in a transaction have been made:\n /// 1.) The method can only be called from the safe itself\n /// 2.) The response is returned with a revert\n /// When estimating set `from` to the address of the safe.\n /// Since the `estimateGas` function includes refunds, call this method to get an estimated of the costs that are deducted from the safe with `execAndPayTransaction`\n /// @param to Destination address of Safe transaction.\n /// @param value Ether value of Safe transaction.\n /// @param data Data payload of Safe transaction.\n /// @param operation Operation type of Safe transaction.\n /// @return Estimate without refunds and overhead fees (base transaction and payload data gas costs).\n function requiredTxGas(address to, uint256 value, bytes data, Enum.Operation operation)\n public\n authorized\n returns (uint256)\n {\n uint256 startGas = gasleft();\n require(execute(to, value, data, operation, gasleft()));\n uint256 requiredGas = startGas - gasleft();\n // Convert response to string\n revert(string(abi.encodePacked(requiredGas)));\n }\n\n function checkHash(bytes32 hash, uint8[] v, bytes32[] r, bytes32[] s)\n internal\n view\n {\n // There cannot be an owner with address 0.\n address lastOwner = address(0);\n address currentOwner;\n uint256 i;\n // Validate threshold is reached.\n for (i = 0; i < threshold; i++) {\n currentOwner = ecrecover(hash, v[i], r[i], s[i]);\n require(owners[currentOwner] != 0);\n require(currentOwner > lastOwner);\n lastOwner = currentOwner;\n }\n }\n\n /// @dev Returns hash to be signed by owners.\n /// @param to Destination address.\n /// @param value Ether value.\n /// @param data Data payload.\n /// @param operation Operation type.\n /// @param safeTxGas Fas that should be used for the safe transaction.\n /// @param dataGas Gas costs for data used to trigger the safe transaction.\n /// @param gasPrice Maximum gas price that should be used for this transaction.\n /// @param gasToken Token address (or 0 if ETH) that is used for the payment.\n /// @param _nonce Transaction nonce.\n /// @return Transaction hash.\n function getTransactionHash(\n address to, \n uint256 value, \n bytes data, \n Enum.Operation operation, \n uint256 safeTxGas, \n uint256 dataGas, \n uint256 gasPrice, \n address gasToken,\n uint256 _nonce\n )\n public\n view\n returns (bytes32)\n {\n return keccak256(\n abi.encodePacked(byte(0x19), byte(0), this, to, value, data, operation, safeTxGas, dataGas, gasPrice, gasToken, _nonce)\n );\n }\n}\n", + "bytecode": "0x608060405234801561001057600080fd5b50613ee5806100206000396000f300608060405260043610610128576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806314148af21461012a5780632f54bf6e146102d1578063468721a71461032c578063610b5925146103e45780637de7edef1461042757806385e332cd1461046a57806386040aa9146104c15780638cff635514610531578063a04222e114610588578063a0e67e2b14610661578063a3f4df7e146106cd578063ad8a04501461075d578063affed0e0146107a8578063b2494df3146107d3578063b7f3358d1461083f578063b91a667f1461086f578063ba08ea24146108bf578063c4ca3a9c146109c3578063e009cfde14610a77578063e318b52b14610ada578063e75235b814610b5d578063ffa1ad7414610b8e575b005b34801561013657600080fd5b506102cf600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190803590602001909291908035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050610c1e565b005b3480156102dd57600080fd5b50610312600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f5f565b604051808215151515815260200191505060405180910390f35b34801561033857600080fd5b506103ca600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190505050610fe1565b604051808215151515815260200191505060405180910390f35b3480156103f057600080fd5b50610425600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061110d565b005b34801561043357600080fd5b50610468600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506114eb565b005b34801561047657600080fd5b5061047f6116ac565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156104cd57600080fd5b5061052f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff1690602001909291905050506116b1565b005b34801561053d57600080fd5b50610546611ae4565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561059457600080fd5b5061065f60048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803560ff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050611ae9565b005b34801561066d57600080fd5b50610676611b03565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156106b957808201518184015260208101905061069e565b505050509050019250505060405180910390f35b3480156106d957600080fd5b506106e2611c9e565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610722578082015181840152602081019050610707565b50505050905090810190601f16801561074f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561076957600080fd5b506107926004803603810190808035906020019092919080359060200190929190505050611cd7565b6040518082815260200191505060405180910390f35b3480156107b457600080fd5b506107bd611cec565b6040518082815260200191505060405180910390f35b3480156107df57600080fd5b506107e8611cf2565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561082b578082015181840152602081019050610810565b505050509050019250505060405180910390f35b34801561084b57600080fd5b5061086d600480360381019080803560ff169060200190929190505050611f99565b005b34801561087b57600080fd5b506108bd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff1690602001909291905050506121c5565b005b3480156108cb57600080fd5b506109a5600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190803590602001909291908035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506125de565b60405180826000191660001916815260200191505060405180910390f35b3480156109cf57600080fd5b50610a61600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff1690602001909291905050506128c5565b6040518082815260200191505060405180910390f35b348015610a8357600080fd5b50610ad8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612a74565b005b348015610ae657600080fd5b50610b5b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612dc5565b005b348015610b6957600080fd5b50610b7261334a565b604051808260ff1660ff16815260200191505060405180910390f35b348015610b9a57600080fd5b50610ba3613361565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610be3578082015181840152602081019050610bc8565b50505050905090810190601f168015610c105780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60008060005a9250610c44610c3c8f8f8f8f8f8f8f8f6005546125de565b87878761339a565b60056000815480929190600101919050555089612af85a0310151515610cf8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001807f4e6f7420656e6f7567682067617320746f20657865637574652073616665207481526020017f72616e73616374696f6e0000000000000000000000000000000000000000000081525060400191505060405180910390fd5b610d058e8e8e8e8e613659565b1515610d38577facfdb444727b3b8994850a379f4bfc8a5ca665a55604339199daafa16f687b1a60405160405180910390a15b6000881115610f4f57610d4d5a84038a611cd7565b91508782029050600073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff161415610dd5573273ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610dcf573d6000803e3d6000fd5b50610f4e565b8673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb32836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610e7857600080fd5b505af1158015610e8c573d6000803e3d6000fd5b505050506040513d6020811015610ea257600080fd5b81019080805190602001909291905050501515610f4d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001807f436f756c64206e6f74207061792067617320636f737473207769746820746f6b81526020017f656e00000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b5b5b5050505050505050505050505050565b600080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600080600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515156110f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d206181526020017f6e20656e61626c6564206d6f64756c650000000000000000000000000000000081525060400191505060405180910390fd5b611103858585855a613659565b9050949350505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156111d6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415801561122a5750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b151561129e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f496e76616c6964206d6f64756c6520616464726573732070726f76696465640081525060200191505060405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561138b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4d6f64756c652068617320616c7265616479206265656e20616464656400000081525060200191505060405180910390fd5b60016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156115b4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515611669576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f496e76616c6964206d617374657220636f707920616464726573732070726f7681526020017f696465640000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600181565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561177a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b8060ff1660016003540310151515611820576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260358152602001807f4e6577206f776e657220636f756e74206e6565647320746f206265206c61726781526020017f6572207468616e206e6577207468726573686f6c64000000000000000000000081525060400191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611948576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f496e76616c696420707265764f776e65722c206f776e6572207061697220707281526020017f6f7669646564000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360008154809291906001900391905055508060ff16600460009054906101000a900460ff1660ff16141515611adf57611ade81611f99565b5b505050565b600181565b611af38484613756565b611afd8282613c40565b50505050565b606080600080600354604051908082528060200260200182016040528015611b3a5781602001602082028038833980820191505090505b5092506000915060026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515611c9557808383815181101515611bea57fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508180600101925050611ba5565b82935050505090565b6040805190810160405280601c81526020017f476e6f736973205361666520506572736f6e616c2045646974696f6e0000000081525081565b6000615208612af88385010101905092915050565b60055481565b606060008060606000925060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515611e0657600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508280600101935050611d61565b82604051908082528060200260200182016040528015611e355781602001602082028038833980820191505090505b5090506000925060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515611f9057818184815181101515611ee557fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508280600101935050611ea0565b80935050505090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612062576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b6003548160ff1611151515612105576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f5468726573686f6c642063616e6e6f7420657863656564206f776e657220636f81526020017f756e74000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60018160ff16101515156121a7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f5468726573686f6c64206e6565647320746f206265206772656174657220746881526020017f616e20300000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b80600460006101000a81548160ff021916908360ff16021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561228e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff16141580156122e25750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1515612356576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612443576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4164647265737320697320616c726561647920616e206f776e6572000000000081525060200191505060405180910390fd5b60026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506003600081548092919060010191905055508060ff16600460009054906101000a900460ff1660ff161415156125da576125d981611f99565b5b5050565b600060197f01000000000000000000000000000000000000000000000000000000000000000260007f010000000000000000000000000000000000000000000000000000000000000002308c8c8c8c8c8c8c8c8c604051602001808d7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018c7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140189815260200188805190602001908083835b6020831015156127865780518252602082019150602081019050602083039250612761565b6001836020036101000a0380198251168184511680821785525050505050509050018760028111156127b457fe5b60ff167f01000000000000000000000000000000000000000000000000000000000000000281526001018681526020018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018281526020019c505050505050505050505050506040516020818303038152906040526040518082805190602001908083835b6020831015156128895780518252602082019150602081019050602083039250612864565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902090509998505050505050505050565b60008060003073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612993576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b5a91506129a3878787875a613659565b15156129ae57600080fd5b5a8203905080604051602001808281526020019150506040516020818303038152906040526040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612a39578082015181840152602081019050612a1e565b50505050905090810190601f168015612a665780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612b3d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612c65576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001807f496e76616c696420707265764d6f64756c652c206d6f64756c6520706169722081526020017f70726f766964656400000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612e8e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614158015612ee25750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1515612f56576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515613043576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4164647265737320697320616c726561647920616e206f776e6572000000000081525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561316b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f496e76616c696420707265764f776e65722c206f776e6572207061697220707281526020017f6f7669646564000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b6000600460009054906101000a900460ff16905090565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000806000809250600090505b600460009054906101000a900460ff1660ff168110156136505760018787838151811015156133d257fe5b9060200190602002015187848151811015156133ea57fe5b90602001906020020151878581518110151561340257fe5b90602001906020020151604051600081526020016040526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000865af115801561347d573d6000803e3d6000fd5b5050506020604051035191506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151515613577576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5369676e6174757265206e6f742070726f7669646564206279206f776e65720081525060200191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16111515613640576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b8152602001807f5369676e61747572657320617265206e6f74206f726465726564206279206f7781526020017f6e6572206164647265737300000000000000000000000000000000000000000081525060400191505060405180910390fd5b81925080806001019150506133a7565b50505050505050565b6000806000600281111561366957fe5b84600281111561367557fe5b141561368e5761368787878786613e77565b915061374c565b6001600281111561369b57fe5b8460028111156136a757fe5b14156136bf576136b8878685613e90565b915061374b565b6136c885613ea7565b905060008173ffffffffffffffffffffffffffffffffffffffff16141591507f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b5b5095945050505050565b600080600080600460009054906101000a900460ff1660ff161415156137e4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f4f776e657273206861766520616c7265616479206265656e207365747570000081525060200191505060405180910390fd5b84518460ff1611151515613886576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f5468726573686f6c642063616e6e6f7420657863656564206f776e657220636f81526020017f756e74000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60018460ff1610151515613928576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f5468726573686f6c64206e6565647320746f206265206772656174657220746881526020017f616e20300000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60019250600091505b8451821015613b9757848281518110151561394857fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff16141580156139a85750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1515613a1c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515613b09576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4475706c6963617465206f776e657220616464726573732070726f766964656481525060200191505060405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508092508180600101925050613931565b6001600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550845160038190555083600460006101000a81548160ff021916908360ff1602179055505050505050565b600060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515613d54576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f4d6f64756c6573206861766520616c7265616479206265656e20696e6974696181526020017f6c697a656400000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6001806000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008273ffffffffffffffffffffffffffffffffffffffff16141515613e7357613dfe82825a613e90565b1515613e72576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f436f756c64206e6f742066696e69736820696e697469616c697a6174696f6e0081525060200191505060405180910390fd5b5b5050565b6000806000845160208601878987f19050949350505050565b60008060008451602086018786f490509392505050565b60008151602083016000f090509190505600a165627a7a723058204a0cdc51b0bd3ef74e872a6c3c628ead2e046838ece4baffb11344a41b8a69740029", + "deployedBytecode": "0x608060405260043610610128576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806314148af21461012a5780632f54bf6e146102d1578063468721a71461032c578063610b5925146103e45780637de7edef1461042757806385e332cd1461046a57806386040aa9146104c15780638cff635514610531578063a04222e114610588578063a0e67e2b14610661578063a3f4df7e146106cd578063ad8a04501461075d578063affed0e0146107a8578063b2494df3146107d3578063b7f3358d1461083f578063b91a667f1461086f578063ba08ea24146108bf578063c4ca3a9c146109c3578063e009cfde14610a77578063e318b52b14610ada578063e75235b814610b5d578063ffa1ad7414610b8e575b005b34801561013657600080fd5b506102cf600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190803590602001909291908035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050610c1e565b005b3480156102dd57600080fd5b50610312600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f5f565b604051808215151515815260200191505060405180910390f35b34801561033857600080fd5b506103ca600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190505050610fe1565b604051808215151515815260200191505060405180910390f35b3480156103f057600080fd5b50610425600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061110d565b005b34801561043357600080fd5b50610468600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506114eb565b005b34801561047657600080fd5b5061047f6116ac565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156104cd57600080fd5b5061052f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff1690602001909291905050506116b1565b005b34801561053d57600080fd5b50610546611ae4565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561059457600080fd5b5061065f60048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803560ff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050611ae9565b005b34801561066d57600080fd5b50610676611b03565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156106b957808201518184015260208101905061069e565b505050509050019250505060405180910390f35b3480156106d957600080fd5b506106e2611c9e565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610722578082015181840152602081019050610707565b50505050905090810190601f16801561074f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561076957600080fd5b506107926004803603810190808035906020019092919080359060200190929190505050611cd7565b6040518082815260200191505060405180910390f35b3480156107b457600080fd5b506107bd611cec565b6040518082815260200191505060405180910390f35b3480156107df57600080fd5b506107e8611cf2565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561082b578082015181840152602081019050610810565b505050509050019250505060405180910390f35b34801561084b57600080fd5b5061086d600480360381019080803560ff169060200190929190505050611f99565b005b34801561087b57600080fd5b506108bd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff1690602001909291905050506121c5565b005b3480156108cb57600080fd5b506109a5600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190803590602001909291908035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506125de565b60405180826000191660001916815260200191505060405180910390f35b3480156109cf57600080fd5b50610a61600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff1690602001909291905050506128c5565b6040518082815260200191505060405180910390f35b348015610a8357600080fd5b50610ad8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612a74565b005b348015610ae657600080fd5b50610b5b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612dc5565b005b348015610b6957600080fd5b50610b7261334a565b604051808260ff1660ff16815260200191505060405180910390f35b348015610b9a57600080fd5b50610ba3613361565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610be3578082015181840152602081019050610bc8565b50505050905090810190601f168015610c105780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60008060005a9250610c44610c3c8f8f8f8f8f8f8f8f6005546125de565b87878761339a565b60056000815480929190600101919050555089612af85a0310151515610cf8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001807f4e6f7420656e6f7567682067617320746f20657865637574652073616665207481526020017f72616e73616374696f6e0000000000000000000000000000000000000000000081525060400191505060405180910390fd5b610d058e8e8e8e8e613659565b1515610d38577facfdb444727b3b8994850a379f4bfc8a5ca665a55604339199daafa16f687b1a60405160405180910390a15b6000881115610f4f57610d4d5a84038a611cd7565b91508782029050600073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff161415610dd5573273ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610dcf573d6000803e3d6000fd5b50610f4e565b8673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb32836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610e7857600080fd5b505af1158015610e8c573d6000803e3d6000fd5b505050506040513d6020811015610ea257600080fd5b81019080805190602001909291905050501515610f4d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001807f436f756c64206e6f74207061792067617320636f737473207769746820746f6b81526020017f656e00000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b5b5b5050505050505050505050505050565b600080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600080600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515156110f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d206181526020017f6e20656e61626c6564206d6f64756c650000000000000000000000000000000081525060400191505060405180910390fd5b611103858585855a613659565b9050949350505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156111d6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415801561122a5750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b151561129e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f496e76616c6964206d6f64756c6520616464726573732070726f76696465640081525060200191505060405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561138b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4d6f64756c652068617320616c7265616479206265656e20616464656400000081525060200191505060405180910390fd5b60016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156115b4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515611669576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f496e76616c6964206d617374657220636f707920616464726573732070726f7681526020017f696465640000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600181565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561177a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b8060ff1660016003540310151515611820576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260358152602001807f4e6577206f776e657220636f756e74206e6565647320746f206265206c61726781526020017f6572207468616e206e6577207468726573686f6c64000000000000000000000081525060400191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611948576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f496e76616c696420707265764f776e65722c206f776e6572207061697220707281526020017f6f7669646564000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360008154809291906001900391905055508060ff16600460009054906101000a900460ff1660ff16141515611adf57611ade81611f99565b5b505050565b600181565b611af38484613756565b611afd8282613c40565b50505050565b606080600080600354604051908082528060200260200182016040528015611b3a5781602001602082028038833980820191505090505b5092506000915060026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515611c9557808383815181101515611bea57fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508180600101925050611ba5565b82935050505090565b6040805190810160405280601c81526020017f476e6f736973205361666520506572736f6e616c2045646974696f6e0000000081525081565b6000615208612af88385010101905092915050565b60055481565b606060008060606000925060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515611e0657600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508280600101935050611d61565b82604051908082528060200260200182016040528015611e355781602001602082028038833980820191505090505b5090506000925060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515611f9057818184815181101515611ee557fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508280600101935050611ea0565b80935050505090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612062576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b6003548160ff1611151515612105576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f5468726573686f6c642063616e6e6f7420657863656564206f776e657220636f81526020017f756e74000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60018160ff16101515156121a7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f5468726573686f6c64206e6565647320746f206265206772656174657220746881526020017f616e20300000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b80600460006101000a81548160ff021916908360ff16021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561228e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff16141580156122e25750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1515612356576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612443576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4164647265737320697320616c726561647920616e206f776e6572000000000081525060200191505060405180910390fd5b60026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506003600081548092919060010191905055508060ff16600460009054906101000a900460ff1660ff161415156125da576125d981611f99565b5b5050565b600060197f01000000000000000000000000000000000000000000000000000000000000000260007f010000000000000000000000000000000000000000000000000000000000000002308c8c8c8c8c8c8c8c8c604051602001808d7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018c7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140189815260200188805190602001908083835b6020831015156127865780518252602082019150602081019050602083039250612761565b6001836020036101000a0380198251168184511680821785525050505050509050018760028111156127b457fe5b60ff167f01000000000000000000000000000000000000000000000000000000000000000281526001018681526020018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018281526020019c505050505050505050505050506040516020818303038152906040526040518082805190602001908083835b6020831015156128895780518252602082019150602081019050602083039250612864565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902090509998505050505050505050565b60008060003073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612993576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b5a91506129a3878787875a613659565b15156129ae57600080fd5b5a8203905080604051602001808281526020019150506040516020818303038152906040526040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612a39578082015181840152602081019050612a1e565b50505050905090810190601f168015612a665780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612b3d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612c65576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001807f496e76616c696420707265764d6f64756c652c206d6f64756c6520706169722081526020017f70726f766964656400000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612e8e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614158015612ee25750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1515612f56576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515613043576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4164647265737320697320616c726561647920616e206f776e6572000000000081525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561316b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f496e76616c696420707265764f776e65722c206f776e6572207061697220707281526020017f6f7669646564000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b6000600460009054906101000a900460ff16905090565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000806000809250600090505b600460009054906101000a900460ff1660ff168110156136505760018787838151811015156133d257fe5b9060200190602002015187848151811015156133ea57fe5b90602001906020020151878581518110151561340257fe5b90602001906020020151604051600081526020016040526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000865af115801561347d573d6000803e3d6000fd5b5050506020604051035191506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151515613577576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5369676e6174757265206e6f742070726f7669646564206279206f776e65720081525060200191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16111515613640576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b8152602001807f5369676e61747572657320617265206e6f74206f726465726564206279206f7781526020017f6e6572206164647265737300000000000000000000000000000000000000000081525060400191505060405180910390fd5b81925080806001019150506133a7565b50505050505050565b6000806000600281111561366957fe5b84600281111561367557fe5b141561368e5761368787878786613e77565b915061374c565b6001600281111561369b57fe5b8460028111156136a757fe5b14156136bf576136b8878685613e90565b915061374b565b6136c885613ea7565b905060008173ffffffffffffffffffffffffffffffffffffffff16141591507f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b5b5095945050505050565b600080600080600460009054906101000a900460ff1660ff161415156137e4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f4f776e657273206861766520616c7265616479206265656e207365747570000081525060200191505060405180910390fd5b84518460ff1611151515613886576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f5468726573686f6c642063616e6e6f7420657863656564206f776e657220636f81526020017f756e74000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60018460ff1610151515613928576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f5468726573686f6c64206e6565647320746f206265206772656174657220746881526020017f616e20300000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60019250600091505b8451821015613b9757848281518110151561394857fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff16141580156139a85750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1515613a1c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515613b09576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4475706c6963617465206f776e657220616464726573732070726f766964656481525060200191505060405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508092508180600101925050613931565b6001600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550845160038190555083600460006101000a81548160ff021916908360ff1602179055505050505050565b600060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515613d54576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f4d6f64756c6573206861766520616c7265616479206265656e20696e6974696181526020017f6c697a656400000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6001806000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008273ffffffffffffffffffffffffffffffffffffffff16141515613e7357613dfe82825a613e90565b1515613e72576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f436f756c64206e6f742066696e69736820696e697469616c697a6174696f6e0081525060200191505060405180910390fd5b5b5050565b6000806000845160208601878987f19050949350505050565b60008060008451602086018786f490509392505050565b60008151602083016000f090509190505600a165627a7a723058204a0cdc51b0bd3ef74e872a6c3c628ead2e046838ece4baffb11344a41b8a69740029", + "sourceMap": "449:6475:3:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;449:6475:3;;;;;;;", + "deployedSourceMap": "449:6475:3:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1660:1451;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1660:1451:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5374:129:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5374:129:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2710:429:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2710:429:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1311:459;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1311:459:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;626:248:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;626:248:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;499:55:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;499:55:8;;;;;;;;;;;;;;;;;;;;;;;;;;;3024:672:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3024:672:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;287:54;;8:9:-1;5:2;;;30:1;27;20:12;5:2;287:54:9;;;;;;;;;;;;;;;;;;;;;;;;;;;693:301:2;;8:9:-1;5:2;;;30:1;27;20:12;5:2;693:301:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5585:458:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5585:458:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;5585:458:9;;;;;;;;;;;;;;;;;517:60:3;;8:9:-1;5:2;;;30:1;27;20:12;5:2;517:60:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;517:60:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3543:209;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3543:209:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;779:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;779:20:3;;;;;;;;;;;;;;;;;;;;;;;4663:738:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4663:738:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;4663:738:8;;;;;;;;;;;;;;;;;4852:397:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4852:397:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;2089:593;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2089:593:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6422:500:3;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6422:500:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4670:523;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4670:523:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2031:343:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2031:343:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4030:633:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4030:633:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5255:113;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5255:113:9;;;;;;;;;;;;;;;;;;;;;;;;;;;583:40:3;;8:9:-1;5:2;;;30:1;27;20:12;5:2;583:40:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;583:40:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1660:1451;1994:16;2611;2688:14;2013:9;1994:28;;2032:113;2042:93;2061:2;2065:5;2072:4;2078:9;2089;2100:7;2109:8;2119;2129:5;;2042:18;:93::i;:::-;2137:1;2140;2143;2032:9;:113::i;:::-;2206:5;;:7;;;;;;;;;;;;;2264:9;737:5;2231:9;:29;:42;;2223:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2335:46;2343:2;2347:5;2354:4;2360:9;2371;2335:7;:46::i;:::-;2334:47;2330:100;;;2402:17;;;;;;;;;;2330:100;2594:1;2583:8;:12;2579:524;;;2630:44;2655:9;2644:8;:20;2666:7;2630:13;:44::i;:::-;2611:63;;2716:8;2705;:19;2688:36;;2762:1;2742:22;;:8;:22;;;2738:355;;;2851:9;:18;;:26;2870:6;2851:26;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2851:26:3;2738:355;;;3002:8;2991:29;;;3021:9;3032:6;2991:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2991:48:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2991:48:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2991:48:3;;;;;;;;;;;;;;;;2983:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2738:355;2579:524;1660:1451;;;;;;;;;;;;;;:::o;5374:129:9:-;5451:4;5495:1;5478:6;:13;5485:5;5478:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;;5471:25;;5374:129;;;:::o;2710:429:8:-;2842:12;2950:1;2927:7;:19;2935:10;2927:19;;;;;;;;;;;;;;;;;;;;;;;;;:24;;;;2919:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3086:46;3094:2;3098:5;3105:4;3111:9;3122;3086:7;:46::i;:::-;3076:56;;2710:429;;;;;;:::o;1311:459::-;244:4:13;222:27;;:10;:27;;;214:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1477:1:8;1466:6;1458:20;;;;:59;;;;;550:3;1482:35;;1490:6;1482:35;;;;1458:59;1450:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1631:1;1612:7;:15;1620:6;1612:15;;;;;;;;;;;;;;;;;;;;;;;;;:20;;;1604:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1694:7;:25;550:3;1694:25;;;;;;;;;;;;;;;;;;;;;;;;;1676:7;:15;1684:6;1676:15;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;1757:6;1729:7;:25;550:3;1729:25;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;1311:459;:::o;626:248:5:-;244:4:13;222:27;;:10;:27;;;214:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;791:1:5;776:11;:16;;;;768:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;856:11;843:10;;:24;;;;;;;;;;;;;;;;;;626:248;:::o;499:55:8:-;550:3;499:55;:::o;3024:672:9:-;244:4:13;222:27;;:10;:27;;;214:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3248:10:9;3230:28;;3243:1;3230:10;;:14;:28;;3222:94;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3417:5;3396:26;;:6;:17;3403:9;3396:17;;;;;;;;;;;;;;;;;;;;;;;;;:26;;;3388:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3495:6;:13;3502:5;3495:13;;;;;;;;;;;;;;;;;;;;;;;;;3475:6;:17;3482:9;3475:17;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;3534:1;3518:6;:13;3525:5;3518:13;;;;;;;;;;;;;;;;:17;;;;;;;;;;;;;;;;;;3545:10;;:12;;;;;;;;;;;;;;3638:10;3625:23;;:9;;;;;;;;;;;:23;;;;3621:68;;;3662:27;3678:10;3662:15;:27::i;:::-;3621:68;3024:672;;;:::o;287:54::-;337:3;287:54;:::o;693:301:2:-;798:32;810:7;819:10;798:11;:32::i;:::-;965:22;978:2;982:4;965:12;:22::i;:::-;693:301;;;;:::o;5585:458:9:-;5651:9;5676:22;5770:13;5797:20;5715:10;;5701:25;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;5701:25:9;;;;5676:50;;5786:1;5770:17;;5820:6;:23;337:3;5820:23;;;;;;;;;;;;;;;;;;;;;;;;;5797:46;;5853:162;337:3;5859:31;;:12;:31;;;;5853:162;;;5921:12;5906:5;5912;5906:12;;;;;;;;;;;;;;;;;:27;;;;;;;;;;;5962:6;:20;5969:12;5962:20;;;;;;;;;;;;;;;;;;;;;;;;;5947:35;;5996:8;;;;;;;5853:162;;;6031:5;6024:12;;5585:458;;;;:::o;517:60:3:-;;;;;;;;;;;;;;;;;;;;:::o;3543:209::-;3652:7;680:5;737;3698:7;3683:12;:22;:42;:62;3676:69;;3543:209;;;;:::o;779:20::-;;;;:::o;4663:738:8:-;4730:9;4789:19;4822:21;5022:22;4811:1;4789:23;;4846:7;:25;550:3;4846:25;;;;;;;;;;;;;;;;;;;;;;;;;4822:49;;4881:132;550:3;4887:33;;:13;:33;;;;4881:132;;;4952:7;:22;4960:13;4952:22;;;;;;;;;;;;;;;;;;;;;;;;;4936:38;;4988:14;;;;;;;4881:132;;;5061:11;5047:26;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;5047:26:8;;;;5022:51;;5131:1;5117:15;;5158:7;:25;550:3;5158:25;;;;;;;;;;;;;;;;;;;;;;;;;5142:41;;5193:180;550:3;5199:33;;:13;:33;;;;5193:180;;;5269:13;5248:5;5254:11;5248:18;;;;;;;;;;;;;;;;;:34;;;;;;;;;;;5312:7;:22;5320:13;5312:22;;;;;;;;;;;;;;;;;;;;;;;;;5296:38;;5348:14;;;;;;;5193:180;;;5389:5;5382:12;;4663:738;;;;:::o;4852:397:9:-;244:4:13;222:27;;:10;:27;;;214:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5034:10:9;;5020;:24;;;;5012:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5168:1;5154:10;:15;;;;5146:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5232:10;5220:9;;:22;;;;;;;;;;;;;;;;;;4852:397;:::o;2089:593::-;244:4:13;222:27;;:10;:27;;;214:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2259:1:9;2250:5;:10;;;;:38;;;;;337:3;2264:24;;:5;:24;;;;2250:38;2242:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2398:1;2381:6;:13;2388:5;2381:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;2373:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2457:6;:23;337:3;2457:23;;;;;;;;;;;;;;;;;;;;;;;;;2441:6;:13;2448:5;2441:13;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;2516:5;2490:6;:23;337:3;2490:23;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;2531:10;;:12;;;;;;;;;;;;;2624:10;2611:23;;:9;;;;;;;;;;;:23;;;;2607:68;;;2648:27;2664:10;2648:15;:27::i;:::-;2607:68;2089:593;;:::o;6422:500:3:-;6733:7;6808:4;6803:10;;6820:1;6815:7;;6824:4;6830:2;6834:5;6841:4;6847:9;6858;6869:7;6878:8;6888;6898:6;6786:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;;;6786:119:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;6786:119:3;;;6763:152;;;;;;;;;;;;;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;;;6763:152:3;;;;;;;;;;;;;;;;6756:159;;6422:500;;;;;;;;;;;:::o;4670:523::-;4809:7;4832:16;5022:19;244:4:13;222:27;;:10;:27;;;214:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4851:9:3;4832:28;;4965:46;4973:2;4977:5;4984:4;4990:9;5001;4965:7;:46::i;:::-;4957:55;;;;;;;;5055:9;5044:8;:20;5022:42;;5172:11;5155:29;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;5155:29:3;;;5141: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;5141:45:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2031:343:8;244:4:13;222:27;;:10;:27;;;214:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2239:6:8;2208:38;;:7;:19;2216:10;2208:19;;;;;;;;;;;;;;;;;;;;;;;;;:38;;;2200:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2323:7;:15;2331:6;2323:15;;;;;;;;;;;;;;;;;;;;;;;;;2301:7;:19;2309:10;2301:19;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;2366:1;2348:7;:15;2356:6;2348:15;;;;;;;;;;;;;;;;:19;;;;;;;;;;;;;;;;;;2031:343;;:::o;4030:633:9:-;244:4:13;222:27;;:10;:27;;;214:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4213:1:9;4201:8;:13;;;;:44;;;;;337:3;4218:27;;:8;:27;;;;4201:44;4193:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4358:1;4338:6;:16;4345:8;4338:16;;;;;;;;;;;;;;;;;;;;;;;;;:21;;;4330:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4492:8;4471:29;;:6;:17;4478:9;4471:17;;;;;;;;;;;;;;;;;;;;;;;;;:29;;;4463:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4572:6;:16;4579:8;4572:16;;;;;;;;;;;;;;;;;;;;;;;;;4553:6;:16;4560:8;4553:16;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;4618:8;4598:6;:17;4605:9;4598:17;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;4655:1;4636:6;:16;4643:8;4636:16;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;4030:633;;;:::o;5255:113::-;5324:5;5352:9;;;;;;;;;;;5345:16;;5255:113;:::o;583:40:3:-;;;;;;;;;;;;;;;;;;;;:::o;5199:623::-;5365:17;5405:20;5435:9;5393:1;5365:30;;5505:1;5501:5;;5496:320;5512:9;;;;;;;;;;;5508:13;;:1;:13;5496:320;;;5557:33;5567:4;5573:1;5575;5573:4;;;;;;;;;;;;;;;;;;5579:1;5581;5579:4;;;;;;;;;;;;;;;;;;5585:1;5587;5585:4;;;;;;;;;;;;;;;;;;5557:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5557:33:3;;;;;;;;5542:48;;5636:1;5612:6;:20;5619:12;5612:20;;;;;;;;;;;;;;;;;;;;;;;;;:25;;;;5604:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5710:9;5695:24;;:12;:24;;;5687:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5793:12;5781:24;;5523:3;;;;;;;5496:320;;;5199:623;;;;;;;:::o;3145:548:8:-;3276:12;3547:19;3321;3308:32;;;;;;;;:9;:32;;;;;;;;;3304:383;;;3364:35;3376:2;3380:5;3387:4;3393:5;3364:11;:35::i;:::-;3354:45;;3304:383;;;3431:27;3418:40;;;;;;;;:9;:40;;;;;;;;;3414:273;;;3482:36;3502:2;3506:4;3512:5;3482:19;:36::i;:::-;3472:46;;3414:273;;;3569:19;3583:4;3569:13;:19::i;:::-;3547:41;;3627:1;3612:11;:16;;;;3602:26;;3647:29;3664:11;3647:29;;;;;;;;;;;;;;;;;;;;;;3414:273;3304:383;3145:548;;;;;;;;:::o;641:1208:9:-;1245:20;1298:9;1397:13;875:1;862:9;;;;;;;;;;;:14;;;854:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1018:7;:14;1004:10;:28;;;;996:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1156:1;1142:10;:15;;;;1134:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;337:3;1245:38;;1310:1;1298:13;;1293:433;1317:7;:14;1313:1;:18;1293:433;;;1413:7;1421:1;1413:10;;;;;;;;;;;;;;;;;;1397:26;;1454:1;1445:5;:10;;;;:38;;;;;337:3;1459:24;;:5;:24;;;;1445:38;1437:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1601:1;1584:6;:13;1591:5;1584:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;1576:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1676:5;1653:6;:20;1660:12;1653:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;1710:5;1695:20;;1333:3;;;;;;;1293:433;;;337:3;1735:6;:20;1742:12;1735:20;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;1796:7;:14;1783:10;:27;;;;1832:10;1820:9;;:22;;;;;;;;;;;;;;;;;;641:1208;;;;;:::o;735:409:8:-;849:1;820:7;:25;550:3;820:25;;;;;;;;;;;;;;;;;;;;;;;;;:30;;;812:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;550:3;902:7;:25;550:3;902:25;;;;;;;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;966:1;960:2;:7;;;;956:181;;;1061:40;1081:2;1085:4;1091:9;1061:19;:40::i;:::-;1053:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;956:181;735:409;;:::o;3699:309::-;3808:12;3990:1;3987;3980:4;3974:11;3967:4;3961;3957:15;3950:5;3946:2;3939:5;3934:58;3923:69;;3909:93;;;;;;:::o;4014:303::-;4116:12;4299:1;4296;4289:4;4283:11;4276:4;4270;4266:15;4262:2;4255:5;4242:59;4231:70;;4217:94;;;;;:::o;4323:261::-;4392:19;4562:4;4556:11;4549:4;4543;4539:15;4536:1;4529:39;4514:54;;4500:78;;;:::o", + "source": "pragma solidity 0.4.24;\nimport \"./interfaces/ERC20Token.sol\";\nimport \"./GnosisSafe.sol\";\nimport \"./MasterCopy.sol\";\n\n\n/// @title Gnosis Safe Personal Edition - A multisignature wallet with support for confirmations using signed messages based on ERC191.\n/// @author Stefan George - \n/// @author Richard Meissner - \n/// @author Ricardo Guilherme Schmidt - (Status Research & Development GmbH) - Gas Token Payment\ncontract GnosisSafePersonalEdition is MasterCopy, GnosisSafe {\n\n string public constant NAME = \"Gnosis Safe Personal Edition\";\n string public constant VERSION = \"0.0.1\";\n \n uint256 internal constant BASE_TX_GAS_COSTS = 21000;\n uint256 internal constant PAYMENT_GAS_COSTS = 11000;\n\n event ExecutionFailed();\n\n uint256 public nonce;\n\n /// @dev Allows to execute a Safe transaction confirmed by required number of owners.\n /// @param to Destination address of Safe transaction.\n /// @param value Ether value of Safe transaction.\n /// @param data Data payload of Safe transaction.\n /// @param operation Operation type of Safe transaction.\n /// @param safeTxGas Gas that should be used for the Safe transaction.\n /// @param dataGas Gas costs for data used to trigger the safe transaction.\n /// @param gasPrice Gas price that should be used for the payment calculation.\n /// @param gasToken Token address (or 0 if ETH) that is used for the payment.\n /// @param v Array of signature V values sorted by owner addresses.\n /// @param r Array of signature R values sorted by owner addresses.\n /// @param s Array of signature S values sorted by owner addresses.\n function execAndPayTransaction(\n address to, \n uint256 value, \n bytes data, \n Enum.Operation operation, \n uint256 safeTxGas,\n uint256 dataGas,\n uint256 gasPrice,\n address gasToken,\n uint8[] v, \n bytes32[] r, \n bytes32[] s\n )\n public\n {\n uint256 startGas = gasleft();\n checkHash(getTransactionHash(to, value, data, operation, safeTxGas, dataGas, gasPrice, gasToken, nonce), v, r, s);\n // Increase nonce and execute transaction.\n nonce++;\n require(gasleft() - PAYMENT_GAS_COSTS >= safeTxGas, \"Not enough gas to execute safe transaction\");\n if (!execute(to, value, data, operation, safeTxGas)) {\n emit ExecutionFailed();\n }\n \n // We transfer the calculated tx costs to the tx.origin to avoid sending it to intermediate contracts that have made calls\n if (gasPrice > 0) {\n uint256 gasCosts = totalGasCosts(startGas - gasleft(), dataGas);\n uint256 amount = gasCosts * gasPrice;\n if (gasToken == address(0)) {\n // solium-disable-next-line security/no-tx-origin\n tx.origin.transfer(amount);\n } else {\n // solium-disable-next-line security/no-tx-origin\n require(ERC20Token(gasToken).transfer(tx.origin, amount), \"Could not pay gas costs with token\");\n }\n } \n }\n\n /// @dev Calculates the total gas costs for a safe transaction with the gas costs for the execution of the transaction.\n /// @param executionGas Gas costs for the execution of the safe transaction.\n /// @param dataGas Gas costs for data used to trigger the safe transaction.\n /// @return Total gas costs for the execution (this includes gas costs for the payment to tx.origin, base transaction and payload data).\n function totalGasCosts(uint256 executionGas, uint256 dataGas) \n public \n pure\n returns (uint256) \n {\n return executionGas + dataGas + PAYMENT_GAS_COSTS + BASE_TX_GAS_COSTS;\n }\n\n /// @dev Allows to estimate a Safe transaction. \n /// This method is only meant for estimation purpose, therfore two different protection mechanism against execution in a transaction have been made:\n /// 1.) The method can only be called from the safe itself\n /// 2.) The response is returned with a revert\n /// When estimating set `from` to the address of the safe.\n /// Since the `estimateGas` function includes refunds, call this method to get an estimated of the costs that are deducted from the safe with `execAndPayTransaction`\n /// @param to Destination address of Safe transaction.\n /// @param value Ether value of Safe transaction.\n /// @param data Data payload of Safe transaction.\n /// @param operation Operation type of Safe transaction.\n /// @return Estimate without refunds and overhead fees (base transaction and payload data gas costs).\n function requiredTxGas(address to, uint256 value, bytes data, Enum.Operation operation)\n public\n authorized\n returns (uint256)\n {\n uint256 startGas = gasleft();\n // We don't provide an error message here, as we use it to return the estimate\n require(execute(to, value, data, operation, gasleft()));\n uint256 requiredGas = startGas - gasleft();\n // Convert response to string and return via error message\n revert(string(abi.encodePacked(requiredGas)));\n }\n\n function checkHash(bytes32 hash, uint8[] v, bytes32[] r, bytes32[] s)\n internal\n view\n {\n // There cannot be an owner with address 0.\n address lastOwner = address(0);\n address currentOwner;\n uint256 i;\n // Validate threshold is reached.\n for (i = 0; i < threshold; i++) {\n currentOwner = ecrecover(hash, v[i], r[i], s[i]);\n require(owners[currentOwner] != 0, \"Signature not provided by owner\");\n require(currentOwner > lastOwner, \"Signatures are not ordered by owner address\");\n lastOwner = currentOwner;\n }\n }\n\n /// @dev Returns hash to be signed by owners.\n /// @param to Destination address.\n /// @param value Ether value.\n /// @param data Data payload.\n /// @param operation Operation type.\n /// @param safeTxGas Fas that should be used for the safe transaction.\n /// @param dataGas Gas costs for data used to trigger the safe transaction.\n /// @param gasPrice Maximum gas price that should be used for this transaction.\n /// @param gasToken Token address (or 0 if ETH) that is used for the payment.\n /// @param _nonce Transaction nonce.\n /// @return Transaction hash.\n function getTransactionHash(\n address to, \n uint256 value, \n bytes data, \n Enum.Operation operation, \n uint256 safeTxGas, \n uint256 dataGas, \n uint256 gasPrice, \n address gasToken,\n uint256 _nonce\n )\n public\n view\n returns (bytes32)\n {\n return keccak256(\n abi.encodePacked(byte(0x19), byte(0), this, to, value, data, operation, safeTxGas, dataGas, gasPrice, gasToken, _nonce)\n );\n }\n}\n", "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafePersonalEdition.sol", "ast": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafePersonalEdition.sol", "exportedSymbols": { "GnosisSafePersonalEdition": [ - 397 + 401 ] }, - "id": 398, + "id": 402, "nodeType": "SourceUnit", "nodes": [ { @@ -525,8 +525,8 @@ "file": "./interfaces/ERC20Token.sol", "id": 66, "nodeType": "ImportDirective", - "scope": 398, - "sourceUnit": 1686, + "scope": 402, + "sourceUnit": 1721, "src": "24:37:3", "symbolAliases": [], "unitAlias": "" @@ -536,7 +536,7 @@ "file": "./GnosisSafe.sol", "id": 67, "nodeType": "ImportDirective", - "scope": 398, + "scope": 402, "sourceUnit": 64, "src": "62:26:3", "symbolAliases": [], @@ -547,8 +547,8 @@ "file": "./MasterCopy.sol", "id": 68, "nodeType": "ImportDirective", - "scope": 398, - "sourceUnit": 653, + "scope": 402, + "sourceUnit": 663, "src": "89:26:3", "symbolAliases": [], "unitAlias": "" @@ -562,10 +562,10 @@ "id": 69, "name": "MasterCopy", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 652, + "referencedDeclaration": 662, "src": "487:10:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_MasterCopy_$652", + "typeIdentifier": "t_contract$_MasterCopy_$662", "typeString": "contract MasterCopy" } }, @@ -594,22 +594,22 @@ ], "contractDependencies": [ 63, - 652, - 1100, - 1472, - 1619 + 662, + 1118, + 1504, + 1654 ], "contractKind": "contract", "documentation": "@title Gnosis Safe Personal Edition - A multisignature wallet with support for confirmations using signed messages based on ERC191.\n @author Stefan George - \n @author Richard Meissner - \n @author Ricardo Guilherme Schmidt - (Status Research & Development GmbH) - Gas Token Payment", "fullyImplemented": true, - "id": 397, + "id": 401, "linearizedBaseContracts": [ - 397, + 401, 63, - 1472, - 1100, - 652, - 1619 + 1504, + 1118, + 662, + 1654 ], "name": "GnosisSafePersonalEdition", "nodeType": "ContractDefinition", @@ -619,7 +619,7 @@ "id": 75, "name": "NAME", "nodeType": "VariableDeclaration", - "scope": 397, + "scope": 401, "src": "517:60:3", "stateVariable": true, "storageLocation": "default", @@ -662,7 +662,7 @@ "id": 78, "name": "VERSION", "nodeType": "VariableDeclaration", - "scope": 397, + "scope": 401, "src": "583:40:3", "stateVariable": true, "storageLocation": "default", @@ -705,7 +705,7 @@ "id": 81, "name": "BASE_TX_GAS_COSTS", "nodeType": "VariableDeclaration", - "scope": 397, + "scope": 401, "src": "634:51:3", "stateVariable": true, "storageLocation": "default", @@ -748,7 +748,7 @@ "id": 84, "name": "PAYMENT_GAS_COSTS", "nodeType": "VariableDeclaration", - "scope": 397, + "scope": 401, "src": "691:51:3", "stateVariable": true, "storageLocation": "default", @@ -805,7 +805,7 @@ "id": 88, "name": "nonce", "nodeType": "VariableDeclaration", - "scope": 397, + "scope": 401, "src": "779:20:3", "stateVariable": true, "storageLocation": "default", @@ -828,9 +828,9 @@ }, { "body": { - "id": 211, + "id": 213, "nodeType": "Block", - "src": "1984:1043:3", + "src": "1984:1127:3", "statements": [ { "assignments": [ @@ -842,7 +842,7 @@ "id": 117, "name": "startGas", "nodeType": "VariableDeclaration", - "scope": 212, + "scope": 214, "src": "1994:16:3", "stateVariable": false, "storageLocation": "default", @@ -874,7 +874,7 @@ "name": "gasleft", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2591, + "referencedDeclaration": 2647, "src": "2013:7:3", "typeDescriptions": { "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", @@ -1066,7 +1066,7 @@ "name": "getTransactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 396, + "referencedDeclaration": 400, "src": "2042:18:3", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$_t_uint256_$_t_uint256_$_t_uint256_$_t_address_$_t_uint256_$returns$_t_bytes32_$", @@ -1150,7 +1150,7 @@ "name": "checkHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 350, + "referencedDeclaration": 354, "src": "2032:9:3", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_array$_t_uint8_$dyn_memory_ptr_$_t_array$_t_bytes32_$dyn_memory_ptr_$_t_array$_t_bytes32_$dyn_memory_ptr_$returns$__$", @@ -1244,7 +1244,7 @@ "name": "gasleft", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2591, + "referencedDeclaration": 2647, "src": "2231:7:3", "typeDescriptions": { "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", @@ -1306,6 +1306,24 @@ "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "4e6f7420656e6f7567682067617320746f20657865637574652073616665207472616e73616374696f6e", + "id": 148, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2275:44:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_e7ccb05a0f2c66d12451cdfc6bbab488c38ab704d0f6af9ad18763542e9e5f18", + "typeString": "literal_string \"Not enough gas to execute safe transaction\"" + }, + "value": "Not enough gas to execute safe transaction" } ], "expression": { @@ -1313,23 +1331,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_e7ccb05a0f2c66d12451cdfc6bbab488c38ab704d0f6af9ad18763542e9e5f18", + "typeString": "literal_string \"Not enough gas to execute safe transaction\"" } ], "id": 141, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, + "referencedDeclaration": 2658, "src": "2223:7:3", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 148, + "id": 149, "isConstant": false, "isLValue": false, "isPure": false, @@ -1337,20 +1359,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2223:51:3", + "src": "2223:97:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 149, + "id": 150, "nodeType": "ExpressionStatement", - "src": "2223:51:3" + "src": "2223:97:3" }, { "condition": { "argumentTypes": null, - "id": 157, + "id": 158, "isConstant": false, "isLValue": false, "isPure": false, @@ -1358,18 +1380,18 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "2288:47:3", + "src": "2334:47:3", "subExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 151, + "id": 152, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 90, - "src": "2297:2:3", + "src": "2343:2:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1377,12 +1399,12 @@ }, { "argumentTypes": null, - "id": 152, + "id": 153, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 92, - "src": "2301:5:3", + "src": "2347:5:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1390,12 +1412,12 @@ }, { "argumentTypes": null, - "id": 153, + "id": 154, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 94, - "src": "2308:4:3", + "src": "2354:4:3", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -1403,12 +1425,12 @@ }, { "argumentTypes": null, - "id": 154, + "id": 155, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 96, - "src": "2314:9:3", + "src": "2360:9:3", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" @@ -1416,12 +1438,12 @@ }, { "argumentTypes": null, - "id": 155, + "id": 156, "name": "safeTxGas", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 98, - "src": "2325:9:3", + "src": "2371:9:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1451,18 +1473,18 @@ "typeString": "uint256" } ], - "id": 150, + "id": 151, "name": "execute", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 989, - "src": "2289:7:3", + "referencedDeclaration": 1007, + "src": "2335:7:3", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256) returns (bool)" } }, - "id": 156, + "id": 157, "isConstant": false, "isLValue": false, "isPure": false, @@ -1470,7 +1492,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2289:46:3", + "src": "2335:46:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1482,13 +1504,13 @@ } }, "falseBody": null, - "id": 162, + "id": 163, "nodeType": "IfStatement", - "src": "2284:100:3", + "src": "2330:100:3", "trueBody": { - "id": 161, + "id": 162, "nodeType": "Block", - "src": "2337:47:3", + "src": "2383:47:3", "statements": [ { "eventCall": { @@ -1496,18 +1518,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 158, + "id": 159, "name": "ExecutionFailed", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86, - "src": "2356:15:3", + "src": "2402:15:3", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$__$returns$__$", "typeString": "function ()" } }, - "id": 159, + "id": 160, "isConstant": false, "isLValue": false, "isPure": false, @@ -1515,15 +1537,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2356:17:3", + "src": "2402:17:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 160, + "id": 161, "nodeType": "EmitStatement", - "src": "2351:22:3" + "src": "2397:22:3" } ] } @@ -1535,19 +1557,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 165, + "id": 166, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 163, + "id": 164, "name": "gasPrice", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 102, - "src": "2537:8:3", + "src": "2583:8:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1558,14 +1580,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 164, + "id": 165, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2548:1:3", + "src": "2594:1:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -1573,33 +1595,33 @@ }, "value": "0" }, - "src": "2537:12:3", + "src": "2583:12:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 210, + "id": 212, "nodeType": "IfStatement", - "src": "2533:486:3", + "src": "2579:524:3", "trueBody": { - "id": 209, + "id": 211, "nodeType": "Block", - "src": "2551:468:3", + "src": "2597:506:3", "statements": [ { "assignments": [ - 167 + 168 ], "declarations": [ { "constant": false, - "id": 167, + "id": 168, "name": "gasCosts", "nodeType": "VariableDeclaration", - "scope": 212, - "src": "2565:16:3", + "scope": 214, + "src": "2611:16:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1607,10 +1629,10 @@ "typeString": "uint256" }, "typeName": { - "id": 166, + "id": 167, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2565:7:3", + "src": "2611:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1620,7 +1642,7 @@ "visibility": "internal" } ], - "id": 175, + "id": 176, "initialValue": { "argumentTypes": null, "arguments": [ @@ -1630,19 +1652,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 172, + "id": 173, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 169, + "id": 170, "name": "startGas", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 117, - "src": "2598:8:3", + "src": "2644:8:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1655,18 +1677,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 170, + "id": 171, "name": "gasleft", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2591, - "src": "2609:7:3", + "referencedDeclaration": 2647, + "src": "2655:7:3", "typeDescriptions": { "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, - "id": 171, + "id": 172, "isConstant": false, "isLValue": false, "isPure": false, @@ -1674,13 +1696,13 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2609:9:3", + "src": "2655:9:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "2598:20:3", + "src": "2644:20:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1688,12 +1710,12 @@ }, { "argumentTypes": null, - "id": 173, + "id": 174, "name": "dataGas", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 100, - "src": "2620:7:3", + "src": "2666:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1711,18 +1733,18 @@ "typeString": "uint256" } ], - "id": 168, + "id": 169, "name": "totalGasCosts", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 230, - "src": "2584:13:3", + "referencedDeclaration": 232, + "src": "2630:13:3", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, - "id": 174, + "id": 175, "isConstant": false, "isLValue": false, "isPure": false, @@ -1730,27 +1752,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2584:44:3", + "src": "2630:44:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "2565:63:3" + "src": "2611:63:3" }, { "assignments": [ - 177 + 178 ], "declarations": [ { "constant": false, - "id": 177, + "id": 178, "name": "amount", "nodeType": "VariableDeclaration", - "scope": 212, - "src": "2642:14:3", + "scope": 214, + "src": "2688:14:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1758,10 +1780,10 @@ "typeString": "uint256" }, "typeName": { - "id": 176, + "id": 177, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2642:7:3", + "src": "2688:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1771,26 +1793,26 @@ "visibility": "internal" } ], - "id": 181, + "id": 182, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 180, + "id": 181, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 178, + "id": 179, "name": "gasCosts", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 167, - "src": "2659:8:3", + "referencedDeclaration": 168, + "src": "2705:8:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1800,25 +1822,25 @@ "operator": "*", "rightExpression": { "argumentTypes": null, - "id": 179, + "id": 180, "name": "gasPrice", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 102, - "src": "2670:8:3", + "src": "2716:8:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "2659:19:3", + "src": "2705:19:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "2642:36:3" + "src": "2688:36:3" }, { "condition": { @@ -1827,19 +1849,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 186, + "id": 187, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 182, + "id": 183, "name": "gasToken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 104, - "src": "2696:8:3", + "src": "2742:8:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1853,14 +1875,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 184, + "id": 185, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2716:1:3", + "src": "2762:1:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -1876,20 +1898,20 @@ "typeString": "int_const 0" } ], - "id": 183, + "id": 184, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2708:7:3", + "src": "2754:7:3", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 185, + "id": 186, "isConstant": false, "isLValue": false, "isPure": true, @@ -1897,22 +1919,22 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2708:10:3", + "src": "2754:10:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2696:22:3", + "src": "2742:22:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": { - "id": 207, + "id": 209, "nodeType": "Block", - "src": "2852:157:3", + "src": "2898:195:3", "statements": [ { "expression": { @@ -1925,18 +1947,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 201, + "id": 202, "name": "tx", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2610, - "src": "2975:2:3", + "referencedDeclaration": 2666, + "src": "3021:2:3", "typeDescriptions": { "typeIdentifier": "t_magic_transaction", "typeString": "tx" } }, - "id": 202, + "id": 203, "isConstant": false, "isLValue": false, "isPure": false, @@ -1944,7 +1966,7 @@ "memberName": "origin", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2975:9:3", + "src": "3021:9:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1952,12 +1974,12 @@ }, { "argumentTypes": null, - "id": 203, + "id": 204, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 177, - "src": "2986:6:3", + "referencedDeclaration": 178, + "src": "3032:6:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1980,12 +2002,12 @@ "arguments": [ { "argumentTypes": null, - "id": 198, + "id": 199, "name": "gasToken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 104, - "src": "2956:8:3", + "src": "3002:8:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1999,18 +2021,18 @@ "typeString": "address" } ], - "id": 197, + "id": 198, "name": "ERC20Token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1685, - "src": "2945:10:3", + "referencedDeclaration": 1720, + "src": "2991:10:3", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_ERC20Token_$1685_$", + "typeIdentifier": "t_type$_t_contract$_ERC20Token_$1720_$", "typeString": "type(contract ERC20Token)" } }, - "id": 199, + "id": 200, "isConstant": false, "isLValue": false, "isPure": false, @@ -2018,27 +2040,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2945:20:3", + "src": "2991:20:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20Token_$1685", + "typeIdentifier": "t_contract$_ERC20Token_$1720", "typeString": "contract ERC20Token" } }, - "id": 200, + "id": 201, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "transfer", "nodeType": "MemberAccess", - "referencedDeclaration": 1639, - "src": "2945:29:3", + "referencedDeclaration": 1674, + "src": "2991:29:3", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)" } }, - "id": 204, + "id": 205, "isConstant": false, "isLValue": false, "isPure": false, @@ -2046,11 +2068,29 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2945:48:3", + "src": "2991:48:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "436f756c64206e6f74207061792067617320636f737473207769746820746f6b656e", + "id": 206, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3041:36:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_8560a13547eca5648355c8db1a9f8653b6f657d31d476c36bca25e47b45b08f4", + "typeString": "literal_string \"Could not pay gas costs with token\"" + }, + "value": "Could not pay gas costs with token" } ], "expression": { @@ -2058,23 +2098,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_8560a13547eca5648355c8db1a9f8653b6f657d31d476c36bca25e47b45b08f4", + "typeString": "literal_string \"Could not pay gas costs with token\"" } ], - "id": 196, + "id": 197, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "2937:7:3", + "referencedDeclaration": 2658, + "src": "2983:7:3", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 205, + "id": 207, "isConstant": false, "isLValue": false, "isPure": false, @@ -2082,25 +2126,25 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2937:57:3", + "src": "2983:95:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 206, + "id": 208, "nodeType": "ExpressionStatement", - "src": "2937:57:3" + "src": "2983:95:3" } ] }, - "id": 208, + "id": 210, "nodeType": "IfStatement", - "src": "2692:317:3", + "src": "2738:355:3", "trueBody": { - "id": 195, + "id": 196, "nodeType": "Block", - "src": "2720:126:3", + "src": "2766:126:3", "statements": [ { "expression": { @@ -2108,12 +2152,12 @@ "arguments": [ { "argumentTypes": null, - "id": 192, + "id": 193, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 177, - "src": "2824:6:3", + "referencedDeclaration": 178, + "src": "2870:6:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2131,18 +2175,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 187, + "id": 188, "name": "tx", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2610, - "src": "2805:2:3", + "referencedDeclaration": 2666, + "src": "2851:2:3", "typeDescriptions": { "typeIdentifier": "t_magic_transaction", "typeString": "tx" } }, - "id": 190, + "id": 191, "isConstant": false, "isLValue": false, "isPure": false, @@ -2150,13 +2194,13 @@ "memberName": "origin", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2805:9:3", + "src": "2851:9:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 191, + "id": 192, "isConstant": false, "isLValue": false, "isPure": false, @@ -2164,13 +2208,13 @@ "memberName": "transfer", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2805:18:3", + "src": "2851:18:3", "typeDescriptions": { "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256)" } }, - "id": 193, + "id": 194, "isConstant": false, "isLValue": false, "isPure": false, @@ -2178,15 +2222,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2805:26:3", + "src": "2851:26:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 194, + "id": 195, "nodeType": "ExpressionStatement", - "src": "2805:26:3" + "src": "2851:26:3" } ] } @@ -2197,7 +2241,7 @@ ] }, "documentation": "@dev Allows to execute a Safe transaction confirmed by required number of owners.\n @param to Destination address of Safe transaction.\n @param value Ether value of Safe transaction.\n @param data Data payload of Safe transaction.\n @param operation Operation type of Safe transaction.\n @param safeTxGas Gas that should be used for the Safe transaction.\n @param dataGas Gas costs for data used to trigger the safe transaction.\n @param gasPrice Gas price that should be used for the payment calculation.\n @param gasToken Token address (or 0 if ETH) that is used for the payment.\n @param v Array of signature V values sorted by owner addresses.\n @param r Array of signature R values sorted by owner addresses.\n @param s Array of signature S values sorted by owner addresses.", - "id": 212, + "id": 214, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -2213,7 +2257,7 @@ "id": 90, "name": "to", "nodeType": "VariableDeclaration", - "scope": 212, + "scope": 214, "src": "1700:10:3", "stateVariable": false, "storageLocation": "default", @@ -2239,7 +2283,7 @@ "id": 92, "name": "value", "nodeType": "VariableDeclaration", - "scope": 212, + "scope": 214, "src": "1721:13:3", "stateVariable": false, "storageLocation": "default", @@ -2265,7 +2309,7 @@ "id": 94, "name": "data", "nodeType": "VariableDeclaration", - "scope": 212, + "scope": 214, "src": "1745:10:3", "stateVariable": false, "storageLocation": "default", @@ -2291,7 +2335,7 @@ "id": 96, "name": "operation", "nodeType": "VariableDeclaration", - "scope": 212, + "scope": 214, "src": "1766:24:3", "stateVariable": false, "storageLocation": "default", @@ -2319,7 +2363,7 @@ "id": 98, "name": "safeTxGas", "nodeType": "VariableDeclaration", - "scope": 212, + "scope": 214, "src": "1801:17:3", "stateVariable": false, "storageLocation": "default", @@ -2345,7 +2389,7 @@ "id": 100, "name": "dataGas", "nodeType": "VariableDeclaration", - "scope": 212, + "scope": 214, "src": "1828:15:3", "stateVariable": false, "storageLocation": "default", @@ -2371,7 +2415,7 @@ "id": 102, "name": "gasPrice", "nodeType": "VariableDeclaration", - "scope": 212, + "scope": 214, "src": "1853:16:3", "stateVariable": false, "storageLocation": "default", @@ -2397,7 +2441,7 @@ "id": 104, "name": "gasToken", "nodeType": "VariableDeclaration", - "scope": 212, + "scope": 214, "src": "1879:16:3", "stateVariable": false, "storageLocation": "default", @@ -2423,7 +2467,7 @@ "id": 107, "name": "v", "nodeType": "VariableDeclaration", - "scope": 212, + "scope": 214, "src": "1905:9:3", "stateVariable": false, "storageLocation": "default", @@ -2459,7 +2503,7 @@ "id": 110, "name": "r", "nodeType": "VariableDeclaration", - "scope": 212, + "scope": 214, "src": "1925:11:3", "stateVariable": false, "storageLocation": "default", @@ -2495,7 +2539,7 @@ "id": 113, "name": "s", "nodeType": "VariableDeclaration", - "scope": 212, + "scope": 214, "src": "1947:11:3", "stateVariable": false, "storageLocation": "default", @@ -2536,17 +2580,17 @@ "parameters": [], "src": "1984:0:3" }, - "scope": 397, - "src": "1660:1367:3", + "scope": 401, + "src": "1660:1451:3", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 229, + "id": 231, "nodeType": "Block", - "src": "3582:86:3", + "src": "3666:86:3", "statements": [ { "expression": { @@ -2555,7 +2599,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 227, + "id": 229, "isConstant": false, "isLValue": false, "isPure": false, @@ -2566,7 +2610,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 225, + "id": 227, "isConstant": false, "isLValue": false, "isPure": false, @@ -2577,19 +2621,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 223, + "id": 225, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 221, + "id": 223, "name": "executionGas", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 214, - "src": "3599:12:3", + "referencedDeclaration": 216, + "src": "3683:12:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2599,18 +2643,18 @@ "operator": "+", "rightExpression": { "argumentTypes": null, - "id": 222, + "id": 224, "name": "dataGas", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 216, - "src": "3614:7:3", + "referencedDeclaration": 218, + "src": "3698:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3599:22:3", + "src": "3683:22:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2620,18 +2664,18 @@ "operator": "+", "rightExpression": { "argumentTypes": null, - "id": 224, + "id": 226, "name": "PAYMENT_GAS_COSTS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 84, - "src": "3624:17:3", + "src": "3708:17:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3599:42:3", + "src": "3683:42:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2641,32 +2685,32 @@ "operator": "+", "rightExpression": { "argumentTypes": null, - "id": 226, + "id": 228, "name": "BASE_TX_GAS_COSTS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 81, - "src": "3644:17:3", + "src": "3728:17:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3599:62:3", + "src": "3683:62:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 220, - "id": 228, + "functionReturnParameters": 222, + "id": 230, "nodeType": "Return", - "src": "3592:69:3" + "src": "3676:69:3" } ] }, "documentation": "@dev Calculates the total gas costs for a safe transaction with the gas costs for the execution of the transaction.\n @param executionGas Gas costs for the execution of the safe transaction.\n @param dataGas Gas costs for data used to trigger the safe transaction.\n @return Total gas costs for the execution (this includes gas costs for the payment to tx.origin, base transaction and payload data).", - "id": 230, + "id": 232, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -2674,42 +2718,16 @@ "name": "totalGasCosts", "nodeType": "FunctionDefinition", "parameters": { - "id": 217, + "id": 219, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 214, + "id": 216, "name": "executionGas", "nodeType": "VariableDeclaration", - "scope": 230, - "src": "3482:20:3", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 213, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3482:7:3", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 216, - "name": "dataGas", - "nodeType": "VariableDeclaration", - "scope": 230, - "src": "3504:15:3", + "scope": 232, + "src": "3566:20:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2720,7 +2738,7 @@ "id": 215, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3504:7:3", + "src": "3566:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2728,22 +2746,14 @@ }, "value": null, "visibility": "internal" - } - ], - "src": "3481:39:3" - }, - "payable": false, - "returnParameters": { - "id": 220, - "nodeType": "ParameterList", - "parameters": [ + }, { "constant": false, - "id": 219, - "name": "", + "id": 218, + "name": "dataGas", "nodeType": "VariableDeclaration", - "scope": 230, - "src": "3568:7:3", + "scope": 232, + "src": "3588:15:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2751,10 +2761,10 @@ "typeString": "uint256" }, "typeName": { - "id": 218, + "id": 217, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3568:7:3", + "src": "3588:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2764,32 +2774,66 @@ "visibility": "internal" } ], - "src": "3567:9:3" + "src": "3565:39:3" }, - "scope": 397, - "src": "3459:209:3", + "payable": false, + "returnParameters": { + "id": 222, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 221, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 232, + "src": "3652:7:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 220, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3652:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3651:9:3" + }, + "scope": 401, + "src": "3543:209:3", "stateMutability": "pure", "superFunction": null, "visibility": "public" }, { "body": { - "id": 277, + "id": 279, "nodeType": "Block", - "src": "4738:255:3", + "src": "4822:371:3", "statements": [ { "assignments": [ - 246 + 248 ], "declarations": [ { "constant": false, - "id": 246, + "id": 248, "name": "startGas", "nodeType": "VariableDeclaration", - "scope": 278, - "src": "4748:16:3", + "scope": 280, + "src": "4832:16:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2797,10 +2841,10 @@ "typeString": "uint256" }, "typeName": { - "id": 245, + "id": 247, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4748:7:3", + "src": "4832:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2810,24 +2854,24 @@ "visibility": "internal" } ], - "id": 249, + "id": 251, "initialValue": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], - "id": 247, + "id": 249, "name": "gasleft", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2591, - "src": "4767:7:3", + "referencedDeclaration": 2647, + "src": "4851:7:3", "typeDescriptions": { "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, - "id": 248, + "id": 250, "isConstant": false, "isLValue": false, "isPure": false, @@ -2835,14 +2879,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4767:9:3", + "src": "4851:9:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "4748:28:3" + "src": "4832:28:3" }, { "expression": { @@ -2853,12 +2897,12 @@ "arguments": [ { "argumentTypes": null, - "id": 252, + "id": 254, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 232, - "src": "4802:2:3", + "referencedDeclaration": 234, + "src": "4973:2:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2866,12 +2910,12 @@ }, { "argumentTypes": null, - "id": 253, + "id": 255, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 234, - "src": "4806:5:3", + "referencedDeclaration": 236, + "src": "4977:5:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2879,12 +2923,12 @@ }, { "argumentTypes": null, - "id": 254, + "id": 256, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 236, - "src": "4813:4:3", + "referencedDeclaration": 238, + "src": "4984:4:3", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -2892,12 +2936,12 @@ }, { "argumentTypes": null, - "id": 255, + "id": 257, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 238, - "src": "4819:9:3", + "referencedDeclaration": 240, + "src": "4990:9:3", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" @@ -2908,18 +2952,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 256, + "id": 258, "name": "gasleft", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2591, - "src": "4830:7:3", + "referencedDeclaration": 2647, + "src": "5001:7:3", "typeDescriptions": { "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, - "id": 257, + "id": 259, "isConstant": false, "isLValue": false, "isPure": false, @@ -2927,7 +2971,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4830:9:3", + "src": "5001:9:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2957,18 +3001,18 @@ "typeString": "uint256" } ], - "id": 251, + "id": 253, "name": "execute", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 989, - "src": "4794:7:3", + "referencedDeclaration": 1007, + "src": "4965:7:3", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256) returns (bool)" } }, - "id": 258, + "id": 260, "isConstant": false, "isLValue": false, "isPure": false, @@ -2976,7 +3020,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4794:46:3", + "src": "4965:46:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2990,21 +3034,21 @@ "typeString": "bool" } ], - "id": 250, + "id": 252, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "4786:7:3", + "referencedDeclaration": 2657, + "src": "4957:7:3", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 259, + "id": 261, "isConstant": false, "isLValue": false, "isPure": false, @@ -3012,28 +3056,28 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4786:55:3", + "src": "4957:55:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 260, + "id": 262, "nodeType": "ExpressionStatement", - "src": "4786:55:3" + "src": "4957:55:3" }, { "assignments": [ - 262 + 264 ], "declarations": [ { "constant": false, - "id": 262, + "id": 264, "name": "requiredGas", "nodeType": "VariableDeclaration", - "scope": 278, - "src": "4851:19:3", + "scope": 280, + "src": "5022:19:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3041,10 +3085,10 @@ "typeString": "uint256" }, "typeName": { - "id": 261, + "id": 263, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4851:7:3", + "src": "5022:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3054,26 +3098,26 @@ "visibility": "internal" } ], - "id": 267, + "id": 269, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 266, + "id": 268, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 263, + "id": 265, "name": "startGas", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 246, - "src": "4873:8:3", + "referencedDeclaration": 248, + "src": "5044:8:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3086,18 +3130,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 264, + "id": 266, "name": "gasleft", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2591, - "src": "4884:7:3", + "referencedDeclaration": 2647, + "src": "5055:7:3", "typeDescriptions": { "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, - "id": 265, + "id": 267, "isConstant": false, "isLValue": false, "isPure": false, @@ -3105,20 +3149,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4884:9:3", + "src": "5055:9:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4873:20:3", + "src": "5044:20:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "4851:42:3" + "src": "5022:42:3" }, { "expression": { @@ -3132,12 +3176,12 @@ "arguments": [ { "argumentTypes": null, - "id": 272, + "id": 274, "name": "requiredGas", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 262, - "src": "4972:11:3", + "referencedDeclaration": 264, + "src": "5172:11:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3153,18 +3197,18 @@ ], "expression": { "argumentTypes": null, - "id": 270, + "id": 272, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2585, - "src": "4955:3:3", + "referencedDeclaration": 2641, + "src": "5155:3:3", "typeDescriptions": { "typeIdentifier": "t_magic_abi", "typeString": "abi" } }, - "id": 271, + "id": 273, "isConstant": false, "isLValue": false, "isPure": true, @@ -3172,13 +3216,13 @@ "memberName": "encodePacked", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "4955:16:3", + "src": "5155:16:3", "typeDescriptions": { "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)" } }, - "id": 273, + "id": 275, "isConstant": false, "isLValue": false, "isPure": false, @@ -3186,7 +3230,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4955:29:3", + "src": "5155:29:3", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -3200,20 +3244,20 @@ "typeString": "bytes memory" } ], - "id": 269, + "id": 271, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "4948:6:3", + "src": "5148:6:3", "typeDescriptions": { "typeIdentifier": "t_type$_t_string_storage_ptr_$", "typeString": "type(string storage pointer)" }, "typeName": "string" }, - "id": 274, + "id": 276, "isConstant": false, "isLValue": false, "isPure": false, @@ -3221,7 +3265,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4948:37:3", + "src": "5148:37:3", "typeDescriptions": { "typeIdentifier": "t_string_memory", "typeString": "string memory" @@ -3235,21 +3279,21 @@ "typeString": "string memory" } ], - "id": 268, + "id": 270, "name": "revert", "nodeType": "Identifier", "overloadedDeclarations": [ - 2603, - 2604 + 2659, + 2660 ], - "referencedDeclaration": 2604, - "src": "4941:6:3", + "referencedDeclaration": 2660, + "src": "5141:6:3", "typeDescriptions": { "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", "typeString": "function (string memory) pure" } }, - "id": 275, + "id": 277, "isConstant": false, "isLValue": false, "isPure": false, @@ -3257,57 +3301,57 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4941:45:3", + "src": "5141:45:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 276, + "id": 278, "nodeType": "ExpressionStatement", - "src": "4941:45:3" + "src": "5141:45:3" } ] }, "documentation": "@dev Allows to estimate a Safe transaction. \n This method is only meant for estimation purpose, therfore two different protection mechanism against execution in a transaction have been made:\n 1.) The method can only be called from the safe itself\n 2.) The response is returned with a revert\n When estimating set `from` to the address of the safe.\n Since the `estimateGas` function includes refunds, call this method to get an estimated of the costs that are deducted from the safe with `execAndPayTransaction`\n @param to Destination address of Safe transaction.\n @param value Ether value of Safe transaction.\n @param data Data payload of Safe transaction.\n @param operation Operation type of Safe transaction.\n @return Estimate without refunds and overhead fees (base transaction and payload data gas costs).", - "id": 278, + "id": 280, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 241, + "id": 243, "modifierName": { "argumentTypes": null, - "id": 240, + "id": 242, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1618, - "src": "4697:10:3", + "referencedDeclaration": 1653, + "src": "4781:10:3", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "4697:10:3" + "src": "4781:10:3" } ], "name": "requiredTxGas", "nodeType": "FunctionDefinition", "parameters": { - "id": 239, + "id": 241, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 232, + "id": 234, "name": "to", "nodeType": "VariableDeclaration", - "scope": 278, - "src": "4609:10:3", + "scope": 280, + "src": "4693:10:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3315,10 +3359,10 @@ "typeString": "address" }, "typeName": { - "id": 231, + "id": 233, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4609:7:3", + "src": "4693:7:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3329,11 +3373,11 @@ }, { "constant": false, - "id": 234, + "id": 236, "name": "value", "nodeType": "VariableDeclaration", - "scope": 278, - "src": "4621:13:3", + "scope": 280, + "src": "4705:13:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3341,10 +3385,10 @@ "typeString": "uint256" }, "typeName": { - "id": 233, + "id": 235, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4621:7:3", + "src": "4705:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3355,11 +3399,11 @@ }, { "constant": false, - "id": 236, + "id": 238, "name": "data", "nodeType": "VariableDeclaration", - "scope": 278, - "src": "4636:10:3", + "scope": 280, + "src": "4720:10:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3367,10 +3411,10 @@ "typeString": "bytes" }, "typeName": { - "id": 235, + "id": 237, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "4636:5:3", + "src": "4720:5:3", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -3381,11 +3425,11 @@ }, { "constant": false, - "id": 238, + "id": 240, "name": "operation", "nodeType": "VariableDeclaration", - "scope": 278, - "src": "4648:24:3", + "scope": 280, + "src": "4732:24:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3394,11 +3438,11 @@ }, "typeName": { "contractScope": null, - "id": 237, + "id": 239, "name": "Enum.Operation", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 29, - "src": "4648:14:3", + "src": "4732:14:3", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" @@ -3408,20 +3452,20 @@ "visibility": "internal" } ], - "src": "4608:65:3" + "src": "4692:65:3" }, "payable": false, "returnParameters": { - "id": 244, + "id": 246, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 243, + "id": 245, "name": "", "nodeType": "VariableDeclaration", - "scope": 278, - "src": "4725:7:3", + "scope": 280, + "src": "4809:7:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3429,10 +3473,10 @@ "typeString": "uint256" }, "typeName": { - "id": 242, + "id": 244, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4725:7:3", + "src": "4809:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3442,32 +3486,32 @@ "visibility": "internal" } ], - "src": "4724:9:3" + "src": "4808:9:3" }, - "scope": 397, - "src": "4586:407:3", + "scope": 401, + "src": "4670:523:3", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 349, + "id": 353, "nodeType": "Block", - "src": "5103:437:3", + "src": "5303:519:3", "statements": [ { "assignments": [ - 293 + 295 ], "declarations": [ { "constant": false, - "id": 293, + "id": 295, "name": "lastOwner", "nodeType": "VariableDeclaration", - "scope": 350, - "src": "5165:17:3", + "scope": 354, + "src": "5365:17:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3475,10 +3519,10 @@ "typeString": "address" }, "typeName": { - "id": 292, + "id": 294, "name": "address", "nodeType": "ElementaryTypeName", - "src": "5165:7:3", + "src": "5365:7:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3488,21 +3532,21 @@ "visibility": "internal" } ], - "id": 297, + "id": 299, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", - "id": 295, + "id": 297, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "5193:1:3", + "src": "5393:1:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -3518,20 +3562,20 @@ "typeString": "int_const 0" } ], - "id": 294, + "id": 296, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "5185:7:3", + "src": "5385:7:3", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 296, + "id": 298, "isConstant": false, "isLValue": false, "isPure": true, @@ -3539,25 +3583,25 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5185:10:3", + "src": "5385:10:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", - "src": "5165:30:3" + "src": "5365:30:3" }, { "assignments": [], "declarations": [ { "constant": false, - "id": 299, + "id": 301, "name": "currentOwner", "nodeType": "VariableDeclaration", - "scope": 350, - "src": "5205:20:3", + "scope": 354, + "src": "5405:20:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3565,10 +3609,10 @@ "typeString": "address" }, "typeName": { - "id": 298, + "id": 300, "name": "address", "nodeType": "ElementaryTypeName", - "src": "5205:7:3", + "src": "5405:7:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3578,21 +3622,21 @@ "visibility": "internal" } ], - "id": 300, + "id": 302, "initialValue": null, "nodeType": "VariableDeclarationStatement", - "src": "5205:20:3" + "src": "5405:20:3" }, { "assignments": [], "declarations": [ { "constant": false, - "id": 302, + "id": 304, "name": "i", "nodeType": "VariableDeclaration", - "scope": 350, - "src": "5235:9:3", + "scope": 354, + "src": "5435:9:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3600,10 +3644,10 @@ "typeString": "uint256" }, "typeName": { - "id": 301, + "id": 303, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "5235:7:3", + "src": "5435:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3613,33 +3657,33 @@ "visibility": "internal" } ], - "id": 303, + "id": 305, "initialValue": null, "nodeType": "VariableDeclarationStatement", - "src": "5235:9:3" + "src": "5435:9:3" }, { "body": { - "id": 347, + "id": 351, "nodeType": "Block", - "src": "5328:206:3", + "src": "5528:288:3", "statements": [ { "expression": { "argumentTypes": null, - "id": 327, + "id": 329, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 314, + "id": 316, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 299, - "src": "5342:12:3", + "referencedDeclaration": 301, + "src": "5542:12:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3652,12 +3696,12 @@ "arguments": [ { "argumentTypes": null, - "id": 316, + "id": 318, "name": "hash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 280, - "src": "5367:4:3", + "referencedDeclaration": 282, + "src": "5567:4:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -3667,26 +3711,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 317, + "id": 319, "name": "v", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 283, - "src": "5373:1:3", + "referencedDeclaration": 285, + "src": "5573:1:3", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr", "typeString": "uint8[] memory" } }, - "id": 319, + "id": 321, "indexExpression": { "argumentTypes": null, - "id": 318, + "id": 320, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 302, - "src": "5375:1:3", + "referencedDeclaration": 304, + "src": "5575:1:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3697,7 +3741,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "5373:4:3", + "src": "5573:4:3", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -3707,26 +3751,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 320, + "id": 322, "name": "r", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 286, - "src": "5379:1:3", + "referencedDeclaration": 288, + "src": "5579:1:3", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", "typeString": "bytes32[] memory" } }, - "id": 322, + "id": 324, "indexExpression": { "argumentTypes": null, - "id": 321, + "id": 323, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 302, - "src": "5381:1:3", + "referencedDeclaration": 304, + "src": "5581:1:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3737,7 +3781,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "5379:4:3", + "src": "5579:4:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -3747,26 +3791,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 323, + "id": 325, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 289, - "src": "5385:1:3", + "referencedDeclaration": 291, + "src": "5585:1:3", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", "typeString": "bytes32[] memory" } }, - "id": 325, + "id": 327, "indexExpression": { "argumentTypes": null, - "id": 324, + "id": 326, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 302, - "src": "5387:1:3", + "referencedDeclaration": 304, + "src": "5587:1:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3777,7 +3821,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "5385:4:3", + "src": "5585:4:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -3803,18 +3847,18 @@ "typeString": "bytes32" } ], - "id": 315, + "id": 317, "name": "ecrecover", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2590, - "src": "5357:9:3", + "referencedDeclaration": 2646, + "src": "5557:9:3", "typeDescriptions": { "typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$", "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)" } }, - "id": 326, + "id": 328, "isConstant": false, "isLValue": false, "isPure": false, @@ -3822,21 +3866,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5357:33:3", + "src": "5557:33:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "5342:48:3", + "src": "5542:48:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 328, + "id": 330, "nodeType": "ExpressionStatement", - "src": "5342:48:3" + "src": "5542:48:3" }, { "expression": { @@ -3848,7 +3892,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 334, + "id": 336, "isConstant": false, "isLValue": false, "isPure": false, @@ -3857,26 +3901,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 330, + "id": 332, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1114, - "src": "5412:6:3", + "referencedDeclaration": 1132, + "src": "5612:6:3", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 332, + "id": 334, "indexExpression": { "argumentTypes": null, - "id": 331, + "id": 333, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 299, - "src": "5419:12:3", + "referencedDeclaration": 301, + "src": "5619:12:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3887,7 +3931,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "5412:20:3", + "src": "5612:20:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3898,14 +3942,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 333, + "id": 335, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "5436:1:3", + "src": "5636:1:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -3913,11 +3957,29 @@ }, "value": "0" }, - "src": "5412:25:3", + "src": "5612:25:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "5369676e6174757265206e6f742070726f7669646564206279206f776e6572", + "id": 337, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5639:33:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_09247dae670daab7cf1923d3334eea07c14df3c0a8f5233960935c63f47104a9", + "typeString": "literal_string \"Signature not provided by owner\"" + }, + "value": "Signature not provided by owner" } ], "expression": { @@ -3925,23 +3987,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_09247dae670daab7cf1923d3334eea07c14df3c0a8f5233960935c63f47104a9", + "typeString": "literal_string \"Signature not provided by owner\"" } ], - "id": 329, + "id": 331, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "5404:7:3", + "referencedDeclaration": 2658, + "src": "5604:7:3", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 335, + "id": 338, "isConstant": false, "isLValue": false, "isPure": false, @@ -3949,15 +4015,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5404:34:3", + "src": "5604:69:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 336, + "id": 339, "nodeType": "ExpressionStatement", - "src": "5404:34:3" + "src": "5604:69:3" }, { "expression": { @@ -3969,19 +4035,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 340, + "id": 343, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 338, + "id": 341, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 299, - "src": "5460:12:3", + "referencedDeclaration": 301, + "src": "5695:12:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3991,22 +4057,40 @@ "operator": ">", "rightExpression": { "argumentTypes": null, - "id": 339, + "id": 342, "name": "lastOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 293, - "src": "5475:9:3", + "referencedDeclaration": 295, + "src": "5710:9:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "5460:24:3", + "src": "5695:24:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "5369676e61747572657320617265206e6f74206f726465726564206279206f776e65722061646472657373", + "id": 344, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5721:45:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_597a123a1bc14bc9690387ae0fec99721cc18eefa85fa2531a7593a762444235", + "typeString": "literal_string \"Signatures are not ordered by owner address\"" + }, + "value": "Signatures are not ordered by owner address" } ], "expression": { @@ -4014,23 +4098,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_597a123a1bc14bc9690387ae0fec99721cc18eefa85fa2531a7593a762444235", + "typeString": "literal_string \"Signatures are not ordered by owner address\"" } ], - "id": 337, + "id": 340, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "5452:7:3", + "referencedDeclaration": 2658, + "src": "5687:7:3", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 341, + "id": 345, "isConstant": false, "isLValue": false, "isPure": false, @@ -4038,32 +4126,32 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5452:33:3", + "src": "5687:80:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 342, + "id": 346, "nodeType": "ExpressionStatement", - "src": "5452:33:3" + "src": "5687:80:3" }, { "expression": { "argumentTypes": null, - "id": 345, + "id": 349, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 343, + "id": 347, "name": "lastOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 293, - "src": "5499:9:3", + "referencedDeclaration": 295, + "src": "5781:9:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4073,26 +4161,26 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 344, + "id": 348, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 299, - "src": "5511:12:3", + "referencedDeclaration": 301, + "src": "5793:12:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "5499:24:3", + "src": "5781:24:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 346, + "id": 350, "nodeType": "ExpressionStatement", - "src": "5499:24:3" + "src": "5781:24:3" } ] }, @@ -4102,19 +4190,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 310, + "id": 312, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 308, + "id": 310, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 302, - "src": "5308:1:3", + "referencedDeclaration": 304, + "src": "5508:1:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4124,40 +4212,40 @@ "operator": "<", "rightExpression": { "argumentTypes": null, - "id": 309, + "id": 311, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1118, - "src": "5312:9:3", + "referencedDeclaration": 1136, + "src": "5512:9:3", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "src": "5308:13:3", + "src": "5508:13:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 348, + "id": 352, "initializationExpression": { "expression": { "argumentTypes": null, - "id": 306, + "id": 308, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 304, + "id": 306, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 302, - "src": "5301:1:3", + "referencedDeclaration": 304, + "src": "5501:1:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4168,14 +4256,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "30", - "id": 305, + "id": 307, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "5305:1:3", + "src": "5505:1:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -4183,20 +4271,20 @@ }, "value": "0" }, - "src": "5301:5:3", + "src": "5501:5:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 307, + "id": 309, "nodeType": "ExpressionStatement", - "src": "5301:5:3" + "src": "5501:5:3" }, "loopExpression": { "expression": { "argumentTypes": null, - "id": 312, + "id": 314, "isConstant": false, "isLValue": false, "isPure": false, @@ -4204,15 +4292,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "5323:3:3", + "src": "5523:3:3", "subExpression": { "argumentTypes": null, - "id": 311, + "id": 313, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 302, - "src": "5323:1:3", + "referencedDeclaration": 304, + "src": "5523:1:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4223,17 +4311,17 @@ "typeString": "uint256" } }, - "id": 313, + "id": 315, "nodeType": "ExpressionStatement", - "src": "5323:3:3" + "src": "5523:3:3" }, "nodeType": "ForStatement", - "src": "5296:238:3" + "src": "5496:320:3" } ] }, "documentation": null, - "id": 350, + "id": 354, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -4241,16 +4329,16 @@ "name": "checkHash", "nodeType": "FunctionDefinition", "parameters": { - "id": 290, + "id": 292, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 280, + "id": 282, "name": "hash", "nodeType": "VariableDeclaration", - "scope": 350, - "src": "5018:12:3", + "scope": 354, + "src": "5218:12:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4258,10 +4346,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 279, + "id": 281, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "5018:7:3", + "src": "5218:7:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -4272,11 +4360,11 @@ }, { "constant": false, - "id": 283, + "id": 285, "name": "v", "nodeType": "VariableDeclaration", - "scope": 350, - "src": "5032:9:3", + "scope": 354, + "src": "5232:9:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4285,19 +4373,19 @@ }, "typeName": { "baseType": { - "id": 281, + "id": 283, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "5032:5:3", + "src": "5232:5:3", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "id": 282, + "id": 284, "length": null, "nodeType": "ArrayTypeName", - "src": "5032:7:3", + "src": "5232:7:3", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint8_$dyn_storage_ptr", "typeString": "uint8[]" @@ -4308,11 +4396,11 @@ }, { "constant": false, - "id": 286, + "id": 288, "name": "r", "nodeType": "VariableDeclaration", - "scope": 350, - "src": "5043:11:3", + "scope": 354, + "src": "5243:11:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4321,19 +4409,19 @@ }, "typeName": { "baseType": { - "id": 284, + "id": 286, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "5043:7:3", + "src": "5243:7:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "id": 285, + "id": 287, "length": null, "nodeType": "ArrayTypeName", - "src": "5043:9:3", + "src": "5243:9:3", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", "typeString": "bytes32[]" @@ -4344,11 +4432,11 @@ }, { "constant": false, - "id": 289, + "id": 291, "name": "s", "nodeType": "VariableDeclaration", - "scope": 350, - "src": "5056:11:3", + "scope": 354, + "src": "5256:11:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4357,19 +4445,19 @@ }, "typeName": { "baseType": { - "id": 287, + "id": 289, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "5056:7:3", + "src": "5256:7:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "id": 288, + "id": 290, "length": null, "nodeType": "ArrayTypeName", - "src": "5056:9:3", + "src": "5256:9:3", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", "typeString": "bytes32[]" @@ -4379,26 +4467,26 @@ "visibility": "internal" } ], - "src": "5017:51:3" + "src": "5217:51:3" }, "payable": false, "returnParameters": { - "id": 291, + "id": 293, "nodeType": "ParameterList", "parameters": [], - "src": "5103:0:3" + "src": "5303:0:3" }, - "scope": 397, - "src": "4999:541:3", + "scope": 401, + "src": "5199:623:3", "stateMutability": "view", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 395, + "id": 399, "nodeType": "Block", - "src": "6464:176:3", + "src": "6746:176:3", "statements": [ { "expression": { @@ -4413,14 +4501,14 @@ { "argumentTypes": null, "hexValue": "30783139", - "id": 377, + "id": 381, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "6526:4:3", + "src": "6808:4:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_25_by_1", @@ -4436,20 +4524,20 @@ "typeString": "int_const 25" } ], - "id": 376, + "id": 380, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "6521:4:3", + "src": "6803:4:3", "typeDescriptions": { "typeIdentifier": "t_type$_t_bytes1_$", "typeString": "type(bytes1)" }, "typeName": "byte" }, - "id": 378, + "id": 382, "isConstant": false, "isLValue": false, "isPure": true, @@ -4457,7 +4545,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "6521:10:3", + "src": "6803:10:3", "typeDescriptions": { "typeIdentifier": "t_bytes1", "typeString": "bytes1" @@ -4469,14 +4557,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 380, + "id": 384, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "6538:1:3", + "src": "6820:1:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -4492,20 +4580,20 @@ "typeString": "int_const 0" } ], - "id": 379, + "id": 383, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "6533:4:3", + "src": "6815:4:3", "typeDescriptions": { "typeIdentifier": "t_type$_t_bytes1_$", "typeString": "type(bytes1)" }, "typeName": "byte" }, - "id": 381, + "id": 385, "isConstant": false, "isLValue": false, "isPure": true, @@ -4513,7 +4601,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "6533:7:3", + "src": "6815:7:3", "typeDescriptions": { "typeIdentifier": "t_bytes1", "typeString": "bytes1" @@ -4521,25 +4609,25 @@ }, { "argumentTypes": null, - "id": 382, + "id": 386, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2631, - "src": "6542:4:3", + "referencedDeclaration": 2687, + "src": "6824:4:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafePersonalEdition_$397", + "typeIdentifier": "t_contract$_GnosisSafePersonalEdition_$401", "typeString": "contract GnosisSafePersonalEdition" } }, { "argumentTypes": null, - "id": 383, + "id": 387, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 352, - "src": "6548:2:3", + "referencedDeclaration": 356, + "src": "6830:2:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4547,64 +4635,12 @@ }, { "argumentTypes": null, - "id": 384, + "id": 388, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 354, - "src": "6552:5:3", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 385, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 356, - "src": "6559:4:3", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - { - "argumentTypes": null, - "id": 386, - "name": "operation", - "nodeType": "Identifier", - "overloadedDeclarations": [], "referencedDeclaration": 358, - "src": "6565:9:3", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$29", - "typeString": "enum Enum.Operation" - } - }, - { - "argumentTypes": null, - "id": 387, - "name": "safeTxGas", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 360, - "src": "6576:9:3", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 388, - "name": "dataGas", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 362, - "src": "6587:7:3", + "src": "6834:5:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4613,11 +4649,37 @@ { "argumentTypes": null, "id": 389, - "name": "gasPrice", + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 360, + "src": "6841:4:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 390, + "name": "operation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 362, + "src": "6847:9:3", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + } + }, + { + "argumentTypes": null, + "id": 391, + "name": "safeTxGas", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 364, - "src": "6596:8:3", + "src": "6858:9:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4625,12 +4687,38 @@ }, { "argumentTypes": null, - "id": 390, - "name": "gasToken", + "id": 392, + "name": "dataGas", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 366, - "src": "6606:8:3", + "src": "6869:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 393, + "name": "gasPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 368, + "src": "6878:8:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 394, + "name": "gasToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 370, + "src": "6888:8:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4638,12 +4726,12 @@ }, { "argumentTypes": null, - "id": 391, + "id": 395, "name": "_nonce", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 368, - "src": "6616:6:3", + "referencedDeclaration": 372, + "src": "6898:6:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4661,7 +4749,7 @@ "typeString": "bytes1" }, { - "typeIdentifier": "t_contract$_GnosisSafePersonalEdition_$397", + "typeIdentifier": "t_contract$_GnosisSafePersonalEdition_$401", "typeString": "contract GnosisSafePersonalEdition" }, { @@ -4703,18 +4791,18 @@ ], "expression": { "argumentTypes": null, - "id": 374, + "id": 378, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2585, - "src": "6504:3:3", + "referencedDeclaration": 2641, + "src": "6786:3:3", "typeDescriptions": { "typeIdentifier": "t_magic_abi", "typeString": "abi" } }, - "id": 375, + "id": 379, "isConstant": false, "isLValue": false, "isPure": true, @@ -4722,13 +4810,13 @@ "memberName": "encodePacked", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "6504:16:3", + "src": "6786:16:3", "typeDescriptions": { "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)" } }, - "id": 392, + "id": 396, "isConstant": false, "isLValue": false, "isPure": false, @@ -4736,7 +4824,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "6504:119:3", + "src": "6786:119:3", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -4750,18 +4838,18 @@ "typeString": "bytes memory" } ], - "id": 373, + "id": 377, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2592, - "src": "6481:9:3", + "referencedDeclaration": 2648, + "src": "6763:9:3", "typeDescriptions": { "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", "typeString": "function () pure returns (bytes32)" } }, - "id": 393, + "id": 397, "isConstant": false, "isLValue": false, "isPure": false, @@ -4769,21 +4857,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "6481:152:3", + "src": "6763:152:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "functionReturnParameters": 372, - "id": 394, + "functionReturnParameters": 376, + "id": 398, "nodeType": "Return", - "src": "6474:159:3" + "src": "6756:159:3" } ] }, "documentation": "@dev Returns hash to be signed by owners.\n @param to Destination address.\n @param value Ether value.\n @param data Data payload.\n @param operation Operation type.\n @param safeTxGas Fas that should be used for the safe transaction.\n @param dataGas Gas costs for data used to trigger the safe transaction.\n @param gasPrice Maximum gas price that should be used for this transaction.\n @param gasToken Token address (or 0 if ETH) that is used for the payment.\n @param _nonce Transaction nonce.\n @return Transaction hash.", - "id": 396, + "id": 400, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -4791,16 +4879,16 @@ "name": "getTransactionHash", "nodeType": "FunctionDefinition", "parameters": { - "id": 369, + "id": 373, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 352, + "id": 356, "name": "to", "nodeType": "VariableDeclaration", - "scope": 396, - "src": "6177:10:3", + "scope": 400, + "src": "6459:10:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4808,10 +4896,10 @@ "typeString": "address" }, "typeName": { - "id": 351, + "id": 355, "name": "address", "nodeType": "ElementaryTypeName", - "src": "6177:7:3", + "src": "6459:7:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4822,11 +4910,11 @@ }, { "constant": false, - "id": 354, + "id": 358, "name": "value", "nodeType": "VariableDeclaration", - "scope": 396, - "src": "6198:13:3", + "scope": 400, + "src": "6480:13:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4834,10 +4922,10 @@ "typeString": "uint256" }, "typeName": { - "id": 353, + "id": 357, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "6198:7:3", + "src": "6480:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4848,11 +4936,11 @@ }, { "constant": false, - "id": 356, + "id": 360, "name": "data", "nodeType": "VariableDeclaration", - "scope": 396, - "src": "6222:10:3", + "scope": 400, + "src": "6504:10:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4860,10 +4948,10 @@ "typeString": "bytes" }, "typeName": { - "id": 355, + "id": 359, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "6222:5:3", + "src": "6504:5:3", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -4874,11 +4962,11 @@ }, { "constant": false, - "id": 358, + "id": 362, "name": "operation", "nodeType": "VariableDeclaration", - "scope": 396, - "src": "6243:24:3", + "scope": 400, + "src": "6525:24:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4887,11 +4975,11 @@ }, "typeName": { "contractScope": null, - "id": 357, + "id": 361, "name": "Enum.Operation", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 29, - "src": "6243:14:3", + "src": "6525:14:3", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" @@ -4902,63 +4990,11 @@ }, { "constant": false, - "id": 360, + "id": 364, "name": "safeTxGas", "nodeType": "VariableDeclaration", - "scope": 396, - "src": "6278:17:3", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 359, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "6278:7:3", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 362, - "name": "dataGas", - "nodeType": "VariableDeclaration", - "scope": 396, - "src": "6306:15:3", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 361, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "6306:7:3", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 364, - "name": "gasPrice", - "nodeType": "VariableDeclaration", - "scope": 396, - "src": "6332:16:3", + "scope": 400, + "src": "6560:17:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4969,7 +5005,7 @@ "id": 363, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "6332:7:3", + "src": "6560:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4981,24 +5017,24 @@ { "constant": false, "id": 366, - "name": "gasToken", + "name": "dataGas", "nodeType": "VariableDeclaration", - "scope": 396, - "src": "6359:16:3", + "scope": 400, + "src": "6588:15:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, "typeName": { "id": 365, - "name": "address", + "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "6359:7:3", + "src": "6588:7:3", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, "value": null, @@ -5007,10 +5043,10 @@ { "constant": false, "id": 368, - "name": "_nonce", + "name": "gasPrice", "nodeType": "VariableDeclaration", - "scope": 396, - "src": "6385:14:3", + "scope": 400, + "src": "6614:16:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5021,7 +5057,59 @@ "id": 367, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "6385:7:3", + "src": "6614:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 370, + "name": "gasToken", + "nodeType": "VariableDeclaration", + "scope": 400, + "src": "6641:16:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 369, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6641:7:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 372, + "name": "_nonce", + "nodeType": "VariableDeclaration", + "scope": 400, + "src": "6667:14:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 371, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6667:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5031,20 +5119,20 @@ "visibility": "internal" } ], - "src": "6167:238:3" + "src": "6449:238:3" }, "payable": false, "returnParameters": { - "id": 372, + "id": 376, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 371, + "id": 375, "name": "", "nodeType": "VariableDeclaration", - "scope": 396, - "src": "6451:7:3", + "scope": 400, + "src": "6733:7:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5052,10 +5140,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 370, + "id": 374, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "6451:7:3", + "src": "6733:7:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -5065,29 +5153,29 @@ "visibility": "internal" } ], - "src": "6450:9:3" + "src": "6732:9:3" }, - "scope": 397, - "src": "6140:500:3", + "scope": 401, + "src": "6422:500:3", "stateMutability": "view", "superFunction": null, "visibility": "public" } ], - "scope": 398, - "src": "449:6193:3" + "scope": 402, + "src": "449:6475:3" } ], - "src": "0:6643:3" + "src": "0:6925:3" }, "legacyAST": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafePersonalEdition.sol", "exportedSymbols": { "GnosisSafePersonalEdition": [ - 397 + 401 ] }, - "id": 398, + "id": 402, "nodeType": "SourceUnit", "nodes": [ { @@ -5105,8 +5193,8 @@ "file": "./interfaces/ERC20Token.sol", "id": 66, "nodeType": "ImportDirective", - "scope": 398, - "sourceUnit": 1686, + "scope": 402, + "sourceUnit": 1721, "src": "24:37:3", "symbolAliases": [], "unitAlias": "" @@ -5116,7 +5204,7 @@ "file": "./GnosisSafe.sol", "id": 67, "nodeType": "ImportDirective", - "scope": 398, + "scope": 402, "sourceUnit": 64, "src": "62:26:3", "symbolAliases": [], @@ -5127,8 +5215,8 @@ "file": "./MasterCopy.sol", "id": 68, "nodeType": "ImportDirective", - "scope": 398, - "sourceUnit": 653, + "scope": 402, + "sourceUnit": 663, "src": "89:26:3", "symbolAliases": [], "unitAlias": "" @@ -5142,10 +5230,10 @@ "id": 69, "name": "MasterCopy", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 652, + "referencedDeclaration": 662, "src": "487:10:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_MasterCopy_$652", + "typeIdentifier": "t_contract$_MasterCopy_$662", "typeString": "contract MasterCopy" } }, @@ -5174,22 +5262,22 @@ ], "contractDependencies": [ 63, - 652, - 1100, - 1472, - 1619 + 662, + 1118, + 1504, + 1654 ], "contractKind": "contract", "documentation": "@title Gnosis Safe Personal Edition - A multisignature wallet with support for confirmations using signed messages based on ERC191.\n @author Stefan George - \n @author Richard Meissner - \n @author Ricardo Guilherme Schmidt - (Status Research & Development GmbH) - Gas Token Payment", "fullyImplemented": true, - "id": 397, + "id": 401, "linearizedBaseContracts": [ - 397, + 401, 63, - 1472, - 1100, - 652, - 1619 + 1504, + 1118, + 662, + 1654 ], "name": "GnosisSafePersonalEdition", "nodeType": "ContractDefinition", @@ -5199,7 +5287,7 @@ "id": 75, "name": "NAME", "nodeType": "VariableDeclaration", - "scope": 397, + "scope": 401, "src": "517:60:3", "stateVariable": true, "storageLocation": "default", @@ -5242,7 +5330,7 @@ "id": 78, "name": "VERSION", "nodeType": "VariableDeclaration", - "scope": 397, + "scope": 401, "src": "583:40:3", "stateVariable": true, "storageLocation": "default", @@ -5285,7 +5373,7 @@ "id": 81, "name": "BASE_TX_GAS_COSTS", "nodeType": "VariableDeclaration", - "scope": 397, + "scope": 401, "src": "634:51:3", "stateVariable": true, "storageLocation": "default", @@ -5328,7 +5416,7 @@ "id": 84, "name": "PAYMENT_GAS_COSTS", "nodeType": "VariableDeclaration", - "scope": 397, + "scope": 401, "src": "691:51:3", "stateVariable": true, "storageLocation": "default", @@ -5385,7 +5473,7 @@ "id": 88, "name": "nonce", "nodeType": "VariableDeclaration", - "scope": 397, + "scope": 401, "src": "779:20:3", "stateVariable": true, "storageLocation": "default", @@ -5408,9 +5496,9 @@ }, { "body": { - "id": 211, + "id": 213, "nodeType": "Block", - "src": "1984:1043:3", + "src": "1984:1127:3", "statements": [ { "assignments": [ @@ -5422,7 +5510,7 @@ "id": 117, "name": "startGas", "nodeType": "VariableDeclaration", - "scope": 212, + "scope": 214, "src": "1994:16:3", "stateVariable": false, "storageLocation": "default", @@ -5454,7 +5542,7 @@ "name": "gasleft", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2591, + "referencedDeclaration": 2647, "src": "2013:7:3", "typeDescriptions": { "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", @@ -5646,7 +5734,7 @@ "name": "getTransactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 396, + "referencedDeclaration": 400, "src": "2042:18:3", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$_t_uint256_$_t_uint256_$_t_uint256_$_t_address_$_t_uint256_$returns$_t_bytes32_$", @@ -5730,7 +5818,7 @@ "name": "checkHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 350, + "referencedDeclaration": 354, "src": "2032:9:3", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_array$_t_uint8_$dyn_memory_ptr_$_t_array$_t_bytes32_$dyn_memory_ptr_$_t_array$_t_bytes32_$dyn_memory_ptr_$returns$__$", @@ -5824,7 +5912,7 @@ "name": "gasleft", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2591, + "referencedDeclaration": 2647, "src": "2231:7:3", "typeDescriptions": { "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", @@ -5886,6 +5974,24 @@ "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "4e6f7420656e6f7567682067617320746f20657865637574652073616665207472616e73616374696f6e", + "id": 148, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2275:44:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_e7ccb05a0f2c66d12451cdfc6bbab488c38ab704d0f6af9ad18763542e9e5f18", + "typeString": "literal_string \"Not enough gas to execute safe transaction\"" + }, + "value": "Not enough gas to execute safe transaction" } ], "expression": { @@ -5893,23 +5999,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_e7ccb05a0f2c66d12451cdfc6bbab488c38ab704d0f6af9ad18763542e9e5f18", + "typeString": "literal_string \"Not enough gas to execute safe transaction\"" } ], "id": 141, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, + "referencedDeclaration": 2658, "src": "2223:7:3", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 148, + "id": 149, "isConstant": false, "isLValue": false, "isPure": false, @@ -5917,20 +6027,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2223:51:3", + "src": "2223:97:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 149, + "id": 150, "nodeType": "ExpressionStatement", - "src": "2223:51:3" + "src": "2223:97:3" }, { "condition": { "argumentTypes": null, - "id": 157, + "id": 158, "isConstant": false, "isLValue": false, "isPure": false, @@ -5938,18 +6048,18 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "2288:47:3", + "src": "2334:47:3", "subExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 151, + "id": 152, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 90, - "src": "2297:2:3", + "src": "2343:2:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5957,12 +6067,12 @@ }, { "argumentTypes": null, - "id": 152, + "id": 153, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 92, - "src": "2301:5:3", + "src": "2347:5:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5970,12 +6080,12 @@ }, { "argumentTypes": null, - "id": 153, + "id": 154, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 94, - "src": "2308:4:3", + "src": "2354:4:3", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -5983,12 +6093,12 @@ }, { "argumentTypes": null, - "id": 154, + "id": 155, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 96, - "src": "2314:9:3", + "src": "2360:9:3", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" @@ -5996,12 +6106,12 @@ }, { "argumentTypes": null, - "id": 155, + "id": 156, "name": "safeTxGas", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 98, - "src": "2325:9:3", + "src": "2371:9:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6031,18 +6141,18 @@ "typeString": "uint256" } ], - "id": 150, + "id": 151, "name": "execute", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 989, - "src": "2289:7:3", + "referencedDeclaration": 1007, + "src": "2335:7:3", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256) returns (bool)" } }, - "id": 156, + "id": 157, "isConstant": false, "isLValue": false, "isPure": false, @@ -6050,7 +6160,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2289:46:3", + "src": "2335:46:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6062,13 +6172,13 @@ } }, "falseBody": null, - "id": 162, + "id": 163, "nodeType": "IfStatement", - "src": "2284:100:3", + "src": "2330:100:3", "trueBody": { - "id": 161, + "id": 162, "nodeType": "Block", - "src": "2337:47:3", + "src": "2383:47:3", "statements": [ { "eventCall": { @@ -6076,18 +6186,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 158, + "id": 159, "name": "ExecutionFailed", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86, - "src": "2356:15:3", + "src": "2402:15:3", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$__$returns$__$", "typeString": "function ()" } }, - "id": 159, + "id": 160, "isConstant": false, "isLValue": false, "isPure": false, @@ -6095,15 +6205,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2356:17:3", + "src": "2402:17:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 160, + "id": 161, "nodeType": "EmitStatement", - "src": "2351:22:3" + "src": "2397:22:3" } ] } @@ -6115,19 +6225,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 165, + "id": 166, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 163, + "id": 164, "name": "gasPrice", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 102, - "src": "2537:8:3", + "src": "2583:8:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6138,14 +6248,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 164, + "id": 165, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2548:1:3", + "src": "2594:1:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -6153,33 +6263,33 @@ }, "value": "0" }, - "src": "2537:12:3", + "src": "2583:12:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 210, + "id": 212, "nodeType": "IfStatement", - "src": "2533:486:3", + "src": "2579:524:3", "trueBody": { - "id": 209, + "id": 211, "nodeType": "Block", - "src": "2551:468:3", + "src": "2597:506:3", "statements": [ { "assignments": [ - 167 + 168 ], "declarations": [ { "constant": false, - "id": 167, + "id": 168, "name": "gasCosts", "nodeType": "VariableDeclaration", - "scope": 212, - "src": "2565:16:3", + "scope": 214, + "src": "2611:16:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6187,10 +6297,10 @@ "typeString": "uint256" }, "typeName": { - "id": 166, + "id": 167, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2565:7:3", + "src": "2611:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6200,7 +6310,7 @@ "visibility": "internal" } ], - "id": 175, + "id": 176, "initialValue": { "argumentTypes": null, "arguments": [ @@ -6210,19 +6320,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 172, + "id": 173, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 169, + "id": 170, "name": "startGas", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 117, - "src": "2598:8:3", + "src": "2644:8:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6235,18 +6345,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 170, + "id": 171, "name": "gasleft", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2591, - "src": "2609:7:3", + "referencedDeclaration": 2647, + "src": "2655:7:3", "typeDescriptions": { "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, - "id": 171, + "id": 172, "isConstant": false, "isLValue": false, "isPure": false, @@ -6254,13 +6364,13 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2609:9:3", + "src": "2655:9:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "2598:20:3", + "src": "2644:20:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6268,12 +6378,12 @@ }, { "argumentTypes": null, - "id": 173, + "id": 174, "name": "dataGas", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 100, - "src": "2620:7:3", + "src": "2666:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6291,18 +6401,18 @@ "typeString": "uint256" } ], - "id": 168, + "id": 169, "name": "totalGasCosts", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 230, - "src": "2584:13:3", + "referencedDeclaration": 232, + "src": "2630:13:3", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, - "id": 174, + "id": 175, "isConstant": false, "isLValue": false, "isPure": false, @@ -6310,27 +6420,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2584:44:3", + "src": "2630:44:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "2565:63:3" + "src": "2611:63:3" }, { "assignments": [ - 177 + 178 ], "declarations": [ { "constant": false, - "id": 177, + "id": 178, "name": "amount", "nodeType": "VariableDeclaration", - "scope": 212, - "src": "2642:14:3", + "scope": 214, + "src": "2688:14:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6338,10 +6448,10 @@ "typeString": "uint256" }, "typeName": { - "id": 176, + "id": 177, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2642:7:3", + "src": "2688:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6351,26 +6461,26 @@ "visibility": "internal" } ], - "id": 181, + "id": 182, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 180, + "id": 181, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 178, + "id": 179, "name": "gasCosts", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 167, - "src": "2659:8:3", + "referencedDeclaration": 168, + "src": "2705:8:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6380,25 +6490,25 @@ "operator": "*", "rightExpression": { "argumentTypes": null, - "id": 179, + "id": 180, "name": "gasPrice", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 102, - "src": "2670:8:3", + "src": "2716:8:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "2659:19:3", + "src": "2705:19:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "2642:36:3" + "src": "2688:36:3" }, { "condition": { @@ -6407,19 +6517,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 186, + "id": 187, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 182, + "id": 183, "name": "gasToken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 104, - "src": "2696:8:3", + "src": "2742:8:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6433,14 +6543,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 184, + "id": 185, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2716:1:3", + "src": "2762:1:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -6456,20 +6566,20 @@ "typeString": "int_const 0" } ], - "id": 183, + "id": 184, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2708:7:3", + "src": "2754:7:3", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 185, + "id": 186, "isConstant": false, "isLValue": false, "isPure": true, @@ -6477,22 +6587,22 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2708:10:3", + "src": "2754:10:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2696:22:3", + "src": "2742:22:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": { - "id": 207, + "id": 209, "nodeType": "Block", - "src": "2852:157:3", + "src": "2898:195:3", "statements": [ { "expression": { @@ -6505,18 +6615,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 201, + "id": 202, "name": "tx", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2610, - "src": "2975:2:3", + "referencedDeclaration": 2666, + "src": "3021:2:3", "typeDescriptions": { "typeIdentifier": "t_magic_transaction", "typeString": "tx" } }, - "id": 202, + "id": 203, "isConstant": false, "isLValue": false, "isPure": false, @@ -6524,7 +6634,7 @@ "memberName": "origin", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2975:9:3", + "src": "3021:9:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6532,12 +6642,12 @@ }, { "argumentTypes": null, - "id": 203, + "id": 204, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 177, - "src": "2986:6:3", + "referencedDeclaration": 178, + "src": "3032:6:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6560,12 +6670,12 @@ "arguments": [ { "argumentTypes": null, - "id": 198, + "id": 199, "name": "gasToken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 104, - "src": "2956:8:3", + "src": "3002:8:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6579,18 +6689,18 @@ "typeString": "address" } ], - "id": 197, + "id": 198, "name": "ERC20Token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1685, - "src": "2945:10:3", + "referencedDeclaration": 1720, + "src": "2991:10:3", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_ERC20Token_$1685_$", + "typeIdentifier": "t_type$_t_contract$_ERC20Token_$1720_$", "typeString": "type(contract ERC20Token)" } }, - "id": 199, + "id": 200, "isConstant": false, "isLValue": false, "isPure": false, @@ -6598,27 +6708,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2945:20:3", + "src": "2991:20:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20Token_$1685", + "typeIdentifier": "t_contract$_ERC20Token_$1720", "typeString": "contract ERC20Token" } }, - "id": 200, + "id": 201, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "transfer", "nodeType": "MemberAccess", - "referencedDeclaration": 1639, - "src": "2945:29:3", + "referencedDeclaration": 1674, + "src": "2991:29:3", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)" } }, - "id": 204, + "id": 205, "isConstant": false, "isLValue": false, "isPure": false, @@ -6626,11 +6736,29 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2945:48:3", + "src": "2991:48:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "436f756c64206e6f74207061792067617320636f737473207769746820746f6b656e", + "id": 206, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3041:36:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_8560a13547eca5648355c8db1a9f8653b6f657d31d476c36bca25e47b45b08f4", + "typeString": "literal_string \"Could not pay gas costs with token\"" + }, + "value": "Could not pay gas costs with token" } ], "expression": { @@ -6638,23 +6766,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_8560a13547eca5648355c8db1a9f8653b6f657d31d476c36bca25e47b45b08f4", + "typeString": "literal_string \"Could not pay gas costs with token\"" } ], - "id": 196, + "id": 197, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "2937:7:3", + "referencedDeclaration": 2658, + "src": "2983:7:3", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 205, + "id": 207, "isConstant": false, "isLValue": false, "isPure": false, @@ -6662,25 +6794,25 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2937:57:3", + "src": "2983:95:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 206, + "id": 208, "nodeType": "ExpressionStatement", - "src": "2937:57:3" + "src": "2983:95:3" } ] }, - "id": 208, + "id": 210, "nodeType": "IfStatement", - "src": "2692:317:3", + "src": "2738:355:3", "trueBody": { - "id": 195, + "id": 196, "nodeType": "Block", - "src": "2720:126:3", + "src": "2766:126:3", "statements": [ { "expression": { @@ -6688,12 +6820,12 @@ "arguments": [ { "argumentTypes": null, - "id": 192, + "id": 193, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 177, - "src": "2824:6:3", + "referencedDeclaration": 178, + "src": "2870:6:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6711,18 +6843,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 187, + "id": 188, "name": "tx", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2610, - "src": "2805:2:3", + "referencedDeclaration": 2666, + "src": "2851:2:3", "typeDescriptions": { "typeIdentifier": "t_magic_transaction", "typeString": "tx" } }, - "id": 190, + "id": 191, "isConstant": false, "isLValue": false, "isPure": false, @@ -6730,13 +6862,13 @@ "memberName": "origin", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2805:9:3", + "src": "2851:9:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 191, + "id": 192, "isConstant": false, "isLValue": false, "isPure": false, @@ -6744,13 +6876,13 @@ "memberName": "transfer", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2805:18:3", + "src": "2851:18:3", "typeDescriptions": { "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256)" } }, - "id": 193, + "id": 194, "isConstant": false, "isLValue": false, "isPure": false, @@ -6758,15 +6890,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2805:26:3", + "src": "2851:26:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 194, + "id": 195, "nodeType": "ExpressionStatement", - "src": "2805:26:3" + "src": "2851:26:3" } ] } @@ -6777,7 +6909,7 @@ ] }, "documentation": "@dev Allows to execute a Safe transaction confirmed by required number of owners.\n @param to Destination address of Safe transaction.\n @param value Ether value of Safe transaction.\n @param data Data payload of Safe transaction.\n @param operation Operation type of Safe transaction.\n @param safeTxGas Gas that should be used for the Safe transaction.\n @param dataGas Gas costs for data used to trigger the safe transaction.\n @param gasPrice Gas price that should be used for the payment calculation.\n @param gasToken Token address (or 0 if ETH) that is used for the payment.\n @param v Array of signature V values sorted by owner addresses.\n @param r Array of signature R values sorted by owner addresses.\n @param s Array of signature S values sorted by owner addresses.", - "id": 212, + "id": 214, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -6793,7 +6925,7 @@ "id": 90, "name": "to", "nodeType": "VariableDeclaration", - "scope": 212, + "scope": 214, "src": "1700:10:3", "stateVariable": false, "storageLocation": "default", @@ -6819,7 +6951,7 @@ "id": 92, "name": "value", "nodeType": "VariableDeclaration", - "scope": 212, + "scope": 214, "src": "1721:13:3", "stateVariable": false, "storageLocation": "default", @@ -6845,7 +6977,7 @@ "id": 94, "name": "data", "nodeType": "VariableDeclaration", - "scope": 212, + "scope": 214, "src": "1745:10:3", "stateVariable": false, "storageLocation": "default", @@ -6871,7 +7003,7 @@ "id": 96, "name": "operation", "nodeType": "VariableDeclaration", - "scope": 212, + "scope": 214, "src": "1766:24:3", "stateVariable": false, "storageLocation": "default", @@ -6899,7 +7031,7 @@ "id": 98, "name": "safeTxGas", "nodeType": "VariableDeclaration", - "scope": 212, + "scope": 214, "src": "1801:17:3", "stateVariable": false, "storageLocation": "default", @@ -6925,7 +7057,7 @@ "id": 100, "name": "dataGas", "nodeType": "VariableDeclaration", - "scope": 212, + "scope": 214, "src": "1828:15:3", "stateVariable": false, "storageLocation": "default", @@ -6951,7 +7083,7 @@ "id": 102, "name": "gasPrice", "nodeType": "VariableDeclaration", - "scope": 212, + "scope": 214, "src": "1853:16:3", "stateVariable": false, "storageLocation": "default", @@ -6977,7 +7109,7 @@ "id": 104, "name": "gasToken", "nodeType": "VariableDeclaration", - "scope": 212, + "scope": 214, "src": "1879:16:3", "stateVariable": false, "storageLocation": "default", @@ -7003,7 +7135,7 @@ "id": 107, "name": "v", "nodeType": "VariableDeclaration", - "scope": 212, + "scope": 214, "src": "1905:9:3", "stateVariable": false, "storageLocation": "default", @@ -7039,7 +7171,7 @@ "id": 110, "name": "r", "nodeType": "VariableDeclaration", - "scope": 212, + "scope": 214, "src": "1925:11:3", "stateVariable": false, "storageLocation": "default", @@ -7075,7 +7207,7 @@ "id": 113, "name": "s", "nodeType": "VariableDeclaration", - "scope": 212, + "scope": 214, "src": "1947:11:3", "stateVariable": false, "storageLocation": "default", @@ -7116,17 +7248,17 @@ "parameters": [], "src": "1984:0:3" }, - "scope": 397, - "src": "1660:1367:3", + "scope": 401, + "src": "1660:1451:3", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 229, + "id": 231, "nodeType": "Block", - "src": "3582:86:3", + "src": "3666:86:3", "statements": [ { "expression": { @@ -7135,7 +7267,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 227, + "id": 229, "isConstant": false, "isLValue": false, "isPure": false, @@ -7146,7 +7278,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 225, + "id": 227, "isConstant": false, "isLValue": false, "isPure": false, @@ -7157,19 +7289,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 223, + "id": 225, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 221, + "id": 223, "name": "executionGas", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 214, - "src": "3599:12:3", + "referencedDeclaration": 216, + "src": "3683:12:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7179,18 +7311,18 @@ "operator": "+", "rightExpression": { "argumentTypes": null, - "id": 222, + "id": 224, "name": "dataGas", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 216, - "src": "3614:7:3", + "referencedDeclaration": 218, + "src": "3698:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3599:22:3", + "src": "3683:22:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7200,18 +7332,18 @@ "operator": "+", "rightExpression": { "argumentTypes": null, - "id": 224, + "id": 226, "name": "PAYMENT_GAS_COSTS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 84, - "src": "3624:17:3", + "src": "3708:17:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3599:42:3", + "src": "3683:42:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7221,32 +7353,32 @@ "operator": "+", "rightExpression": { "argumentTypes": null, - "id": 226, + "id": 228, "name": "BASE_TX_GAS_COSTS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 81, - "src": "3644:17:3", + "src": "3728:17:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3599:62:3", + "src": "3683:62:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 220, - "id": 228, + "functionReturnParameters": 222, + "id": 230, "nodeType": "Return", - "src": "3592:69:3" + "src": "3676:69:3" } ] }, "documentation": "@dev Calculates the total gas costs for a safe transaction with the gas costs for the execution of the transaction.\n @param executionGas Gas costs for the execution of the safe transaction.\n @param dataGas Gas costs for data used to trigger the safe transaction.\n @return Total gas costs for the execution (this includes gas costs for the payment to tx.origin, base transaction and payload data).", - "id": 230, + "id": 232, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -7254,42 +7386,16 @@ "name": "totalGasCosts", "nodeType": "FunctionDefinition", "parameters": { - "id": 217, + "id": 219, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 214, + "id": 216, "name": "executionGas", "nodeType": "VariableDeclaration", - "scope": 230, - "src": "3482:20:3", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 213, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3482:7:3", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 216, - "name": "dataGas", - "nodeType": "VariableDeclaration", - "scope": 230, - "src": "3504:15:3", + "scope": 232, + "src": "3566:20:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7300,7 +7406,7 @@ "id": 215, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3504:7:3", + "src": "3566:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7308,22 +7414,14 @@ }, "value": null, "visibility": "internal" - } - ], - "src": "3481:39:3" - }, - "payable": false, - "returnParameters": { - "id": 220, - "nodeType": "ParameterList", - "parameters": [ + }, { "constant": false, - "id": 219, - "name": "", + "id": 218, + "name": "dataGas", "nodeType": "VariableDeclaration", - "scope": 230, - "src": "3568:7:3", + "scope": 232, + "src": "3588:15:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7331,10 +7429,10 @@ "typeString": "uint256" }, "typeName": { - "id": 218, + "id": 217, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3568:7:3", + "src": "3588:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7344,32 +7442,66 @@ "visibility": "internal" } ], - "src": "3567:9:3" + "src": "3565:39:3" }, - "scope": 397, - "src": "3459:209:3", + "payable": false, + "returnParameters": { + "id": 222, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 221, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 232, + "src": "3652:7:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 220, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3652:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3651:9:3" + }, + "scope": 401, + "src": "3543:209:3", "stateMutability": "pure", "superFunction": null, "visibility": "public" }, { "body": { - "id": 277, + "id": 279, "nodeType": "Block", - "src": "4738:255:3", + "src": "4822:371:3", "statements": [ { "assignments": [ - 246 + 248 ], "declarations": [ { "constant": false, - "id": 246, + "id": 248, "name": "startGas", "nodeType": "VariableDeclaration", - "scope": 278, - "src": "4748:16:3", + "scope": 280, + "src": "4832:16:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7377,10 +7509,10 @@ "typeString": "uint256" }, "typeName": { - "id": 245, + "id": 247, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4748:7:3", + "src": "4832:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7390,24 +7522,24 @@ "visibility": "internal" } ], - "id": 249, + "id": 251, "initialValue": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], - "id": 247, + "id": 249, "name": "gasleft", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2591, - "src": "4767:7:3", + "referencedDeclaration": 2647, + "src": "4851:7:3", "typeDescriptions": { "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, - "id": 248, + "id": 250, "isConstant": false, "isLValue": false, "isPure": false, @@ -7415,14 +7547,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4767:9:3", + "src": "4851:9:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "4748:28:3" + "src": "4832:28:3" }, { "expression": { @@ -7433,12 +7565,12 @@ "arguments": [ { "argumentTypes": null, - "id": 252, + "id": 254, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 232, - "src": "4802:2:3", + "referencedDeclaration": 234, + "src": "4973:2:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7446,12 +7578,12 @@ }, { "argumentTypes": null, - "id": 253, + "id": 255, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 234, - "src": "4806:5:3", + "referencedDeclaration": 236, + "src": "4977:5:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7459,12 +7591,12 @@ }, { "argumentTypes": null, - "id": 254, + "id": 256, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 236, - "src": "4813:4:3", + "referencedDeclaration": 238, + "src": "4984:4:3", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -7472,12 +7604,12 @@ }, { "argumentTypes": null, - "id": 255, + "id": 257, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 238, - "src": "4819:9:3", + "referencedDeclaration": 240, + "src": "4990:9:3", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" @@ -7488,18 +7620,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 256, + "id": 258, "name": "gasleft", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2591, - "src": "4830:7:3", + "referencedDeclaration": 2647, + "src": "5001:7:3", "typeDescriptions": { "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, - "id": 257, + "id": 259, "isConstant": false, "isLValue": false, "isPure": false, @@ -7507,7 +7639,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4830:9:3", + "src": "5001:9:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7537,18 +7669,18 @@ "typeString": "uint256" } ], - "id": 251, + "id": 253, "name": "execute", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 989, - "src": "4794:7:3", + "referencedDeclaration": 1007, + "src": "4965:7:3", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256) returns (bool)" } }, - "id": 258, + "id": 260, "isConstant": false, "isLValue": false, "isPure": false, @@ -7556,7 +7688,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4794:46:3", + "src": "4965:46:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -7570,21 +7702,21 @@ "typeString": "bool" } ], - "id": 250, + "id": 252, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "4786:7:3", + "referencedDeclaration": 2657, + "src": "4957:7:3", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 259, + "id": 261, "isConstant": false, "isLValue": false, "isPure": false, @@ -7592,28 +7724,28 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4786:55:3", + "src": "4957:55:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 260, + "id": 262, "nodeType": "ExpressionStatement", - "src": "4786:55:3" + "src": "4957:55:3" }, { "assignments": [ - 262 + 264 ], "declarations": [ { "constant": false, - "id": 262, + "id": 264, "name": "requiredGas", "nodeType": "VariableDeclaration", - "scope": 278, - "src": "4851:19:3", + "scope": 280, + "src": "5022:19:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7621,10 +7753,10 @@ "typeString": "uint256" }, "typeName": { - "id": 261, + "id": 263, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4851:7:3", + "src": "5022:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7634,26 +7766,26 @@ "visibility": "internal" } ], - "id": 267, + "id": 269, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 266, + "id": 268, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 263, + "id": 265, "name": "startGas", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 246, - "src": "4873:8:3", + "referencedDeclaration": 248, + "src": "5044:8:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7666,18 +7798,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 264, + "id": 266, "name": "gasleft", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2591, - "src": "4884:7:3", + "referencedDeclaration": 2647, + "src": "5055:7:3", "typeDescriptions": { "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, - "id": 265, + "id": 267, "isConstant": false, "isLValue": false, "isPure": false, @@ -7685,20 +7817,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4884:9:3", + "src": "5055:9:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4873:20:3", + "src": "5044:20:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "4851:42:3" + "src": "5022:42:3" }, { "expression": { @@ -7712,12 +7844,12 @@ "arguments": [ { "argumentTypes": null, - "id": 272, + "id": 274, "name": "requiredGas", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 262, - "src": "4972:11:3", + "referencedDeclaration": 264, + "src": "5172:11:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7733,18 +7865,18 @@ ], "expression": { "argumentTypes": null, - "id": 270, + "id": 272, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2585, - "src": "4955:3:3", + "referencedDeclaration": 2641, + "src": "5155:3:3", "typeDescriptions": { "typeIdentifier": "t_magic_abi", "typeString": "abi" } }, - "id": 271, + "id": 273, "isConstant": false, "isLValue": false, "isPure": true, @@ -7752,13 +7884,13 @@ "memberName": "encodePacked", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "4955:16:3", + "src": "5155:16:3", "typeDescriptions": { "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)" } }, - "id": 273, + "id": 275, "isConstant": false, "isLValue": false, "isPure": false, @@ -7766,7 +7898,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4955:29:3", + "src": "5155:29:3", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -7780,20 +7912,20 @@ "typeString": "bytes memory" } ], - "id": 269, + "id": 271, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "4948:6:3", + "src": "5148:6:3", "typeDescriptions": { "typeIdentifier": "t_type$_t_string_storage_ptr_$", "typeString": "type(string storage pointer)" }, "typeName": "string" }, - "id": 274, + "id": 276, "isConstant": false, "isLValue": false, "isPure": false, @@ -7801,7 +7933,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4948:37:3", + "src": "5148:37:3", "typeDescriptions": { "typeIdentifier": "t_string_memory", "typeString": "string memory" @@ -7815,21 +7947,21 @@ "typeString": "string memory" } ], - "id": 268, + "id": 270, "name": "revert", "nodeType": "Identifier", "overloadedDeclarations": [ - 2603, - 2604 + 2659, + 2660 ], - "referencedDeclaration": 2604, - "src": "4941:6:3", + "referencedDeclaration": 2660, + "src": "5141:6:3", "typeDescriptions": { "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", "typeString": "function (string memory) pure" } }, - "id": 275, + "id": 277, "isConstant": false, "isLValue": false, "isPure": false, @@ -7837,57 +7969,57 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4941:45:3", + "src": "5141:45:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 276, + "id": 278, "nodeType": "ExpressionStatement", - "src": "4941:45:3" + "src": "5141:45:3" } ] }, "documentation": "@dev Allows to estimate a Safe transaction. \n This method is only meant for estimation purpose, therfore two different protection mechanism against execution in a transaction have been made:\n 1.) The method can only be called from the safe itself\n 2.) The response is returned with a revert\n When estimating set `from` to the address of the safe.\n Since the `estimateGas` function includes refunds, call this method to get an estimated of the costs that are deducted from the safe with `execAndPayTransaction`\n @param to Destination address of Safe transaction.\n @param value Ether value of Safe transaction.\n @param data Data payload of Safe transaction.\n @param operation Operation type of Safe transaction.\n @return Estimate without refunds and overhead fees (base transaction and payload data gas costs).", - "id": 278, + "id": 280, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 241, + "id": 243, "modifierName": { "argumentTypes": null, - "id": 240, + "id": 242, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1618, - "src": "4697:10:3", + "referencedDeclaration": 1653, + "src": "4781:10:3", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "4697:10:3" + "src": "4781:10:3" } ], "name": "requiredTxGas", "nodeType": "FunctionDefinition", "parameters": { - "id": 239, + "id": 241, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 232, + "id": 234, "name": "to", "nodeType": "VariableDeclaration", - "scope": 278, - "src": "4609:10:3", + "scope": 280, + "src": "4693:10:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7895,10 +8027,10 @@ "typeString": "address" }, "typeName": { - "id": 231, + "id": 233, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4609:7:3", + "src": "4693:7:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7909,11 +8041,11 @@ }, { "constant": false, - "id": 234, + "id": 236, "name": "value", "nodeType": "VariableDeclaration", - "scope": 278, - "src": "4621:13:3", + "scope": 280, + "src": "4705:13:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7921,10 +8053,10 @@ "typeString": "uint256" }, "typeName": { - "id": 233, + "id": 235, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4621:7:3", + "src": "4705:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7935,11 +8067,11 @@ }, { "constant": false, - "id": 236, + "id": 238, "name": "data", "nodeType": "VariableDeclaration", - "scope": 278, - "src": "4636:10:3", + "scope": 280, + "src": "4720:10:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7947,10 +8079,10 @@ "typeString": "bytes" }, "typeName": { - "id": 235, + "id": 237, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "4636:5:3", + "src": "4720:5:3", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -7961,11 +8093,11 @@ }, { "constant": false, - "id": 238, + "id": 240, "name": "operation", "nodeType": "VariableDeclaration", - "scope": 278, - "src": "4648:24:3", + "scope": 280, + "src": "4732:24:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7974,11 +8106,11 @@ }, "typeName": { "contractScope": null, - "id": 237, + "id": 239, "name": "Enum.Operation", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 29, - "src": "4648:14:3", + "src": "4732:14:3", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" @@ -7988,20 +8120,20 @@ "visibility": "internal" } ], - "src": "4608:65:3" + "src": "4692:65:3" }, "payable": false, "returnParameters": { - "id": 244, + "id": 246, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 243, + "id": 245, "name": "", "nodeType": "VariableDeclaration", - "scope": 278, - "src": "4725:7:3", + "scope": 280, + "src": "4809:7:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8009,10 +8141,10 @@ "typeString": "uint256" }, "typeName": { - "id": 242, + "id": 244, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4725:7:3", + "src": "4809:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8022,32 +8154,32 @@ "visibility": "internal" } ], - "src": "4724:9:3" + "src": "4808:9:3" }, - "scope": 397, - "src": "4586:407:3", + "scope": 401, + "src": "4670:523:3", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 349, + "id": 353, "nodeType": "Block", - "src": "5103:437:3", + "src": "5303:519:3", "statements": [ { "assignments": [ - 293 + 295 ], "declarations": [ { "constant": false, - "id": 293, + "id": 295, "name": "lastOwner", "nodeType": "VariableDeclaration", - "scope": 350, - "src": "5165:17:3", + "scope": 354, + "src": "5365:17:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8055,10 +8187,10 @@ "typeString": "address" }, "typeName": { - "id": 292, + "id": 294, "name": "address", "nodeType": "ElementaryTypeName", - "src": "5165:7:3", + "src": "5365:7:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8068,21 +8200,21 @@ "visibility": "internal" } ], - "id": 297, + "id": 299, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", - "id": 295, + "id": 297, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "5193:1:3", + "src": "5393:1:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -8098,20 +8230,20 @@ "typeString": "int_const 0" } ], - "id": 294, + "id": 296, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "5185:7:3", + "src": "5385:7:3", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 296, + "id": 298, "isConstant": false, "isLValue": false, "isPure": true, @@ -8119,25 +8251,25 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5185:10:3", + "src": "5385:10:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", - "src": "5165:30:3" + "src": "5365:30:3" }, { "assignments": [], "declarations": [ { "constant": false, - "id": 299, + "id": 301, "name": "currentOwner", "nodeType": "VariableDeclaration", - "scope": 350, - "src": "5205:20:3", + "scope": 354, + "src": "5405:20:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8145,10 +8277,10 @@ "typeString": "address" }, "typeName": { - "id": 298, + "id": 300, "name": "address", "nodeType": "ElementaryTypeName", - "src": "5205:7:3", + "src": "5405:7:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8158,21 +8290,21 @@ "visibility": "internal" } ], - "id": 300, + "id": 302, "initialValue": null, "nodeType": "VariableDeclarationStatement", - "src": "5205:20:3" + "src": "5405:20:3" }, { "assignments": [], "declarations": [ { "constant": false, - "id": 302, + "id": 304, "name": "i", "nodeType": "VariableDeclaration", - "scope": 350, - "src": "5235:9:3", + "scope": 354, + "src": "5435:9:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8180,10 +8312,10 @@ "typeString": "uint256" }, "typeName": { - "id": 301, + "id": 303, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "5235:7:3", + "src": "5435:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8193,33 +8325,33 @@ "visibility": "internal" } ], - "id": 303, + "id": 305, "initialValue": null, "nodeType": "VariableDeclarationStatement", - "src": "5235:9:3" + "src": "5435:9:3" }, { "body": { - "id": 347, + "id": 351, "nodeType": "Block", - "src": "5328:206:3", + "src": "5528:288:3", "statements": [ { "expression": { "argumentTypes": null, - "id": 327, + "id": 329, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 314, + "id": 316, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 299, - "src": "5342:12:3", + "referencedDeclaration": 301, + "src": "5542:12:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8232,12 +8364,12 @@ "arguments": [ { "argumentTypes": null, - "id": 316, + "id": 318, "name": "hash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 280, - "src": "5367:4:3", + "referencedDeclaration": 282, + "src": "5567:4:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -8247,26 +8379,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 317, + "id": 319, "name": "v", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 283, - "src": "5373:1:3", + "referencedDeclaration": 285, + "src": "5573:1:3", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr", "typeString": "uint8[] memory" } }, - "id": 319, + "id": 321, "indexExpression": { "argumentTypes": null, - "id": 318, + "id": 320, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 302, - "src": "5375:1:3", + "referencedDeclaration": 304, + "src": "5575:1:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8277,7 +8409,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "5373:4:3", + "src": "5573:4:3", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -8287,26 +8419,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 320, + "id": 322, "name": "r", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 286, - "src": "5379:1:3", + "referencedDeclaration": 288, + "src": "5579:1:3", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", "typeString": "bytes32[] memory" } }, - "id": 322, + "id": 324, "indexExpression": { "argumentTypes": null, - "id": 321, + "id": 323, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 302, - "src": "5381:1:3", + "referencedDeclaration": 304, + "src": "5581:1:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8317,7 +8449,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "5379:4:3", + "src": "5579:4:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -8327,26 +8459,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 323, + "id": 325, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 289, - "src": "5385:1:3", + "referencedDeclaration": 291, + "src": "5585:1:3", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", "typeString": "bytes32[] memory" } }, - "id": 325, + "id": 327, "indexExpression": { "argumentTypes": null, - "id": 324, + "id": 326, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 302, - "src": "5387:1:3", + "referencedDeclaration": 304, + "src": "5587:1:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8357,7 +8489,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "5385:4:3", + "src": "5585:4:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -8383,18 +8515,18 @@ "typeString": "bytes32" } ], - "id": 315, + "id": 317, "name": "ecrecover", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2590, - "src": "5357:9:3", + "referencedDeclaration": 2646, + "src": "5557:9:3", "typeDescriptions": { "typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$", "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)" } }, - "id": 326, + "id": 328, "isConstant": false, "isLValue": false, "isPure": false, @@ -8402,21 +8534,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5357:33:3", + "src": "5557:33:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "5342:48:3", + "src": "5542:48:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 328, + "id": 330, "nodeType": "ExpressionStatement", - "src": "5342:48:3" + "src": "5542:48:3" }, { "expression": { @@ -8428,7 +8560,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 334, + "id": 336, "isConstant": false, "isLValue": false, "isPure": false, @@ -8437,26 +8569,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 330, + "id": 332, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1114, - "src": "5412:6:3", + "referencedDeclaration": 1132, + "src": "5612:6:3", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 332, + "id": 334, "indexExpression": { "argumentTypes": null, - "id": 331, + "id": 333, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 299, - "src": "5419:12:3", + "referencedDeclaration": 301, + "src": "5619:12:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8467,7 +8599,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "5412:20:3", + "src": "5612:20:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8478,14 +8610,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 333, + "id": 335, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "5436:1:3", + "src": "5636:1:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -8493,11 +8625,29 @@ }, "value": "0" }, - "src": "5412:25:3", + "src": "5612:25:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "5369676e6174757265206e6f742070726f7669646564206279206f776e6572", + "id": 337, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5639:33:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_09247dae670daab7cf1923d3334eea07c14df3c0a8f5233960935c63f47104a9", + "typeString": "literal_string \"Signature not provided by owner\"" + }, + "value": "Signature not provided by owner" } ], "expression": { @@ -8505,23 +8655,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_09247dae670daab7cf1923d3334eea07c14df3c0a8f5233960935c63f47104a9", + "typeString": "literal_string \"Signature not provided by owner\"" } ], - "id": 329, + "id": 331, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "5404:7:3", + "referencedDeclaration": 2658, + "src": "5604:7:3", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 335, + "id": 338, "isConstant": false, "isLValue": false, "isPure": false, @@ -8529,15 +8683,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5404:34:3", + "src": "5604:69:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 336, + "id": 339, "nodeType": "ExpressionStatement", - "src": "5404:34:3" + "src": "5604:69:3" }, { "expression": { @@ -8549,19 +8703,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 340, + "id": 343, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 338, + "id": 341, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 299, - "src": "5460:12:3", + "referencedDeclaration": 301, + "src": "5695:12:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8571,22 +8725,40 @@ "operator": ">", "rightExpression": { "argumentTypes": null, - "id": 339, + "id": 342, "name": "lastOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 293, - "src": "5475:9:3", + "referencedDeclaration": 295, + "src": "5710:9:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "5460:24:3", + "src": "5695:24:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "5369676e61747572657320617265206e6f74206f726465726564206279206f776e65722061646472657373", + "id": 344, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5721:45:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_597a123a1bc14bc9690387ae0fec99721cc18eefa85fa2531a7593a762444235", + "typeString": "literal_string \"Signatures are not ordered by owner address\"" + }, + "value": "Signatures are not ordered by owner address" } ], "expression": { @@ -8594,23 +8766,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_597a123a1bc14bc9690387ae0fec99721cc18eefa85fa2531a7593a762444235", + "typeString": "literal_string \"Signatures are not ordered by owner address\"" } ], - "id": 337, + "id": 340, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "5452:7:3", + "referencedDeclaration": 2658, + "src": "5687:7:3", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 341, + "id": 345, "isConstant": false, "isLValue": false, "isPure": false, @@ -8618,32 +8794,32 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5452:33:3", + "src": "5687:80:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 342, + "id": 346, "nodeType": "ExpressionStatement", - "src": "5452:33:3" + "src": "5687:80:3" }, { "expression": { "argumentTypes": null, - "id": 345, + "id": 349, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 343, + "id": 347, "name": "lastOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 293, - "src": "5499:9:3", + "referencedDeclaration": 295, + "src": "5781:9:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8653,26 +8829,26 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 344, + "id": 348, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 299, - "src": "5511:12:3", + "referencedDeclaration": 301, + "src": "5793:12:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "5499:24:3", + "src": "5781:24:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 346, + "id": 350, "nodeType": "ExpressionStatement", - "src": "5499:24:3" + "src": "5781:24:3" } ] }, @@ -8682,19 +8858,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 310, + "id": 312, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 308, + "id": 310, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 302, - "src": "5308:1:3", + "referencedDeclaration": 304, + "src": "5508:1:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8704,40 +8880,40 @@ "operator": "<", "rightExpression": { "argumentTypes": null, - "id": 309, + "id": 311, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1118, - "src": "5312:9:3", + "referencedDeclaration": 1136, + "src": "5512:9:3", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "src": "5308:13:3", + "src": "5508:13:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 348, + "id": 352, "initializationExpression": { "expression": { "argumentTypes": null, - "id": 306, + "id": 308, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 304, + "id": 306, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 302, - "src": "5301:1:3", + "referencedDeclaration": 304, + "src": "5501:1:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8748,14 +8924,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "30", - "id": 305, + "id": 307, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "5305:1:3", + "src": "5505:1:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -8763,20 +8939,20 @@ }, "value": "0" }, - "src": "5301:5:3", + "src": "5501:5:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 307, + "id": 309, "nodeType": "ExpressionStatement", - "src": "5301:5:3" + "src": "5501:5:3" }, "loopExpression": { "expression": { "argumentTypes": null, - "id": 312, + "id": 314, "isConstant": false, "isLValue": false, "isPure": false, @@ -8784,15 +8960,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "5323:3:3", + "src": "5523:3:3", "subExpression": { "argumentTypes": null, - "id": 311, + "id": 313, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 302, - "src": "5323:1:3", + "referencedDeclaration": 304, + "src": "5523:1:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8803,17 +8979,17 @@ "typeString": "uint256" } }, - "id": 313, + "id": 315, "nodeType": "ExpressionStatement", - "src": "5323:3:3" + "src": "5523:3:3" }, "nodeType": "ForStatement", - "src": "5296:238:3" + "src": "5496:320:3" } ] }, "documentation": null, - "id": 350, + "id": 354, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -8821,16 +8997,16 @@ "name": "checkHash", "nodeType": "FunctionDefinition", "parameters": { - "id": 290, + "id": 292, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 280, + "id": 282, "name": "hash", "nodeType": "VariableDeclaration", - "scope": 350, - "src": "5018:12:3", + "scope": 354, + "src": "5218:12:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8838,10 +9014,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 279, + "id": 281, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "5018:7:3", + "src": "5218:7:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -8852,11 +9028,11 @@ }, { "constant": false, - "id": 283, + "id": 285, "name": "v", "nodeType": "VariableDeclaration", - "scope": 350, - "src": "5032:9:3", + "scope": 354, + "src": "5232:9:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8865,19 +9041,19 @@ }, "typeName": { "baseType": { - "id": 281, + "id": 283, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "5032:5:3", + "src": "5232:5:3", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "id": 282, + "id": 284, "length": null, "nodeType": "ArrayTypeName", - "src": "5032:7:3", + "src": "5232:7:3", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint8_$dyn_storage_ptr", "typeString": "uint8[]" @@ -8888,11 +9064,11 @@ }, { "constant": false, - "id": 286, + "id": 288, "name": "r", "nodeType": "VariableDeclaration", - "scope": 350, - "src": "5043:11:3", + "scope": 354, + "src": "5243:11:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8901,19 +9077,19 @@ }, "typeName": { "baseType": { - "id": 284, + "id": 286, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "5043:7:3", + "src": "5243:7:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "id": 285, + "id": 287, "length": null, "nodeType": "ArrayTypeName", - "src": "5043:9:3", + "src": "5243:9:3", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", "typeString": "bytes32[]" @@ -8924,11 +9100,11 @@ }, { "constant": false, - "id": 289, + "id": 291, "name": "s", "nodeType": "VariableDeclaration", - "scope": 350, - "src": "5056:11:3", + "scope": 354, + "src": "5256:11:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8937,19 +9113,19 @@ }, "typeName": { "baseType": { - "id": 287, + "id": 289, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "5056:7:3", + "src": "5256:7:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "id": 288, + "id": 290, "length": null, "nodeType": "ArrayTypeName", - "src": "5056:9:3", + "src": "5256:9:3", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", "typeString": "bytes32[]" @@ -8959,26 +9135,26 @@ "visibility": "internal" } ], - "src": "5017:51:3" + "src": "5217:51:3" }, "payable": false, "returnParameters": { - "id": 291, + "id": 293, "nodeType": "ParameterList", "parameters": [], - "src": "5103:0:3" + "src": "5303:0:3" }, - "scope": 397, - "src": "4999:541:3", + "scope": 401, + "src": "5199:623:3", "stateMutability": "view", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 395, + "id": 399, "nodeType": "Block", - "src": "6464:176:3", + "src": "6746:176:3", "statements": [ { "expression": { @@ -8993,14 +9169,14 @@ { "argumentTypes": null, "hexValue": "30783139", - "id": 377, + "id": 381, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "6526:4:3", + "src": "6808:4:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_25_by_1", @@ -9016,20 +9192,20 @@ "typeString": "int_const 25" } ], - "id": 376, + "id": 380, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "6521:4:3", + "src": "6803:4:3", "typeDescriptions": { "typeIdentifier": "t_type$_t_bytes1_$", "typeString": "type(bytes1)" }, "typeName": "byte" }, - "id": 378, + "id": 382, "isConstant": false, "isLValue": false, "isPure": true, @@ -9037,7 +9213,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "6521:10:3", + "src": "6803:10:3", "typeDescriptions": { "typeIdentifier": "t_bytes1", "typeString": "bytes1" @@ -9049,14 +9225,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 380, + "id": 384, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "6538:1:3", + "src": "6820:1:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -9072,20 +9248,20 @@ "typeString": "int_const 0" } ], - "id": 379, + "id": 383, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "6533:4:3", + "src": "6815:4:3", "typeDescriptions": { "typeIdentifier": "t_type$_t_bytes1_$", "typeString": "type(bytes1)" }, "typeName": "byte" }, - "id": 381, + "id": 385, "isConstant": false, "isLValue": false, "isPure": true, @@ -9093,7 +9269,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "6533:7:3", + "src": "6815:7:3", "typeDescriptions": { "typeIdentifier": "t_bytes1", "typeString": "bytes1" @@ -9101,25 +9277,25 @@ }, { "argumentTypes": null, - "id": 382, + "id": 386, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2631, - "src": "6542:4:3", + "referencedDeclaration": 2687, + "src": "6824:4:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafePersonalEdition_$397", + "typeIdentifier": "t_contract$_GnosisSafePersonalEdition_$401", "typeString": "contract GnosisSafePersonalEdition" } }, { "argumentTypes": null, - "id": 383, + "id": 387, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 352, - "src": "6548:2:3", + "referencedDeclaration": 356, + "src": "6830:2:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9127,64 +9303,12 @@ }, { "argumentTypes": null, - "id": 384, + "id": 388, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 354, - "src": "6552:5:3", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 385, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 356, - "src": "6559:4:3", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - { - "argumentTypes": null, - "id": 386, - "name": "operation", - "nodeType": "Identifier", - "overloadedDeclarations": [], "referencedDeclaration": 358, - "src": "6565:9:3", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$29", - "typeString": "enum Enum.Operation" - } - }, - { - "argumentTypes": null, - "id": 387, - "name": "safeTxGas", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 360, - "src": "6576:9:3", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 388, - "name": "dataGas", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 362, - "src": "6587:7:3", + "src": "6834:5:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9193,11 +9317,37 @@ { "argumentTypes": null, "id": 389, - "name": "gasPrice", + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 360, + "src": "6841:4:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 390, + "name": "operation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 362, + "src": "6847:9:3", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + } + }, + { + "argumentTypes": null, + "id": 391, + "name": "safeTxGas", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 364, - "src": "6596:8:3", + "src": "6858:9:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9205,12 +9355,38 @@ }, { "argumentTypes": null, - "id": 390, - "name": "gasToken", + "id": 392, + "name": "dataGas", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 366, - "src": "6606:8:3", + "src": "6869:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 393, + "name": "gasPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 368, + "src": "6878:8:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 394, + "name": "gasToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 370, + "src": "6888:8:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9218,12 +9394,12 @@ }, { "argumentTypes": null, - "id": 391, + "id": 395, "name": "_nonce", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 368, - "src": "6616:6:3", + "referencedDeclaration": 372, + "src": "6898:6:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9241,7 +9417,7 @@ "typeString": "bytes1" }, { - "typeIdentifier": "t_contract$_GnosisSafePersonalEdition_$397", + "typeIdentifier": "t_contract$_GnosisSafePersonalEdition_$401", "typeString": "contract GnosisSafePersonalEdition" }, { @@ -9283,18 +9459,18 @@ ], "expression": { "argumentTypes": null, - "id": 374, + "id": 378, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2585, - "src": "6504:3:3", + "referencedDeclaration": 2641, + "src": "6786:3:3", "typeDescriptions": { "typeIdentifier": "t_magic_abi", "typeString": "abi" } }, - "id": 375, + "id": 379, "isConstant": false, "isLValue": false, "isPure": true, @@ -9302,13 +9478,13 @@ "memberName": "encodePacked", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "6504:16:3", + "src": "6786:16:3", "typeDescriptions": { "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)" } }, - "id": 392, + "id": 396, "isConstant": false, "isLValue": false, "isPure": false, @@ -9316,7 +9492,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "6504:119:3", + "src": "6786:119:3", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -9330,18 +9506,18 @@ "typeString": "bytes memory" } ], - "id": 373, + "id": 377, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2592, - "src": "6481:9:3", + "referencedDeclaration": 2648, + "src": "6763:9:3", "typeDescriptions": { "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", "typeString": "function () pure returns (bytes32)" } }, - "id": 393, + "id": 397, "isConstant": false, "isLValue": false, "isPure": false, @@ -9349,21 +9525,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "6481:152:3", + "src": "6763:152:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "functionReturnParameters": 372, - "id": 394, + "functionReturnParameters": 376, + "id": 398, "nodeType": "Return", - "src": "6474:159:3" + "src": "6756:159:3" } ] }, "documentation": "@dev Returns hash to be signed by owners.\n @param to Destination address.\n @param value Ether value.\n @param data Data payload.\n @param operation Operation type.\n @param safeTxGas Fas that should be used for the safe transaction.\n @param dataGas Gas costs for data used to trigger the safe transaction.\n @param gasPrice Maximum gas price that should be used for this transaction.\n @param gasToken Token address (or 0 if ETH) that is used for the payment.\n @param _nonce Transaction nonce.\n @return Transaction hash.", - "id": 396, + "id": 400, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -9371,16 +9547,16 @@ "name": "getTransactionHash", "nodeType": "FunctionDefinition", "parameters": { - "id": 369, + "id": 373, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 352, + "id": 356, "name": "to", "nodeType": "VariableDeclaration", - "scope": 396, - "src": "6177:10:3", + "scope": 400, + "src": "6459:10:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9388,10 +9564,10 @@ "typeString": "address" }, "typeName": { - "id": 351, + "id": 355, "name": "address", "nodeType": "ElementaryTypeName", - "src": "6177:7:3", + "src": "6459:7:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9402,11 +9578,11 @@ }, { "constant": false, - "id": 354, + "id": 358, "name": "value", "nodeType": "VariableDeclaration", - "scope": 396, - "src": "6198:13:3", + "scope": 400, + "src": "6480:13:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9414,10 +9590,10 @@ "typeString": "uint256" }, "typeName": { - "id": 353, + "id": 357, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "6198:7:3", + "src": "6480:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9428,11 +9604,11 @@ }, { "constant": false, - "id": 356, + "id": 360, "name": "data", "nodeType": "VariableDeclaration", - "scope": 396, - "src": "6222:10:3", + "scope": 400, + "src": "6504:10:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9440,10 +9616,10 @@ "typeString": "bytes" }, "typeName": { - "id": 355, + "id": 359, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "6222:5:3", + "src": "6504:5:3", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -9454,11 +9630,11 @@ }, { "constant": false, - "id": 358, + "id": 362, "name": "operation", "nodeType": "VariableDeclaration", - "scope": 396, - "src": "6243:24:3", + "scope": 400, + "src": "6525:24:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9467,11 +9643,11 @@ }, "typeName": { "contractScope": null, - "id": 357, + "id": 361, "name": "Enum.Operation", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 29, - "src": "6243:14:3", + "src": "6525:14:3", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" @@ -9482,63 +9658,11 @@ }, { "constant": false, - "id": 360, + "id": 364, "name": "safeTxGas", "nodeType": "VariableDeclaration", - "scope": 396, - "src": "6278:17:3", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 359, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "6278:7:3", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 362, - "name": "dataGas", - "nodeType": "VariableDeclaration", - "scope": 396, - "src": "6306:15:3", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 361, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "6306:7:3", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 364, - "name": "gasPrice", - "nodeType": "VariableDeclaration", - "scope": 396, - "src": "6332:16:3", + "scope": 400, + "src": "6560:17:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9549,7 +9673,7 @@ "id": 363, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "6332:7:3", + "src": "6560:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9561,24 +9685,24 @@ { "constant": false, "id": 366, - "name": "gasToken", + "name": "dataGas", "nodeType": "VariableDeclaration", - "scope": 396, - "src": "6359:16:3", + "scope": 400, + "src": "6588:15:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, "typeName": { "id": 365, - "name": "address", + "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "6359:7:3", + "src": "6588:7:3", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, "value": null, @@ -9587,10 +9711,10 @@ { "constant": false, "id": 368, - "name": "_nonce", + "name": "gasPrice", "nodeType": "VariableDeclaration", - "scope": 396, - "src": "6385:14:3", + "scope": 400, + "src": "6614:16:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9601,7 +9725,59 @@ "id": 367, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "6385:7:3", + "src": "6614:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 370, + "name": "gasToken", + "nodeType": "VariableDeclaration", + "scope": 400, + "src": "6641:16:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 369, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6641:7:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 372, + "name": "_nonce", + "nodeType": "VariableDeclaration", + "scope": 400, + "src": "6667:14:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 371, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6667:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9611,20 +9787,20 @@ "visibility": "internal" } ], - "src": "6167:238:3" + "src": "6449:238:3" }, "payable": false, "returnParameters": { - "id": 372, + "id": 376, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 371, + "id": 375, "name": "", "nodeType": "VariableDeclaration", - "scope": 396, - "src": "6451:7:3", + "scope": 400, + "src": "6733:7:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9632,10 +9808,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 370, + "id": 374, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "6451:7:3", + "src": "6733:7:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -9645,20 +9821,20 @@ "visibility": "internal" } ], - "src": "6450:9:3" + "src": "6732:9:3" }, - "scope": 397, - "src": "6140:500:3", + "scope": 401, + "src": "6422:500:3", "stateMutability": "view", "superFunction": null, "visibility": "public" } ], - "scope": 398, - "src": "449:6193:3" + "scope": 402, + "src": "449:6475:3" } ], - "src": "0:6643:3" + "src": "0:6925:3" }, "compiler": { "name": "solc", @@ -9668,22 +9844,16 @@ "4": { "events": {}, "links": {}, - "address": "0x7516b591cfd6ba7c22caa25c011d7b815c95fc5d", - "transactionHash": "0x33ad07a6c877666e75a6297bf0c86ba5c1e4ef02e72027337a88a649bc38309b" - }, - "1527316019334": { - "events": {}, - "links": {}, - "address": "0x39aa0fab18dc485e96591b3317ea593feb990da0", - "transactionHash": "0x66ae6f871105a2bab973870a91d508ce3c26f29662aa7a139faf53975c3ba7b7" + "address": "0xd07b0b778cb265e61886c6a037ad0a1ccd605f13", + "transactionHash": "0xf3b9f8c0358d81f3f4d600ad6bd4d01725c1b82c6e8d3a5d5cbf00bf3ab7f935" }, "1527420696956": { "events": {}, "links": {}, - "address": "0x2f6ebb40061dab74d569509841ab8397f77f9168", - "transactionHash": "0x0cb0ab0185325fd4e5ef5dfbf473d6cbb278fa82fcd1a0c0ecc0d1a2b8c0b5af" + "address": "0x58ae455dab5137699c13bc2cf9637714c2172cb6", + "transactionHash": "0xfda1becb511b1d4beeb0f6f7a9d1b95aad7ee26b0d43dfbfb93e244853299a6c" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-27T11:31:46.238Z" + "updatedAt": "2018-05-28T06:08:59.465Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/GnosisSafeTeamEdition.json b/safe-contracts/build/contracts/GnosisSafeTeamEdition.json index b58c25e2..7cffce25 100644 --- a/safe-contracts/build/contracts/GnosisSafeTeamEdition.json +++ b/safe-contracts/build/contracts/GnosisSafeTeamEdition.json @@ -452,24 +452,24 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50612bc4806100206000396000f300608060405260043610610128576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063153414fa1461012a57806324cd131f146101d45780632b5000411461027e5780632f54bf6e14610344578063468721a71461039f578063610b5925146104575780637de7edef1461049a57806385e332cd146104dd57806386040aa9146105345780638cff6355146105a4578063a04222e1146105fb578063a09e89f5146106d4578063a0e67e2b14610739578063a3f4df7e146107a5578063b2494df314610835578063b7f3358d146108a1578063b91a667f146108d1578063e009cfde14610921578063e318b52b14610984578063e52cb36a14610a07578063e75235b814610a50578063ffa1ad7414610a81575b005b34801561013657600080fd5b506101d2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919080359060200190929190505050610b11565b005b3480156101e057600080fd5b5061027c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919080359060200190929190505050610c41565b005b34801561028a57600080fd5b50610326600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919080359060200190929190505050610ce4565b60405180826000191660001916815260200191505060405180910390f35b34801561035057600080fd5b50610385600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f6c565b604051808215151515815260200191505060405180910390f35b3480156103ab57600080fd5b5061043d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190505050610fee565b604051808215151515815260200191505060405180910390f35b34801561046357600080fd5b50610498600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061108b565b005b3480156104a657600080fd5b506104db600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611308565b005b3480156104e957600080fd5b506104f26113ab565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561054057600080fd5b506105a2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff1690602001909291905050506113b0565b005b3480156105b057600080fd5b506105b9611636565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561060757600080fd5b506106d260048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803560ff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505061163b565b005b3480156106e057600080fd5b506107236004803603810190808035600019169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611655565b6040518082815260200191505060405180910390f35b34801561074557600080fd5b5061074e61167a565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610791578082015181840152602081019050610776565b505050509050019250505060405180910390f35b3480156107b157600080fd5b506107ba611815565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156107fa5780820151818401526020810190506107df565b50505050905090810190601f1680156108275780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561084157600080fd5b5061084a61184e565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561088d578082015181840152602081019050610872565b505050509050019250505060405180910390f35b3480156108ad57600080fd5b506108cf600480360381019080803560ff169060200190929190505050611af5565b005b3480156108dd57600080fd5b5061091f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050611b74565b005b34801561092d57600080fd5b50610982600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e2c565b005b34801561099057600080fd5b50610a05600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061205f565b005b348015610a1357600080fd5b50610a3660048036038101908080356000191690602001909291905050506123f4565b604051808215151515815260200191505060405180910390f35b348015610a5c57600080fd5b50610a65612414565b604051808260ff1660ff16815260200191505060405180910390f35b348015610a8d57600080fd5b50610a9661242b565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610ad6578082015181840152602081019050610abb565b50505050905090810190601f168015610b035780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b600080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151515610b9757600080fd5b610ba48686868686610ce4565b905060056000826000191660001916815260200190815260200160002060009054906101000a900460ff16151515610bdb57600080fd5b600160066000836000191660001916815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050505050565b6000610c508686868686610ce4565b905060056000826000191660001916815260200190815260200160002060009054906101000a900460ff16151515610c8757600080fd5b610c9081612464565b600160056000836000191660001916815260200190815260200160002060006101000a81548160ff021916908315150217905550610cd1868686865a612689565b1515610cdc57600080fd5b505050505050565b600060197f01000000000000000000000000000000000000000000000000000000000000000260007f01000000000000000000000000000000000000000000000000000000000000000230888888888860405160200180897effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101887effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140185815260200184805190602001908083835b602083101515610e885780518252602082019150602081019050602083039250610e63565b6001836020036101000a038019825116818451168082178552505050505050905001836002811115610eb657fe5b60ff167f0100000000000000000000000000000000000000000000000000000000000000028152600101828152602001985050505050505050506040516020818303038152906040526040518082805190602001908083835b602083101515610f345780518252602082019150602081019050602083039250610f0f565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020905095945050505050565b600080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600080600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415151561107457600080fd5b611081858585855a612689565b9050949350505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156110c557600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141580156111195750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b151561112457600080fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156111a857600080fd5b60016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561134257600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561136857600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600181565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156113ea57600080fd5b8060ff166001600354031015151561140157600080fd5b8173ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561149a57600080fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360008154809291906001900391905055508060ff16600460009054906101000a900460ff1660ff161415156116315761163081611af5565b5b505050565b600181565b6116458484612786565b61164f8282612a17565b50505050565b6006602052816000526040600020602052806000526040600020600091509150505481565b6060806000806003546040519080825280602002602001820160405280156116b15781602001602082028038833980820191505090505b5092506000915060026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151561180c5780838381518110151561176157fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050818060010192505061171c565b82935050505090565b6040805190810160405280601881526020017f476e6f7369732053616665205465616d2045646974696f6e000000000000000081525081565b606060008060606000925060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151561196257600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915082806001019350506118bd565b826040519080825280602002602001820160405280156119915781602001602082028038833980820191505090505b5090506000925060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515611aec57818184815181101515611a4157fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915082806001019350506119fc565b80935050505090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611b2f57600080fd5b6003548160ff1611151515611b4357600080fd5b60018160ff1610151515611b5657600080fd5b80600460006101000a81548160ff021916908360ff16021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611bae57600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff1614158015611c025750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1515611c0d57600080fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611c9157600080fd5b60026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506003600081548092919060010191905055508060ff16600460009054906101000a900460ff1660ff16141515611e2857611e2781611af5565b5b5050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611e6657600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611eff57600080fd5b600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561209957600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141580156120ed5750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b15156120f857600080fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561217c57600080fd5b8173ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561221557600080fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b60056020528060005260406000206000915054906101000a900460ff1681565b6000600460009054906101000a900460ff16905090565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b60008060008060066000866000191660001916815260200190815260200160002093506000925060026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415156126615760008460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054141590503373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806125a15750805b156125fa5780156125f15760008460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b82806001019350505b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691506124ef565b600460009054906101000a900460ff1660ff16831015151561268257600080fd5b5050505050565b6000806000600281111561269957fe5b8460028111156126a557fe5b14156126be576126b787878786612b56565b915061277c565b600160028111156126cb57fe5b8460028111156126d757fe5b14156126ef576126e8878685612b6f565b915061277b565b6126f885612b86565b905060008173ffffffffffffffffffffffffffffffffffffffff16141591507f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b5b5095945050505050565b600080600080600460009054906101000a900460ff1660ff161415156127ab57600080fd5b84518460ff16111515156127be57600080fd5b60018460ff16101515156127d157600080fd5b60019250600091505b845182101561296e5784828151811015156127f157fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff16141580156128515750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b151561285c57600080fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156128e057600080fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080925081806001019250506127da565b6001600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550845160038190555083600460006101000a81548160ff021916908360ff1602179055505050505050565b600060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612a9c57600080fd5b6001806000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008273ffffffffffffffffffffffffffffffffffffffff16141515612b5257612b4682825a612b6f565b1515612b5157600080fd5b5b5050565b6000806000845160208601878987f19050949350505050565b60008060008451602086018786f490509392505050565b60008151602083016000f090509190505600a165627a7a72305820126f5071abe6229c4f90c0e3e3e154b02acfdfd4934694c5270a471081c34f5f0029", - "deployedBytecode": "0x608060405260043610610128576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063153414fa1461012a57806324cd131f146101d45780632b5000411461027e5780632f54bf6e14610344578063468721a71461039f578063610b5925146104575780637de7edef1461049a57806385e332cd146104dd57806386040aa9146105345780638cff6355146105a4578063a04222e1146105fb578063a09e89f5146106d4578063a0e67e2b14610739578063a3f4df7e146107a5578063b2494df314610835578063b7f3358d146108a1578063b91a667f146108d1578063e009cfde14610921578063e318b52b14610984578063e52cb36a14610a07578063e75235b814610a50578063ffa1ad7414610a81575b005b34801561013657600080fd5b506101d2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919080359060200190929190505050610b11565b005b3480156101e057600080fd5b5061027c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919080359060200190929190505050610c41565b005b34801561028a57600080fd5b50610326600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919080359060200190929190505050610ce4565b60405180826000191660001916815260200191505060405180910390f35b34801561035057600080fd5b50610385600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f6c565b604051808215151515815260200191505060405180910390f35b3480156103ab57600080fd5b5061043d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190505050610fee565b604051808215151515815260200191505060405180910390f35b34801561046357600080fd5b50610498600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061108b565b005b3480156104a657600080fd5b506104db600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611308565b005b3480156104e957600080fd5b506104f26113ab565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561054057600080fd5b506105a2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff1690602001909291905050506113b0565b005b3480156105b057600080fd5b506105b9611636565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561060757600080fd5b506106d260048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803560ff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505061163b565b005b3480156106e057600080fd5b506107236004803603810190808035600019169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611655565b6040518082815260200191505060405180910390f35b34801561074557600080fd5b5061074e61167a565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610791578082015181840152602081019050610776565b505050509050019250505060405180910390f35b3480156107b157600080fd5b506107ba611815565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156107fa5780820151818401526020810190506107df565b50505050905090810190601f1680156108275780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561084157600080fd5b5061084a61184e565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561088d578082015181840152602081019050610872565b505050509050019250505060405180910390f35b3480156108ad57600080fd5b506108cf600480360381019080803560ff169060200190929190505050611af5565b005b3480156108dd57600080fd5b5061091f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050611b74565b005b34801561092d57600080fd5b50610982600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e2c565b005b34801561099057600080fd5b50610a05600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061205f565b005b348015610a1357600080fd5b50610a3660048036038101908080356000191690602001909291905050506123f4565b604051808215151515815260200191505060405180910390f35b348015610a5c57600080fd5b50610a65612414565b604051808260ff1660ff16815260200191505060405180910390f35b348015610a8d57600080fd5b50610a9661242b565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610ad6578082015181840152602081019050610abb565b50505050905090810190601f168015610b035780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b600080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151515610b9757600080fd5b610ba48686868686610ce4565b905060056000826000191660001916815260200190815260200160002060009054906101000a900460ff16151515610bdb57600080fd5b600160066000836000191660001916815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050505050565b6000610c508686868686610ce4565b905060056000826000191660001916815260200190815260200160002060009054906101000a900460ff16151515610c8757600080fd5b610c9081612464565b600160056000836000191660001916815260200190815260200160002060006101000a81548160ff021916908315150217905550610cd1868686865a612689565b1515610cdc57600080fd5b505050505050565b600060197f01000000000000000000000000000000000000000000000000000000000000000260007f01000000000000000000000000000000000000000000000000000000000000000230888888888860405160200180897effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101887effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140185815260200184805190602001908083835b602083101515610e885780518252602082019150602081019050602083039250610e63565b6001836020036101000a038019825116818451168082178552505050505050905001836002811115610eb657fe5b60ff167f0100000000000000000000000000000000000000000000000000000000000000028152600101828152602001985050505050505050506040516020818303038152906040526040518082805190602001908083835b602083101515610f345780518252602082019150602081019050602083039250610f0f565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020905095945050505050565b600080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600080600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415151561107457600080fd5b611081858585855a612689565b9050949350505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156110c557600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141580156111195750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b151561112457600080fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156111a857600080fd5b60016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561134257600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561136857600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600181565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156113ea57600080fd5b8060ff166001600354031015151561140157600080fd5b8173ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561149a57600080fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360008154809291906001900391905055508060ff16600460009054906101000a900460ff1660ff161415156116315761163081611af5565b5b505050565b600181565b6116458484612786565b61164f8282612a17565b50505050565b6006602052816000526040600020602052806000526040600020600091509150505481565b6060806000806003546040519080825280602002602001820160405280156116b15781602001602082028038833980820191505090505b5092506000915060026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151561180c5780838381518110151561176157fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050818060010192505061171c565b82935050505090565b6040805190810160405280601881526020017f476e6f7369732053616665205465616d2045646974696f6e000000000000000081525081565b606060008060606000925060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151561196257600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915082806001019350506118bd565b826040519080825280602002602001820160405280156119915781602001602082028038833980820191505090505b5090506000925060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515611aec57818184815181101515611a4157fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915082806001019350506119fc565b80935050505090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611b2f57600080fd5b6003548160ff1611151515611b4357600080fd5b60018160ff1610151515611b5657600080fd5b80600460006101000a81548160ff021916908360ff16021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611bae57600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff1614158015611c025750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1515611c0d57600080fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611c9157600080fd5b60026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506003600081548092919060010191905055508060ff16600460009054906101000a900460ff1660ff16141515611e2857611e2781611af5565b5b5050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611e6657600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611eff57600080fd5b600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561209957600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141580156120ed5750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b15156120f857600080fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561217c57600080fd5b8173ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561221557600080fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b60056020528060005260406000206000915054906101000a900460ff1681565b6000600460009054906101000a900460ff16905090565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b60008060008060066000866000191660001916815260200190815260200160002093506000925060026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415156126615760008460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054141590503373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806125a15750805b156125fa5780156125f15760008460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b82806001019350505b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691506124ef565b600460009054906101000a900460ff1660ff16831015151561268257600080fd5b5050505050565b6000806000600281111561269957fe5b8460028111156126a557fe5b14156126be576126b787878786612b56565b915061277c565b600160028111156126cb57fe5b8460028111156126d757fe5b14156126ef576126e8878685612b6f565b915061277b565b6126f885612b86565b905060008173ffffffffffffffffffffffffffffffffffffffff16141591507f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b5b5095945050505050565b600080600080600460009054906101000a900460ff1660ff161415156127ab57600080fd5b84518460ff16111515156127be57600080fd5b60018460ff16101515156127d157600080fd5b60019250600091505b845182101561296e5784828151811015156127f157fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff16141580156128515750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b151561285c57600080fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156128e057600080fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080925081806001019250506127da565b6001600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550845160038190555083600460006101000a81548160ff021916908360ff1602179055505050505050565b600060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612a9c57600080fd5b6001806000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008273ffffffffffffffffffffffffffffffffffffffff16141515612b5257612b4682825a612b6f565b1515612b5157600080fd5b5b5050565b6000806000845160208601878987f19050949350505050565b60008060008451602086018786f490509392505050565b60008151602083016000f090509190505600a165627a7a72305820126f5071abe6229c4f90c0e3e3e154b02acfdfd4934694c5270a471081c34f5f0029", - "sourceMap": "272:3894:4:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;272:3894:4;;;;;;;", - "deployedSourceMap": "272:3894:4:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1263:571;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1263:571:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2276:542;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2276:542:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3835:329;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3835:329:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4841:129:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4841:129:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2522:377:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2522:377:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1235:391;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1235:391:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;626:208:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;626:208:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;499:55:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;499:55:8;;;;;;;;;;;;;;;;;;;;;;;;;;;2776:573:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2776:573:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;287:54;;8:9:-1;5:2;;;30:1;27;20:12;5:2;287:54:9;;;;;;;;;;;;;;;;;;;;;;;;;;;693:301:2;;8:9:-1;5:2;;;30:1;27;20:12;5:2;693:301:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;767:66:4;;8:9:-1;5:2;;;30:1;27;20:12;5:2;767:66:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5052:458:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5052:458:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;5052:458:9;;;;;;;;;;;;;;;;;336:56:4;;8:9:-1;5:2;;;30:1;27;20:12;5:2;336:56:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;336:56:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4423:738:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4423:738:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;4423:738:8;;;;;;;;;;;;;;;;;4398:318:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4398:318:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;1906:528;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1906:528:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1887:299:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1887:299:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3683:526:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3683:526:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;536:43:4;;8:9:-1;5:2;;;30:1;27;20:12;5:2;536:43:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4722:113:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4722:113:9;;;;;;;;;;;;;;;;;;;;;;;;;;;398:40:4;;8:9:-1;5:2;;;30:1;27;20:12;5:2;398:40:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;398:40:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1263:571;1576:23;1564:1;1542:6;:18;1549:10;1542:18;;;;;;;;;;;;;;;;;;;;;;;;;:23;;;;1534:32;;;;;;;;1602:53;1621:2;1625:5;1632:4;1638:9;1649:5;1602:18;:53::i;:::-;1576:79;;1746:10;:27;1757:15;1746:27;;;;;;;;;;;;;;;;;;;;;;;;;;;1745:28;1737:37;;;;;;;;1826:1;1784:10;:27;1795:15;1784:27;;;;;;;;;;;;;;;;;:39;1812:10;1784:39;;;;;;;;;;;;;;;:43;;;;1263:571;;;;;;:::o;2276:542::-;2470:23;2496:53;2515:2;2519:5;2526:4;2532:9;2543:5;2496:18;:53::i;:::-;2470:79;;2568:10;:27;2579:15;2568:27;;;;;;;;;;;;;;;;;;;;;;;;;;;2567:28;2559:37;;;;;;;;2606:43;2633:15;2606:26;:43::i;:::-;2742:4;2712:10;:27;2723:15;2712:27;;;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;2764:46;2772:2;2776:5;2783:4;2789:9;2800;2764:7;:46::i;:::-;2756:55;;;;;;;;2276:542;;;;;;:::o;3835:329::-;4038:7;4100:4;4095:10;;4112:1;4107:7;;4116:4;4122:2;4126:5;4133:4;4139:9;4150:5;4078:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;;;4078:78:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;4078:78:4;;;4068:89;;;;;;;;;;;;;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;;;4068:89:4;;;;;;;;;;;;;;;;4061:96;;3835:329;;;;;;;:::o;4841:129:9:-;4918:4;4962:1;4945:6;:13;4952:5;4945:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;;4938:25;;4841:129;;;:::o;2522:377:8:-;2654:12;2762:1;2739:7;:19;2747:10;2739:19;;;;;;;;;;;;;;;;;;;;;;;;;:24;;;;2731:33;;;;;;;;2846:46;2854:2;2858:5;2865:4;2871:9;2882;2846:7;:46::i;:::-;2836:56;;2522:377;;;;;;:::o;1235:391::-;244:4:13;222:27;;:10;:27;;;214:36;;;;;;;;1401:1:8;1390:6;1382:20;;;;:59;;;;;550:3;1406:35;;1414:6;1406:35;;;;1382:59;1374:68;;;;;;;;1520:1;1501:7;:15;1509:6;1501:15;;;;;;;;;;;;;;;;;;;;;;;;;:20;;;1493:29;;;;;;;;1550:7;:25;550:3;1550:25;;;;;;;;;;;;;;;;;;;;;;;;;1532:7;:15;1540:6;1532:15;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;1613:6;1585:7;:25;550:3;1585:25;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;1235:391;:::o;626:208:5:-;244:4:13;222:27;;:10;:27;;;214:36;;;;;;;;791:1:5;776:11;:16;;;;768:25;;;;;;;;816:11;803:10;;:24;;;;;;;;;;;;;;;;;;626:208;:::o;499:55:8:-;550:3;499:55;:::o;2776:573:9:-;244:4:13;222:27;;:10;:27;;;214:36;;;;;;;;3000:10:9;2982:28;;2995:1;2982:10;;:14;:28;;2974:37;;;;;;;;3112:5;3091:26;;:6;:17;3098:9;3091:17;;;;;;;;;;;;;;;;;;;;;;;;;:26;;;3083:35;;;;;;;;3148:6;:13;3155:5;3148:13;;;;;;;;;;;;;;;;;;;;;;;;;3128:6;:17;3135:9;3128:17;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;3187:1;3171:6;:13;3178:5;3171:13;;;;;;;;;;;;;;;;:17;;;;;;;;;;;;;;;;;;3198:10;;:12;;;;;;;;;;;;;;3291:10;3278:23;;:9;;;;;;;;;;;:23;;;;3274:68;;;3315:27;3331:10;3315:15;:27::i;:::-;3274:68;2776:573;;;:::o;287:54::-;337:3;287:54;:::o;693:301:2:-;798:32;810:7;819:10;798:11;:32::i;:::-;965:22;978:2;982:4;965:12;:22::i;:::-;693:301;;;;:::o;767:66:4:-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5052:458:9:-;5118:9;5143:22;5237:13;5264:20;5182:10;;5168:25;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;5168:25:9;;;;5143:50;;5253:1;5237:17;;5287:6;:23;337:3;5287:23;;;;;;;;;;;;;;;;;;;;;;;;;5264:46;;5320:162;337:3;5326:31;;:12;:31;;;;5320:162;;;5388:12;5373:5;5379;5373:12;;;;;;;;;;;;;;;;;:27;;;;;;;;;;;5429:6;:20;5436:12;5429:20;;;;;;;;;;;;;;;;;;;;;;;;;5414:35;;5463:8;;;;;;;5320:162;;;5498:5;5491:12;;5052:458;;;;:::o;336:56:4:-;;;;;;;;;;;;;;;;;;;;:::o;4423:738:8:-;4490:9;4549:19;4582:21;4782:22;4571:1;4549:23;;4606:7;:25;550:3;4606:25;;;;;;;;;;;;;;;;;;;;;;;;;4582:49;;4641:132;550:3;4647:33;;:13;:33;;;;4641:132;;;4712:7;:22;4720:13;4712:22;;;;;;;;;;;;;;;;;;;;;;;;;4696:38;;4748:14;;;;;;;4641:132;;;4821:11;4807:26;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;4807:26:8;;;;4782:51;;4891:1;4877:15;;4918:7;:25;550:3;4918:25;;;;;;;;;;;;;;;;;;;;;;;;;4902:41;;4953:180;550:3;4959:33;;:13;:33;;;;4953:180;;;5029:13;5008:5;5014:11;5008:18;;;;;;;;;;;;;;;;;:34;;;;;;;;;;;5072:7;:22;5080:13;5072:22;;;;;;;;;;;;;;;;;;;;;;;;;5056:38;;5108:14;;;;;;;4953:180;;;5149:5;5142:12;;4423:738;;;;:::o;4398:318:9:-;244:4:13;222:27;;:10;:27;;;214:36;;;;;;;;4580:10:9;;4566;:24;;;;4558:33;;;;;;;;4675:1;4661:10;:15;;;;4653:24;;;;;;;;4699:10;4687:9;;:22;;;;;;;;;;;;;;;;;;4398:318;:::o;1906:528::-;244:4:13;222:27;;:10;:27;;;214:36;;;;;;;;2076:1:9;2067:5;:10;;;;:38;;;;;337:3;2081:24;;:5;:24;;;;2067:38;2059:47;;;;;;;;2181:1;2164:6;:13;2171:5;2164:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;2156:27;;;;;;;;2209:6;:23;337:3;2209:23;;;;;;;;;;;;;;;;;;;;;;;;;2193:6;:13;2200:5;2193:13;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;2268:5;2242:6;:23;337:3;2242:23;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;2283:10;;:12;;;;;;;;;;;;;2376:10;2363:23;;:9;;;;;;;;;;;:23;;;;2359:68;;;2400:27;2416:10;2400:15;:27::i;:::-;2359:68;1906:528;;:::o;1887:299:8:-;244:4:13;222:27;;:10;:27;;;214:36;;;;;;;;2095:6:8;2064:38;;:7;:19;2072:10;2064:19;;;;;;;;;;;;;;;;;;;;;;;;;:38;;;2056:47;;;;;;;;2135:7;:15;2143:6;2135:15;;;;;;;;;;;;;;;;;;;;;;;;;2113:7;:19;2121:10;2113:19;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;2178:1;2160:7;:15;2168:6;2160:15;;;;;;;;;;;;;;;;:19;;;;;;;;;;;;;;;;;;1887:299;;:::o;3683:526:9:-;244:4:13;222:27;;:10;:27;;;214:36;;;;;;;;3866:1:9;3854:8;:13;;;;:44;;;;;337:3;3871:27;;:8;:27;;;;3854:44;3846:53;;;;;;;;3977:1;3957:6;:16;3964:8;3957:16;;;;;;;;;;;;;;;;;;;;;;;;;:21;;;3949:30;;;;;;;;4080:8;4059:29;;:6;:17;4066:9;4059:17;;;;;;;;;;;;;;;;;;;;;;;;;:29;;;4051:38;;;;;;;;4118:6;:16;4125:8;4118:16;;;;;;;;;;;;;;;;;;;;;;;;;4099:6;:16;4106:8;4099:16;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;4164:8;4144:6;:17;4151:9;4144:17;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;4201:1;4182:6;:16;4189:8;4182:16;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;3683:526;;;:::o;536:43:4:-;;;;;;;;;;;;;;;;;;;;;;:::o;4722:113:9:-;4791:5;4819:9;;;;;;;;;;;4812:16;;4722:113;:::o;398:40:4:-;;;;;;;;;;;;;;;;;;;;:::o;2824:733::-;2916:37;2993:21;3070:20;3180:19;2956:10;:27;2967:15;2956:27;;;;;;;;;;;;;;;;;2916:67;;3017:1;2993:25;;3093:6;:23;337:3:9;3093:23:4;;;;;;;;;;;;;;;;;;;;;;;;;3070:46;;3126:380;337:3:9;3133:31:4;;:12;:31;;;;3126:380;;;3229:1;3202:9;:23;3212:12;3202:23;;;;;;;;;;;;;;;;:28;;3180:50;;3263:10;3247:26;;:12;:26;;;:44;;;;3277:14;3247:44;3244:203;;;3315:14;3311:88;;;3379:1;3353:9;:23;3363:12;3353:23;;;;;;;;;;;;;;;:27;;;;3311:88;3416:16;;;;;;;3244:203;3475:6;:20;3482:12;3475:20;;;;;;;;;;;;;;;;;;;;;;;;;3460:35;;3126:380;;;3540:9;;;;;;;;;;;3523:26;;:13;:26;;3515:35;;;;;;;;2824:733;;;;;:::o;2905:548:8:-;3036:12;3307:19;3081;3068:32;;;;;;;;:9;:32;;;;;;;;;3064:383;;;3124:35;3136:2;3140:5;3147:4;3153:5;3124:11;:35::i;:::-;3114:45;;3064:383;;;3191:27;3178:40;;;;;;;;:9;:40;;;;;;;;;3174:273;;;3242:36;3262:2;3266:4;3272:5;3242:19;:36::i;:::-;3232:46;;3174:273;;;3329:19;3343:4;3329:13;:19::i;:::-;3307:41;;3387:1;3372:11;:16;;;;3362:26;;3407:29;3424:11;3407:29;;;;;;;;;;;;;;;;;;;;;;3174:273;3064:383;2905:548;;;;;;;;:::o;641:1025:9:-;1132:20;1185:9;1284:13;875:1;862:9;;;;;;;;;;;:14;;;854:23;;;;;;;;984:7;:14;970:10;:28;;;;962:37;;;;;;;;1083:1;1069:10;:15;;;;1061:24;;;;;;;;337:3;1132:38;;1197:1;1185:13;;1180:363;1204:7;:14;1200:1;:18;1180:363;;;1300:7;1308:1;1300:10;;;;;;;;;;;;;;;;;;1284:26;;1341:1;1332:5;:10;;;;:38;;;;;337:3;1346:24;;:5;:24;;;;1332:38;1324:47;;;;;;;;1454:1;1437:6;:13;1444:5;1437:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;1429:27;;;;;;;;1493:5;1470:6;:20;1477:12;1470:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;1527:5;1512:20;;1220:3;;;;;;;1180:363;;;337:3;1552:6;:20;1559:12;1552:20;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;1613:7;:14;1600:10;:27;;;;1649:10;1637:9;;:22;;;;;;;;;;;;;;;;;;641:1025;;;;;:::o;735:333:8:-;849:1;820:7;:25;550:3;820:25;;;;;;;;;;;;;;;;;;;;;;;;;:30;;;812:39;;;;;;;;550:3;861:7;:25;550:3;861:25;;;;;;;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;925:1;919:2;:7;;;;915:146;;;1020:40;1040:2;1044:4;1050:9;1020:19;:40::i;:::-;1012:49;;;;;;;;915:146;735:333;;:::o;3459:309::-;3568:12;3750:1;3747;3740:4;3734:11;3727:4;3721;3717:15;3710:5;3706:2;3699:5;3694:58;3683:69;;3669:93;;;;;;:::o;3774:303::-;3876:12;4059:1;4056;4049:4;4043:11;4036:4;4030;4026:15;4022:2;4015:5;4002:59;3991:70;;3977:94;;;;;:::o;4083:261::-;4152:19;4322:4;4316:11;4309:4;4303;4299:15;4296:1;4289:39;4274:54;;4260:78;;;:::o", - "source": "pragma solidity 0.4.24;\nimport \"./GnosisSafe.sol\";\nimport \"./MasterCopy.sol\";\n\n\n/// @title Gnosis Safe Team Edition - A multisignature wallet with support for confirmations.\n/// @author Stefan George - \n/// @author Richard Meissner - \ncontract GnosisSafeTeamEdition is MasterCopy, GnosisSafe {\n\n string public constant NAME = \"Gnosis Safe Team Edition\";\n string public constant VERSION = \"0.0.1\";\n\n // isExecuted mapping allows to check if a transaction (by hash) was already executed.\n mapping (bytes32 => bool) public isExecuted;\n\n // isApproved mapping allows to check if a transaction (by hash) was confirmed by an owner.\n // uint256 is used to optimize the generated assembly. if 0 then false else true\n mapping (bytes32 => mapping(address => uint256)) public isApproved;\n\n /// @dev Allows to confirm a Safe transaction with a regular transaction.\n /// This can only be done from an owner address.\n /// @param to Destination address of Safe transaction.\n /// @param value Ether value of Safe transaction.\n /// @param data Data payload of Safe transaction.\n /// @param operation Operation type of Safe transaction.\n /// @param nonce Nonce used for this Safe transaction.\n function approveTransactionWithParameters(\n address to, \n uint256 value, \n bytes data, \n Enum.Operation operation, \n uint256 nonce\n )\n public\n {\n // Only Safe owners are allowed to confirm Safe transactions.\n require(owners[msg.sender] != 0);\n bytes32 transactionHash = getTransactionHash(to, value, data, operation, nonce);\n // It should not be possible to confirm an executed transaction\n require(!isExecuted[transactionHash]);\n isApproved[transactionHash][msg.sender] = 1;\n }\n\n /// @dev Allows to execute a Safe transaction confirmed by required number of owners. If the sender is an owner this is automatically confirmed.\n /// @param to Destination address of Safe transaction.\n /// @param value Ether value of Safe transaction.\n /// @param data Data payload of Safe transaction.\n /// @param operation Operation type of Safe transaction.\n /// @param nonce Nonce used for this Safe transaction.\n function execTransactionIfApproved(\n address to, \n uint256 value, \n bytes data, \n Enum.Operation operation, \n uint256 nonce\n )\n public\n {\n bytes32 transactionHash = getTransactionHash(to, value, data, operation, nonce);\n require(!isExecuted[transactionHash]);\n checkAndClearConfirmations(transactionHash);\n // Mark as executed and execute transaction.\n isExecuted[transactionHash] = true;\n require(execute(to, value, data, operation, gasleft()));\n }\n\n function checkAndClearConfirmations(bytes32 transactionHash)\n internal\n {\n mapping(address => uint256) approvals = isApproved[transactionHash];\n uint256 confirmations = 0;\n // Validate threshold is reached.\n address currentOwner = owners[SENTINEL_OWNERS];\n while (currentOwner != SENTINEL_OWNERS) {\n bool ownerConfirmed = approvals[currentOwner] != 0;\n if(currentOwner == msg.sender || ownerConfirmed) {\n if (ownerConfirmed) {\n approvals[currentOwner] = 0;\n }\n confirmations ++;\n }\n currentOwner = owners[currentOwner];\n }\n require(confirmations >= threshold);\n }\n\n /// @dev Returns hash to be signed by owners.\n /// @param to Destination address.\n /// @param value Ether value.\n /// @param data Data payload.\n /// @param operation Operation type.\n /// @param nonce Transaction nonce.\n /// @return Transaction hash.\n function getTransactionHash(\n address to, \n uint256 value, \n bytes data, \n Enum.Operation operation, \n uint256 nonce\n )\n public\n view\n returns (bytes32)\n {\n return keccak256(abi.encodePacked(byte(0x19), byte(0), this, to, value, data, operation, nonce));\n }\n}\n", + "bytecode": "0x608060405234801561001057600080fd5b50613c6b806100206000396000f300608060405260043610610128576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063153414fa1461012a57806324cd131f146101d45780632b5000411461027e5780632f54bf6e14610344578063468721a71461039f578063610b5925146104575780637de7edef1461049a57806385e332cd146104dd57806386040aa9146105345780638cff6355146105a4578063a04222e1146105fb578063a09e89f5146106d4578063a0e67e2b14610739578063a3f4df7e146107a5578063b2494df314610835578063b7f3358d146108a1578063b91a667f146108d1578063e009cfde14610921578063e318b52b14610984578063e52cb36a14610a07578063e75235b814610a50578063ffa1ad7414610a81575b005b34801561013657600080fd5b506101d2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919080359060200190929190505050610b11565b005b3480156101e057600080fd5b5061027c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919080359060200190929190505050610d39565b005b34801561028a57600080fd5b50610326600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919080359060200190929190505050610efa565b60405180826000191660001916815260200191505060405180910390f35b34801561035057600080fd5b50610385600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611182565b604051808215151515815260200191505060405180910390f35b3480156103ab57600080fd5b5061043d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190505050611204565b604051808215151515815260200191505060405180910390f35b34801561046357600080fd5b50610498600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611330565b005b3480156104a657600080fd5b506104db600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061170e565b005b3480156104e957600080fd5b506104f26118cf565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561054057600080fd5b506105a2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff1690602001909291905050506118d4565b005b3480156105b057600080fd5b506105b9611d07565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561060757600080fd5b506106d260048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803560ff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050611d0c565b005b3480156106e057600080fd5b506107236004803603810190808035600019169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611d26565b6040518082815260200191505060405180910390f35b34801561074557600080fd5b5061074e611d4b565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610791578082015181840152602081019050610776565b505050509050019250505060405180910390f35b3480156107b157600080fd5b506107ba611ee6565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156107fa5780820151818401526020810190506107df565b50505050905090810190601f1680156108275780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561084157600080fd5b5061084a611f1f565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561088d578082015181840152602081019050610872565b505050509050019250505060405180910390f35b3480156108ad57600080fd5b506108cf600480360381019080803560ff1690602001909291905050506121c6565b005b3480156108dd57600080fd5b5061091f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff1690602001909291905050506123f2565b005b34801561092d57600080fd5b50610982600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061280b565b005b34801561099057600080fd5b50610a05600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612b5c565b005b348015610a1357600080fd5b50610a3660048036038101908080356000191690602001909291905050506130e1565b604051808215151515815260200191505060405180910390f35b348015610a5c57600080fd5b50610a65613101565b604051808260ff1660ff16815260200191505060405180910390f35b348015610a8d57600080fd5b50610a96613118565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610ad6578082015181840152602081019050610abb565b50505050905090810190601f168015610b035780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b600080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151515610c00576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f53656e646572206973206e6f7420616e206f776e65720000000000000000000081525060200191505060405180910390fd5b610c0d8686868686610efa565b905060056000826000191660001916815260200190815260200160002060009054906101000a900460ff16151515610cd3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f53616665207472616e73616374696f6e20616c7265616479206578656375746581526020017f640000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600160066000836000191660001916815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050505050565b6000610d488686868686610efa565b905060056000826000191660001916815260200190815260200160002060009054906101000a900460ff16151515610e0e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f53616665207472616e73616374696f6e20616c7265616479206578656375746581526020017f640000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b610e1781613151565b600160056000836000191660001916815260200190815260200160002060006101000a81548160ff021916908315150217905550610e58868686865a6133df565b1515610ef2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001807f436f756c64206e6f7420657865637574652073616665207472616e736163746981526020017f6f6e00000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b505050505050565b600060197f01000000000000000000000000000000000000000000000000000000000000000260007f01000000000000000000000000000000000000000000000000000000000000000230888888888860405160200180897effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101887effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140185815260200184805190602001908083835b60208310151561109e5780518252602082019150602081019050602083039250611079565b6001836020036101000a0380198251168184511680821785525050505050509050018360028111156110cc57fe5b60ff167f0100000000000000000000000000000000000000000000000000000000000000028152600101828152602001985050505050505050506040516020818303038152906040526040518082805190602001908083835b60208310151561114a5780518252602082019150602081019050602083039250611125565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020905095945050505050565b600080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600080600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151515611319576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d206181526020017f6e20656e61626c6564206d6f64756c650000000000000000000000000000000081525060400191505060405180910390fd5b611326858585855a6133df565b9050949350505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156113f9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415801561144d5750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b15156114c1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f496e76616c6964206d6f64756c6520616464726573732070726f76696465640081525060200191505060405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156115ae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4d6f64756c652068617320616c7265616479206265656e20616464656400000081525060200191505060405180910390fd5b60016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156117d7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561188c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f496e76616c6964206d617374657220636f707920616464726573732070726f7681526020017f696465640000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600181565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561199d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b8060ff1660016003540310151515611a43576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260358152602001807f4e6577206f776e657220636f756e74206e6565647320746f206265206c61726781526020017f6572207468616e206e6577207468726573686f6c64000000000000000000000081525060400191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611b6b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f496e76616c696420707265764f776e65722c206f776e6572207061697220707281526020017f6f7669646564000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360008154809291906001900391905055508060ff16600460009054906101000a900460ff1660ff16141515611d0257611d01816121c6565b5b505050565b600181565b611d1684846134dc565b611d2082826139c6565b50505050565b6006602052816000526040600020602052806000526040600020600091509150505481565b606080600080600354604051908082528060200260200182016040528015611d825781602001602082028038833980820191505090505b5092506000915060026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515611edd57808383815181101515611e3257fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508180600101925050611ded565b82935050505090565b6040805190810160405280601881526020017f476e6f7369732053616665205465616d2045646974696f6e000000000000000081525081565b606060008060606000925060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151561203357600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508280600101935050611f8e565b826040519080825280602002602001820160405280156120625781602001602082028038833980820191505090505b5090506000925060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415156121bd5781818481518110151561211257fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915082806001019350506120cd565b80935050505090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561228f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b6003548160ff1611151515612332576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f5468726573686f6c642063616e6e6f7420657863656564206f776e657220636f81526020017f756e74000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60018160ff16101515156123d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f5468726573686f6c64206e6565647320746f206265206772656174657220746881526020017f616e20300000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b80600460006101000a81548160ff021916908360ff16021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156124bb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff161415801561250f5750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1515612583576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612670576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4164647265737320697320616c726561647920616e206f776e6572000000000081525060200191505060405180910390fd5b60026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506003600081548092919060010191905055508060ff16600460009054906101000a900460ff1660ff1614151561280757612806816121c6565b5b5050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156128d4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156129fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001807f496e76616c696420707265764d6f64756c652c206d6f64756c6520706169722081526020017f70726f766964656400000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612c25576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614158015612c795750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1515612ced576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612dda576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4164647265737320697320616c726561647920616e206f776e6572000000000081525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612f02576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f496e76616c696420707265764f776e65722c206f776e6572207061697220707281526020017f6f7669646564000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b60056020528060005260406000206000915054906101000a900460ff1681565b6000600460009054906101000a900460ff16905090565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b60008060008060066000866000191660001916815260200190815260200160002093506000925060026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151561334e5760008460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054141590503373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148061328e5750805b156132e75780156132de5760008460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b82806001019350505b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691506131dc565b600460009054906101000a900460ff1660ff1683101515156133d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f4e6f7420656e6f75676820636f6e6669726d6174696f6e73000000000000000081525060200191505060405180910390fd5b5050505050565b600080600060028111156133ef57fe5b8460028111156133fb57fe5b14156134145761340d87878786613bfd565b91506134d2565b6001600281111561342157fe5b84600281111561342d57fe5b14156134455761343e878685613c16565b91506134d1565b61344e85613c2d565b905060008173ffffffffffffffffffffffffffffffffffffffff16141591507f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b5b5095945050505050565b600080600080600460009054906101000a900460ff1660ff1614151561356a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f4f776e657273206861766520616c7265616479206265656e207365747570000081525060200191505060405180910390fd5b84518460ff161115151561360c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f5468726573686f6c642063616e6e6f7420657863656564206f776e657220636f81526020017f756e74000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60018460ff16101515156136ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f5468726573686f6c64206e6565647320746f206265206772656174657220746881526020017f616e20300000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60019250600091505b845182101561391d5784828151811015156136ce57fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff161415801561372e5750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b15156137a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561388f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4475706c6963617465206f776e657220616464726573732070726f766964656481525060200191505060405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080925081806001019250506136b7565b6001600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550845160038190555083600460006101000a81548160ff021916908360ff1602179055505050505050565b600060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515613ada576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f4d6f64756c6573206861766520616c7265616479206265656e20696e6974696181526020017f6c697a656400000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6001806000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008273ffffffffffffffffffffffffffffffffffffffff16141515613bf957613b8482825a613c16565b1515613bf8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f436f756c64206e6f742066696e69736820696e697469616c697a6174696f6e0081525060200191505060405180910390fd5b5b5050565b6000806000845160208601878987f19050949350505050565b60008060008451602086018786f490509392505050565b60008151602083016000f090509190505600a165627a7a72305820222ec0cbb1dc5a7c0c570f770cbbb4bbcf1d7c62befbfacf1bfe99b26012df1b0029", + "deployedBytecode": "0x608060405260043610610128576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063153414fa1461012a57806324cd131f146101d45780632b5000411461027e5780632f54bf6e14610344578063468721a71461039f578063610b5925146104575780637de7edef1461049a57806385e332cd146104dd57806386040aa9146105345780638cff6355146105a4578063a04222e1146105fb578063a09e89f5146106d4578063a0e67e2b14610739578063a3f4df7e146107a5578063b2494df314610835578063b7f3358d146108a1578063b91a667f146108d1578063e009cfde14610921578063e318b52b14610984578063e52cb36a14610a07578063e75235b814610a50578063ffa1ad7414610a81575b005b34801561013657600080fd5b506101d2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919080359060200190929190505050610b11565b005b3480156101e057600080fd5b5061027c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919080359060200190929190505050610d39565b005b34801561028a57600080fd5b50610326600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919080359060200190929190505050610efa565b60405180826000191660001916815260200191505060405180910390f35b34801561035057600080fd5b50610385600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611182565b604051808215151515815260200191505060405180910390f35b3480156103ab57600080fd5b5061043d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190505050611204565b604051808215151515815260200191505060405180910390f35b34801561046357600080fd5b50610498600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611330565b005b3480156104a657600080fd5b506104db600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061170e565b005b3480156104e957600080fd5b506104f26118cf565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561054057600080fd5b506105a2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff1690602001909291905050506118d4565b005b3480156105b057600080fd5b506105b9611d07565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561060757600080fd5b506106d260048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803560ff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050611d0c565b005b3480156106e057600080fd5b506107236004803603810190808035600019169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611d26565b6040518082815260200191505060405180910390f35b34801561074557600080fd5b5061074e611d4b565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610791578082015181840152602081019050610776565b505050509050019250505060405180910390f35b3480156107b157600080fd5b506107ba611ee6565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156107fa5780820151818401526020810190506107df565b50505050905090810190601f1680156108275780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561084157600080fd5b5061084a611f1f565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561088d578082015181840152602081019050610872565b505050509050019250505060405180910390f35b3480156108ad57600080fd5b506108cf600480360381019080803560ff1690602001909291905050506121c6565b005b3480156108dd57600080fd5b5061091f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff1690602001909291905050506123f2565b005b34801561092d57600080fd5b50610982600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061280b565b005b34801561099057600080fd5b50610a05600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612b5c565b005b348015610a1357600080fd5b50610a3660048036038101908080356000191690602001909291905050506130e1565b604051808215151515815260200191505060405180910390f35b348015610a5c57600080fd5b50610a65613101565b604051808260ff1660ff16815260200191505060405180910390f35b348015610a8d57600080fd5b50610a96613118565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610ad6578082015181840152602081019050610abb565b50505050905090810190601f168015610b035780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b600080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151515610c00576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f53656e646572206973206e6f7420616e206f776e65720000000000000000000081525060200191505060405180910390fd5b610c0d8686868686610efa565b905060056000826000191660001916815260200190815260200160002060009054906101000a900460ff16151515610cd3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f53616665207472616e73616374696f6e20616c7265616479206578656375746581526020017f640000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600160066000836000191660001916815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050505050565b6000610d488686868686610efa565b905060056000826000191660001916815260200190815260200160002060009054906101000a900460ff16151515610e0e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f53616665207472616e73616374696f6e20616c7265616479206578656375746581526020017f640000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b610e1781613151565b600160056000836000191660001916815260200190815260200160002060006101000a81548160ff021916908315150217905550610e58868686865a6133df565b1515610ef2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001807f436f756c64206e6f7420657865637574652073616665207472616e736163746981526020017f6f6e00000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b505050505050565b600060197f01000000000000000000000000000000000000000000000000000000000000000260007f01000000000000000000000000000000000000000000000000000000000000000230888888888860405160200180897effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101887effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140185815260200184805190602001908083835b60208310151561109e5780518252602082019150602081019050602083039250611079565b6001836020036101000a0380198251168184511680821785525050505050509050018360028111156110cc57fe5b60ff167f0100000000000000000000000000000000000000000000000000000000000000028152600101828152602001985050505050505050506040516020818303038152906040526040518082805190602001908083835b60208310151561114a5780518252602082019150602081019050602083039250611125565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020905095945050505050565b600080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600080600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151515611319576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d206181526020017f6e20656e61626c6564206d6f64756c650000000000000000000000000000000081525060400191505060405180910390fd5b611326858585855a6133df565b9050949350505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156113f9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415801561144d5750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b15156114c1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f496e76616c6964206d6f64756c6520616464726573732070726f76696465640081525060200191505060405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156115ae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4d6f64756c652068617320616c7265616479206265656e20616464656400000081525060200191505060405180910390fd5b60016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156117d7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561188c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f496e76616c6964206d617374657220636f707920616464726573732070726f7681526020017f696465640000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600181565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561199d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b8060ff1660016003540310151515611a43576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260358152602001807f4e6577206f776e657220636f756e74206e6565647320746f206265206c61726781526020017f6572207468616e206e6577207468726573686f6c64000000000000000000000081525060400191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611b6b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f496e76616c696420707265764f776e65722c206f776e6572207061697220707281526020017f6f7669646564000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360008154809291906001900391905055508060ff16600460009054906101000a900460ff1660ff16141515611d0257611d01816121c6565b5b505050565b600181565b611d1684846134dc565b611d2082826139c6565b50505050565b6006602052816000526040600020602052806000526040600020600091509150505481565b606080600080600354604051908082528060200260200182016040528015611d825781602001602082028038833980820191505090505b5092506000915060026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515611edd57808383815181101515611e3257fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508180600101925050611ded565b82935050505090565b6040805190810160405280601881526020017f476e6f7369732053616665205465616d2045646974696f6e000000000000000081525081565b606060008060606000925060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151561203357600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508280600101935050611f8e565b826040519080825280602002602001820160405280156120625781602001602082028038833980820191505090505b5090506000925060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415156121bd5781818481518110151561211257fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915082806001019350506120cd565b80935050505090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561228f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b6003548160ff1611151515612332576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f5468726573686f6c642063616e6e6f7420657863656564206f776e657220636f81526020017f756e74000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60018160ff16101515156123d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f5468726573686f6c64206e6565647320746f206265206772656174657220746881526020017f616e20300000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b80600460006101000a81548160ff021916908360ff16021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156124bb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff161415801561250f5750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1515612583576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612670576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4164647265737320697320616c726561647920616e206f776e6572000000000081525060200191505060405180910390fd5b60026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506003600081548092919060010191905055508060ff16600460009054906101000a900460ff1660ff1614151561280757612806816121c6565b5b5050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156128d4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156129fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001807f496e76616c696420707265764d6f64756c652c206d6f64756c6520706169722081526020017f70726f766964656400000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612c25576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614158015612c795750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1515612ced576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612dda576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4164647265737320697320616c726561647920616e206f776e6572000000000081525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612f02576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f496e76616c696420707265764f776e65722c206f776e6572207061697220707281526020017f6f7669646564000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b60056020528060005260406000206000915054906101000a900460ff1681565b6000600460009054906101000a900460ff16905090565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b60008060008060066000866000191660001916815260200190815260200160002093506000925060026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151561334e5760008460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054141590503373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148061328e5750805b156132e75780156132de5760008460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b82806001019350505b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691506131dc565b600460009054906101000a900460ff1660ff1683101515156133d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f4e6f7420656e6f75676820636f6e6669726d6174696f6e73000000000000000081525060200191505060405180910390fd5b5050505050565b600080600060028111156133ef57fe5b8460028111156133fb57fe5b14156134145761340d87878786613bfd565b91506134d2565b6001600281111561342157fe5b84600281111561342d57fe5b14156134455761343e878685613c16565b91506134d1565b61344e85613c2d565b905060008173ffffffffffffffffffffffffffffffffffffffff16141591507f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b5b5095945050505050565b600080600080600460009054906101000a900460ff1660ff1614151561356a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f4f776e657273206861766520616c7265616479206265656e207365747570000081525060200191505060405180910390fd5b84518460ff161115151561360c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f5468726573686f6c642063616e6e6f7420657863656564206f776e657220636f81526020017f756e74000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60018460ff16101515156136ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f5468726573686f6c64206e6565647320746f206265206772656174657220746881526020017f616e20300000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60019250600091505b845182101561391d5784828151811015156136ce57fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff161415801561372e5750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b15156137a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561388f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4475706c6963617465206f776e657220616464726573732070726f766964656481525060200191505060405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080925081806001019250506136b7565b6001600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550845160038190555083600460006101000a81548160ff021916908360ff1602179055505050505050565b600060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515613ada576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f4d6f64756c6573206861766520616c7265616479206265656e20696e6974696181526020017f6c697a656400000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6001806000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008273ffffffffffffffffffffffffffffffffffffffff16141515613bf957613b8482825a613c16565b1515613bf8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f436f756c64206e6f742066696e69736820696e697469616c697a6174696f6e0081525060200191505060405180910390fd5b5b5050565b6000806000845160208601878987f19050949350505050565b60008060008451602086018786f490509392505050565b60008151602083016000f090509190505600a165627a7a72305820222ec0cbb1dc5a7c0c570f770cbbb4bbcf1d7c62befbfacf1bfe99b26012df1b0029", + "sourceMap": "272:4060:4:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;272:4060:4;;;;;;;", + "deployedSourceMap": "272:4060:4:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1263:634;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1263:634:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2339:617;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2339:617:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4001:329;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4001:329:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5374:129:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5374:129:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2710:429:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2710:429:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1311:459;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1311:459:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;626:248:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;626:248:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;499:55:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;499:55:8;;;;;;;;;;;;;;;;;;;;;;;;;;;3024:672:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3024:672:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;287:54;;8:9:-1;5:2;;;30:1;27;20:12;5:2;287:54:9;;;;;;;;;;;;;;;;;;;;;;;;;;;693:301:2;;8:9:-1;5:2;;;30:1;27;20:12;5:2;693:301:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;767:66:4;;8:9:-1;5:2;;;30:1;27;20:12;5:2;767:66:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5585:458:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5585:458:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;5585:458:9;;;;;;;;;;;;;;;;;336:56:4;;8:9:-1;5:2;;;30:1;27;20:12;5:2;336:56:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;336:56:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4663:738:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4663:738:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;4663:738:8;;;;;;;;;;;;;;;;;4852:397:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4852:397:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;2089:593;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2089:593:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2031:343:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2031:343:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4030:633:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4030:633:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;536:43:4;;8:9:-1;5:2;;;30:1;27;20:12;5:2;536:43:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5255:113:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5255:113:9;;;;;;;;;;;;;;;;;;;;;;;;;;;398:40:4;;8:9:-1;5:2;;;30:1;27;20:12;5:2;398:40:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;398:40:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1263:634;1602:23;1564:1;1542:6;:18;1549:10;1542:18;;;;;;;;;;;;;;;;;;;;;;;;;:23;;;;1534:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1628:53;1647:2;1651:5;1658:4;1664:9;1675:5;1628:18;:53::i;:::-;1602:79;;1772:10;:27;1783:15;1772:27;;;;;;;;;;;;;;;;;;;;;;;;;;;1771:28;1763:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1889:1;1847:10;:27;1858:15;1847:27;;;;;;;;;;;;;;;;;:39;1875:10;1847:39;;;;;;;;;;;;;;;:43;;;;1263:634;;;;;;:::o;2339:617::-;2533:23;2559:53;2578:2;2582:5;2589:4;2595:9;2606:5;2559:18;:53::i;:::-;2533:79;;2631:10;:27;2642:15;2631:27;;;;;;;;;;;;;;;;;;;;;;;;;;;2630:28;2622:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2706:43;2733:15;2706:26;:43::i;:::-;2842:4;2812:10;:27;2823:15;2812:27;;;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;2864:46;2872:2;2876:5;2883:4;2889:9;2900;2864:7;:46::i;:::-;2856:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2339:617;;;;;;:::o;4001:329::-;4204:7;4266:4;4261:10;;4278:1;4273:7;;4282:4;4288:2;4292:5;4299:4;4305:9;4316:5;4244:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;;;4244:78:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;4244:78:4;;;4234:89;;;;;;;;;;;;;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;;;4234:89:4;;;;;;;;;;;;;;;;4227:96;;4001:329;;;;;;;:::o;5374:129:9:-;5451:4;5495:1;5478:6;:13;5485:5;5478:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;;5471:25;;5374:129;;;:::o;2710:429:8:-;2842:12;2950:1;2927:7;:19;2935:10;2927:19;;;;;;;;;;;;;;;;;;;;;;;;;:24;;;;2919:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3086:46;3094:2;3098:5;3105:4;3111:9;3122;3086:7;:46::i;:::-;3076:56;;2710:429;;;;;;:::o;1311:459::-;244:4:13;222:27;;:10;:27;;;214:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1477:1:8;1466:6;1458:20;;;;:59;;;;;550:3;1482:35;;1490:6;1482:35;;;;1458:59;1450:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1631:1;1612:7;:15;1620:6;1612:15;;;;;;;;;;;;;;;;;;;;;;;;;:20;;;1604:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1694:7;:25;550:3;1694:25;;;;;;;;;;;;;;;;;;;;;;;;;1676:7;:15;1684:6;1676:15;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;1757:6;1729:7;:25;550:3;1729:25;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;1311:459;:::o;626:248:5:-;244:4:13;222:27;;:10;:27;;;214:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;791:1:5;776:11;:16;;;;768:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;856:11;843:10;;:24;;;;;;;;;;;;;;;;;;626:248;:::o;499:55:8:-;550:3;499:55;:::o;3024:672:9:-;244:4:13;222:27;;:10;:27;;;214:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3248:10:9;3230:28;;3243:1;3230:10;;:14;:28;;3222:94;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3417:5;3396:26;;:6;:17;3403:9;3396:17;;;;;;;;;;;;;;;;;;;;;;;;;:26;;;3388:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3495:6;:13;3502:5;3495:13;;;;;;;;;;;;;;;;;;;;;;;;;3475:6;:17;3482:9;3475:17;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;3534:1;3518:6;:13;3525:5;3518:13;;;;;;;;;;;;;;;;:17;;;;;;;;;;;;;;;;;;3545:10;;:12;;;;;;;;;;;;;;3638:10;3625:23;;:9;;;;;;;;;;;:23;;;;3621:68;;;3662:27;3678:10;3662:15;:27::i;:::-;3621:68;3024:672;;;:::o;287:54::-;337:3;287:54;:::o;693:301:2:-;798:32;810:7;819:10;798:11;:32::i;:::-;965:22;978:2;982:4;965:12;:22::i;:::-;693:301;;;;:::o;767:66:4:-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5585:458:9:-;5651:9;5676:22;5770:13;5797:20;5715:10;;5701:25;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;5701:25:9;;;;5676:50;;5786:1;5770:17;;5820:6;:23;337:3;5820:23;;;;;;;;;;;;;;;;;;;;;;;;;5797:46;;5853:162;337:3;5859:31;;:12;:31;;;;5853:162;;;5921:12;5906:5;5912;5906:12;;;;;;;;;;;;;;;;;:27;;;;;;;;;;;5962:6;:20;5969:12;5962:20;;;;;;;;;;;;;;;;;;;;;;;;;5947:35;;5996:8;;;;;;;5853:162;;;6031:5;6024:12;;5585:458;;;;:::o;336:56:4:-;;;;;;;;;;;;;;;;;;;;:::o;4663:738:8:-;4730:9;4789:19;4822:21;5022:22;4811:1;4789:23;;4846:7;:25;550:3;4846:25;;;;;;;;;;;;;;;;;;;;;;;;;4822:49;;4881:132;550:3;4887:33;;:13;:33;;;;4881:132;;;4952:7;:22;4960:13;4952:22;;;;;;;;;;;;;;;;;;;;;;;;;4936:38;;4988:14;;;;;;;4881:132;;;5061:11;5047:26;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;5047:26:8;;;;5022:51;;5131:1;5117:15;;5158:7;:25;550:3;5158:25;;;;;;;;;;;;;;;;;;;;;;;;;5142:41;;5193:180;550:3;5199:33;;:13;:33;;;;5193:180;;;5269:13;5248:5;5254:11;5248:18;;;;;;;;;;;;;;;;;:34;;;;;;;;;;;5312:7;:22;5320:13;5312:22;;;;;;;;;;;;;;;;;;;;;;;;;5296:38;;5348:14;;;;;;;5193:180;;;5389:5;5382:12;;4663:738;;;;:::o;4852:397:9:-;244:4:13;222:27;;:10;:27;;;214:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5034:10:9;;5020;:24;;;;5012:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5168:1;5154:10;:15;;;;5146:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5232:10;5220:9;;:22;;;;;;;;;;;;;;;;;;4852:397;:::o;2089:593::-;244:4:13;222:27;;:10;:27;;;214:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2259:1:9;2250:5;:10;;;;:38;;;;;337:3;2264:24;;:5;:24;;;;2250:38;2242:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2398:1;2381:6;:13;2388:5;2381:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;2373:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2457:6;:23;337:3;2457:23;;;;;;;;;;;;;;;;;;;;;;;;;2441:6;:13;2448:5;2441:13;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;2516:5;2490:6;:23;337:3;2490:23;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;2531:10;;:12;;;;;;;;;;;;;2624:10;2611:23;;:9;;;;;;;;;;;:23;;;;2607:68;;;2648:27;2664:10;2648:15;:27::i;:::-;2607:68;2089:593;;:::o;2031:343:8:-;244:4:13;222:27;;:10;:27;;;214:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2239:6:8;2208:38;;:7;:19;2216:10;2208:19;;;;;;;;;;;;;;;;;;;;;;;;;:38;;;2200:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2323:7;:15;2331:6;2323:15;;;;;;;;;;;;;;;;;;;;;;;;;2301:7;:19;2309:10;2301:19;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;2366:1;2348:7;:15;2356:6;2348:15;;;;;;;;;;;;;;;;:19;;;;;;;;;;;;;;;;;;2031:343;;:::o;4030:633:9:-;244:4:13;222:27;;:10;:27;;;214:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4213:1:9;4201:8;:13;;;;:44;;;;;337:3;4218:27;;:8;:27;;;;4201:44;4193:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4358:1;4338:6;:16;4345:8;4338:16;;;;;;;;;;;;;;;;;;;;;;;;;:21;;;4330:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4492:8;4471:29;;:6;:17;4478:9;4471:17;;;;;;;;;;;;;;;;;;;;;;;;;:29;;;4463:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4572:6;:16;4579:8;4572:16;;;;;;;;;;;;;;;;;;;;;;;;;4553:6;:16;4560:8;4553:16;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;4618:8;4598:6;:17;4605:9;4598:17;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;4655:1;4636:6;:16;4643:8;4636:16;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;4030:633;;;:::o;536:43:4:-;;;;;;;;;;;;;;;;;;;;;;:::o;5255:113:9:-;5324:5;5352:9;;;;;;;;;;;5345:16;;5255:113;:::o;398:40:4:-;;;;;;;;;;;;;;;;;;;;:::o;2962:761::-;3054:37;3131:21;3208:20;3318:19;3094:10;:27;3105:15;3094:27;;;;;;;;;;;;;;;;;3054:67;;3155:1;3131:25;;3231:6;:23;337:3:9;3231:23:4;;;;;;;;;;;;;;;;;;;;;;;;;3208:46;;3264:380;337:3:9;3271:31:4;;:12;:31;;;;3264:380;;;3367:1;3340:9;:23;3350:12;3340:23;;;;;;;;;;;;;;;;:28;;3318:50;;3401:10;3385:26;;:12;:26;;;:44;;;;3415:14;3385:44;3382:203;;;3453:14;3449:88;;;3517:1;3491:9;:23;3501:12;3491:23;;;;;;;;;;;;;;;:27;;;;3449:88;3554:16;;;;;;;3382:203;3613:6;:20;3620:12;3613:20;;;;;;;;;;;;;;;;;;;;;;;;;3598:35;;3264:380;;;3678:9;;;;;;;;;;;3661:26;;:13;:26;;3653:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2962:761;;;;;:::o;3145:548:8:-;3276:12;3547:19;3321;3308:32;;;;;;;;:9;:32;;;;;;;;;3304:383;;;3364:35;3376:2;3380:5;3387:4;3393:5;3364:11;:35::i;:::-;3354:45;;3304:383;;;3431:27;3418:40;;;;;;;;:9;:40;;;;;;;;;3414:273;;;3482:36;3502:2;3506:4;3512:5;3482:19;:36::i;:::-;3472:46;;3414:273;;;3569:19;3583:4;3569:13;:19::i;:::-;3547:41;;3627:1;3612:11;:16;;;;3602:26;;3647:29;3664:11;3647:29;;;;;;;;;;;;;;;;;;;;;;3414:273;3304:383;3145:548;;;;;;;;:::o;641:1208:9:-;1245:20;1298:9;1397:13;875:1;862:9;;;;;;;;;;;:14;;;854:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1018:7;:14;1004:10;:28;;;;996:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1156:1;1142:10;:15;;;;1134:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;337:3;1245:38;;1310:1;1298:13;;1293:433;1317:7;:14;1313:1;:18;1293:433;;;1413:7;1421:1;1413:10;;;;;;;;;;;;;;;;;;1397:26;;1454:1;1445:5;:10;;;;:38;;;;;337:3;1459:24;;:5;:24;;;;1445:38;1437:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1601:1;1584:6;:13;1591:5;1584:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;1576:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1676:5;1653:6;:20;1660:12;1653:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;1710:5;1695:20;;1333:3;;;;;;;1293:433;;;337:3;1735:6;:20;1742:12;1735:20;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;1796:7;:14;1783:10;:27;;;;1832:10;1820:9;;:22;;;;;;;;;;;;;;;;;;641:1208;;;;;:::o;735:409:8:-;849:1;820:7;:25;550:3;820:25;;;;;;;;;;;;;;;;;;;;;;;;;:30;;;812:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;550:3;902:7;:25;550:3;902:25;;;;;;;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;966:1;960:2;:7;;;;956:181;;;1061:40;1081:2;1085:4;1091:9;1061:19;:40::i;:::-;1053:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;956:181;735:409;;:::o;3699:309::-;3808:12;3990:1;3987;3980:4;3974:11;3967:4;3961;3957:15;3950:5;3946:2;3939:5;3934:58;3923:69;;3909:93;;;;;;:::o;4014:303::-;4116:12;4299:1;4296;4289:4;4283:11;4276:4;4270;4266:15;4262:2;4255:5;4242:59;4231:70;;4217:94;;;;;:::o;4323:261::-;4392:19;4562:4;4556:11;4549:4;4543;4539:15;4536:1;4529:39;4514:54;;4500:78;;;:::o", + "source": "pragma solidity 0.4.24;\nimport \"./GnosisSafe.sol\";\nimport \"./MasterCopy.sol\";\n\n\n/// @title Gnosis Safe Team Edition - A multisignature wallet with support for confirmations.\n/// @author Stefan George - \n/// @author Richard Meissner - \ncontract GnosisSafeTeamEdition is MasterCopy, GnosisSafe {\n\n string public constant NAME = \"Gnosis Safe Team Edition\";\n string public constant VERSION = \"0.0.1\";\n\n // isExecuted mapping allows to check if a transaction (by hash) was already executed.\n mapping (bytes32 => bool) public isExecuted;\n\n // isApproved mapping allows to check if a transaction (by hash) was confirmed by an owner.\n // uint256 is used to optimize the generated assembly. if 0 then false else true\n mapping (bytes32 => mapping(address => uint256)) public isApproved;\n\n /// @dev Allows to confirm a Safe transaction with a regular transaction.\n /// This can only be done from an owner address.\n /// @param to Destination address of Safe transaction.\n /// @param value Ether value of Safe transaction.\n /// @param data Data payload of Safe transaction.\n /// @param operation Operation type of Safe transaction.\n /// @param nonce Nonce used for this Safe transaction.\n function approveTransactionWithParameters(\n address to, \n uint256 value, \n bytes data, \n Enum.Operation operation, \n uint256 nonce\n )\n public\n {\n // Only Safe owners are allowed to confirm Safe transactions.\n require(owners[msg.sender] != 0, \"Sender is not an owner\");\n bytes32 transactionHash = getTransactionHash(to, value, data, operation, nonce);\n // It should not be possible to confirm an executed transaction\n require(!isExecuted[transactionHash], \"Safe transaction already executed\");\n isApproved[transactionHash][msg.sender] = 1;\n }\n\n /// @dev Allows to execute a Safe transaction confirmed by required number of owners. If the sender is an owner this is automatically confirmed.\n /// @param to Destination address of Safe transaction.\n /// @param value Ether value of Safe transaction.\n /// @param data Data payload of Safe transaction.\n /// @param operation Operation type of Safe transaction.\n /// @param nonce Nonce used for this Safe transaction.\n function execTransactionIfApproved(\n address to, \n uint256 value, \n bytes data, \n Enum.Operation operation, \n uint256 nonce\n )\n public\n {\n bytes32 transactionHash = getTransactionHash(to, value, data, operation, nonce);\n require(!isExecuted[transactionHash], \"Safe transaction already executed\");\n checkAndClearConfirmations(transactionHash);\n // Mark as executed and execute transaction.\n isExecuted[transactionHash] = true;\n require(execute(to, value, data, operation, gasleft()), \"Could not execute safe transaction\");\n }\n\n function checkAndClearConfirmations(bytes32 transactionHash)\n internal\n {\n mapping(address => uint256) approvals = isApproved[transactionHash];\n uint256 confirmations = 0;\n // Validate threshold is reached.\n address currentOwner = owners[SENTINEL_OWNERS];\n while (currentOwner != SENTINEL_OWNERS) {\n bool ownerConfirmed = approvals[currentOwner] != 0;\n if(currentOwner == msg.sender || ownerConfirmed) {\n if (ownerConfirmed) {\n approvals[currentOwner] = 0;\n }\n confirmations ++;\n }\n currentOwner = owners[currentOwner];\n }\n require(confirmations >= threshold, \"Not enough confirmations\");\n }\n\n /// @dev Returns hash to be signed by owners.\n /// @param to Destination address.\n /// @param value Ether value.\n /// @param data Data payload.\n /// @param operation Operation type.\n /// @param nonce Transaction nonce.\n /// @return Transaction hash.\n function getTransactionHash(\n address to, \n uint256 value, \n bytes data, \n Enum.Operation operation, \n uint256 nonce\n )\n public\n view\n returns (bytes32)\n {\n return keccak256(abi.encodePacked(byte(0x19), byte(0), this, to, value, data, operation, nonce));\n }\n}\n", "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafeTeamEdition.sol", "ast": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafeTeamEdition.sol", "exportedSymbols": { "GnosisSafeTeamEdition": [ - 626 + 635 ] }, - "id": 627, + "id": 636, "nodeType": "SourceUnit", "nodes": [ { - "id": 399, + "id": 403, "literals": [ "solidity", "0.4", @@ -481,9 +481,9 @@ { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafe.sol", "file": "./GnosisSafe.sol", - "id": 400, + "id": 404, "nodeType": "ImportDirective", - "scope": 627, + "scope": 636, "sourceUnit": 64, "src": "24:26:4", "symbolAliases": [], @@ -492,10 +492,10 @@ { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/MasterCopy.sol", "file": "./MasterCopy.sol", - "id": 401, + "id": 405, "nodeType": "ImportDirective", - "scope": 627, - "sourceUnit": 653, + "scope": 636, + "sourceUnit": 663, "src": "51:26:4", "symbolAliases": [], "unitAlias": "" @@ -506,17 +506,17 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 402, + "id": 406, "name": "MasterCopy", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 652, + "referencedDeclaration": 662, "src": "306:10:4", "typeDescriptions": { - "typeIdentifier": "t_contract$_MasterCopy_$652", + "typeIdentifier": "t_contract$_MasterCopy_$662", "typeString": "contract MasterCopy" } }, - "id": 403, + "id": 407, "nodeType": "InheritanceSpecifier", "src": "306:10:4" }, @@ -524,7 +524,7 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 404, + "id": 408, "name": "GnosisSafe", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 63, @@ -534,39 +534,39 @@ "typeString": "contract GnosisSafe" } }, - "id": 405, + "id": 409, "nodeType": "InheritanceSpecifier", "src": "318:10:4" } ], "contractDependencies": [ 63, - 652, - 1100, - 1472, - 1619 + 662, + 1118, + 1504, + 1654 ], "contractKind": "contract", "documentation": "@title Gnosis Safe Team Edition - A multisignature wallet with support for confirmations.\n @author Stefan George - \n @author Richard Meissner - ", "fullyImplemented": true, - "id": 626, + "id": 635, "linearizedBaseContracts": [ - 626, + 635, 63, - 1472, - 1100, - 652, - 1619 + 1504, + 1118, + 662, + 1654 ], "name": "GnosisSafeTeamEdition", "nodeType": "ContractDefinition", "nodes": [ { "constant": true, - "id": 408, + "id": 412, "name": "NAME", "nodeType": "VariableDeclaration", - "scope": 626, + "scope": 635, "src": "336:56:4", "stateVariable": true, "storageLocation": "default", @@ -575,7 +575,7 @@ "typeString": "string" }, "typeName": { - "id": 406, + "id": 410, "name": "string", "nodeType": "ElementaryTypeName", "src": "336:6:4", @@ -587,7 +587,7 @@ "value": { "argumentTypes": null, "hexValue": "476e6f7369732053616665205465616d2045646974696f6e", - "id": 407, + "id": 411, "isConstant": false, "isLValue": false, "isPure": true, @@ -606,10 +606,10 @@ }, { "constant": true, - "id": 411, + "id": 415, "name": "VERSION", "nodeType": "VariableDeclaration", - "scope": 626, + "scope": 635, "src": "398:40:4", "stateVariable": true, "storageLocation": "default", @@ -618,7 +618,7 @@ "typeString": "string" }, "typeName": { - "id": 409, + "id": 413, "name": "string", "nodeType": "ElementaryTypeName", "src": "398:6:4", @@ -630,7 +630,7 @@ "value": { "argumentTypes": null, "hexValue": "302e302e31", - "id": 410, + "id": 414, "isConstant": false, "isLValue": false, "isPure": true, @@ -649,10 +649,10 @@ }, { "constant": false, - "id": 415, + "id": 419, "name": "isExecuted", "nodeType": "VariableDeclaration", - "scope": 626, + "scope": 635, "src": "536:43:4", "stateVariable": true, "storageLocation": "default", @@ -661,9 +661,9 @@ "typeString": "mapping(bytes32 => bool)" }, "typeName": { - "id": 414, + "id": 418, "keyType": { - "id": 412, + "id": 416, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "545:7:4", @@ -679,7 +679,7 @@ "typeString": "mapping(bytes32 => bool)" }, "valueType": { - "id": 413, + "id": 417, "name": "bool", "nodeType": "ElementaryTypeName", "src": "556:4:4", @@ -694,10 +694,10 @@ }, { "constant": false, - "id": 421, + "id": 425, "name": "isApproved", "nodeType": "VariableDeclaration", - "scope": 626, + "scope": 635, "src": "767:66:4", "stateVariable": true, "storageLocation": "default", @@ -706,9 +706,9 @@ "typeString": "mapping(bytes32 => mapping(address => uint256))" }, "typeName": { - "id": 420, + "id": 424, "keyType": { - "id": 416, + "id": 420, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "776:7:4", @@ -724,9 +724,9 @@ "typeString": "mapping(bytes32 => mapping(address => uint256))" }, "valueType": { - "id": 419, + "id": 423, "keyType": { - "id": 417, + "id": 421, "name": "address", "nodeType": "ElementaryTypeName", "src": "795:7:4", @@ -742,7 +742,7 @@ "typeString": "mapping(address => uint256)" }, "valueType": { - "id": 418, + "id": 422, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "806:7:4", @@ -758,9 +758,9 @@ }, { "body": { - "id": 469, + "id": 475, "nodeType": "Block", - "src": "1454:380:4", + "src": "1454:443:4", "statements": [ { "expression": { @@ -772,7 +772,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 440, + "id": 444, "isConstant": false, "isLValue": false, "isPure": false, @@ -781,34 +781,34 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 435, + "id": 439, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1114, + "referencedDeclaration": 1132, "src": "1542:6:4", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 438, + "id": 442, "indexExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 436, + "id": 440, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2598, + "referencedDeclaration": 2654, "src": "1549:3:4", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 437, + "id": 441, "isConstant": false, "isLValue": false, "isPure": false, @@ -838,7 +838,7 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 439, + "id": 443, "isConstant": false, "isLValue": false, "isPure": true, @@ -858,6 +858,24 @@ "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "53656e646572206973206e6f7420616e206f776e6572", + "id": 445, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1567:24:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_b22a5f47ffb62866097c90f90b5b53f76973769c84a10c62e12a07eb2ba1ef4a", + "typeString": "literal_string \"Sender is not an owner\"" + }, + "value": "Sender is not an owner" } ], "expression": { @@ -865,23 +883,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_b22a5f47ffb62866097c90f90b5b53f76973769c84a10c62e12a07eb2ba1ef4a", + "typeString": "literal_string \"Sender is not an owner\"" } ], - "id": 434, + "id": 438, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, + "referencedDeclaration": 2658, "src": "1534:7:4", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 441, + "id": 446, "isConstant": false, "isLValue": false, "isPure": false, @@ -889,28 +911,28 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1534:32:4", + "src": "1534:58:4", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 442, + "id": 447, "nodeType": "ExpressionStatement", - "src": "1534:32:4" + "src": "1534:58:4" }, { "assignments": [ - 444 + 449 ], "declarations": [ { "constant": false, - "id": 444, + "id": 449, "name": "transactionHash", "nodeType": "VariableDeclaration", - "scope": 470, - "src": "1576:23:4", + "scope": 476, + "src": "1602:23:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -918,10 +940,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 443, + "id": 448, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "1576:7:4", + "src": "1602:7:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -931,18 +953,18 @@ "visibility": "internal" } ], - "id": 452, + "id": 457, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 446, + "id": 451, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 423, - "src": "1621:2:4", + "referencedDeclaration": 427, + "src": "1647:2:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -950,12 +972,12 @@ }, { "argumentTypes": null, - "id": 447, + "id": 452, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 425, - "src": "1625:5:4", + "referencedDeclaration": 429, + "src": "1651:5:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -963,12 +985,12 @@ }, { "argumentTypes": null, - "id": 448, + "id": 453, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 427, - "src": "1632:4:4", + "referencedDeclaration": 431, + "src": "1658:4:4", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -976,12 +998,12 @@ }, { "argumentTypes": null, - "id": 449, + "id": 454, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 429, - "src": "1638:9:4", + "referencedDeclaration": 433, + "src": "1664:9:4", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" @@ -989,12 +1011,12 @@ }, { "argumentTypes": null, - "id": 450, + "id": 455, "name": "nonce", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 431, - "src": "1649:5:4", + "referencedDeclaration": 435, + "src": "1675:5:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1024,18 +1046,18 @@ "typeString": "uint256" } ], - "id": 445, + "id": 450, "name": "getTransactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 625, - "src": "1602:18:4", + "referencedDeclaration": 634, + "src": "1628:18:4", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$_t_uint256_$returns$_t_bytes32_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256) view returns (bytes32)" } }, - "id": 451, + "id": 456, "isConstant": false, "isLValue": false, "isPure": false, @@ -1043,14 +1065,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1602:53:4", + "src": "1628:53:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "VariableDeclarationStatement", - "src": "1576:79:4" + "src": "1602:79:4" }, { "expression": { @@ -1058,7 +1080,7 @@ "arguments": [ { "argumentTypes": null, - "id": 457, + "id": 462, "isConstant": false, "isLValue": false, "isPure": false, @@ -1066,31 +1088,31 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "1745:28:4", + "src": "1771:28:4", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 454, + "id": 459, "name": "isExecuted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 415, - "src": "1746:10:4", + "referencedDeclaration": 419, + "src": "1772:10:4", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" } }, - "id": 456, + "id": 461, "indexExpression": { "argumentTypes": null, - "id": 455, + "id": 460, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 444, - "src": "1757:15:4", + "referencedDeclaration": 449, + "src": "1783:15:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1101,7 +1123,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1746:27:4", + "src": "1772:27:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1111,6 +1133,24 @@ "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "53616665207472616e73616374696f6e20616c7265616479206578656375746564", + "id": 463, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1801:35:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_78cc689035dd21cb903fbad8327952ddf83800cf1115919ff1ad2be36eed70db", + "typeString": "literal_string \"Safe transaction already executed\"" + }, + "value": "Safe transaction already executed" } ], "expression": { @@ -1118,23 +1158,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_78cc689035dd21cb903fbad8327952ddf83800cf1115919ff1ad2be36eed70db", + "typeString": "literal_string \"Safe transaction already executed\"" } ], - "id": 453, + "id": 458, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "1737:7:4", + "referencedDeclaration": 2658, + "src": "1763:7:4", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 458, + "id": 464, "isConstant": false, "isLValue": false, "isPure": false, @@ -1142,20 +1186,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1737:37:4", + "src": "1763:74:4", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 459, + "id": 465, "nodeType": "ExpressionStatement", - "src": "1737:37:4" + "src": "1763:74:4" }, { "expression": { "argumentTypes": null, - "id": 467, + "id": 473, "isConstant": false, "isLValue": false, "isPure": false, @@ -1166,26 +1210,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 460, + "id": 466, "name": "isApproved", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 421, - "src": "1784:10:4", + "referencedDeclaration": 425, + "src": "1847:10:4", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_uint256_$_$", "typeString": "mapping(bytes32 => mapping(address => uint256))" } }, - "id": 464, + "id": 470, "indexExpression": { "argumentTypes": null, - "id": 461, + "id": 467, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 444, - "src": "1795:15:4", + "referencedDeclaration": 449, + "src": "1858:15:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1196,29 +1240,29 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1784:27:4", + "src": "1847:27:4", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, - "id": 465, + "id": 471, "indexExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 462, + "id": 468, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2598, - "src": "1812:3:4", + "referencedDeclaration": 2654, + "src": "1875:3:4", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 463, + "id": 469, "isConstant": false, "isLValue": false, "isPure": false, @@ -1226,7 +1270,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1812:10:4", + "src": "1875:10:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1237,7 +1281,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1784:39:4", + "src": "1847:39:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1248,14 +1292,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "31", - "id": 466, + "id": 472, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1826:1:4", + "src": "1889:1:4", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -1263,20 +1307,20 @@ }, "value": "1" }, - "src": "1784:43:4", + "src": "1847:43:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 468, + "id": 474, "nodeType": "ExpressionStatement", - "src": "1784:43:4" + "src": "1847:43:4" } ] }, "documentation": "@dev Allows to confirm a Safe transaction with a regular transaction.\n This can only be done from an owner address.\n @param to Destination address of Safe transaction.\n @param value Ether value of Safe transaction.\n @param data Data payload of Safe transaction.\n @param operation Operation type of Safe transaction.\n @param nonce Nonce used for this Safe transaction.", - "id": 470, + "id": 476, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -1284,15 +1328,15 @@ "name": "approveTransactionWithParameters", "nodeType": "FunctionDefinition", "parameters": { - "id": 432, + "id": 436, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 423, + "id": 427, "name": "to", "nodeType": "VariableDeclaration", - "scope": 470, + "scope": 476, "src": "1314:10:4", "stateVariable": false, "storageLocation": "default", @@ -1301,7 +1345,7 @@ "typeString": "address" }, "typeName": { - "id": 422, + "id": 426, "name": "address", "nodeType": "ElementaryTypeName", "src": "1314:7:4", @@ -1315,10 +1359,10 @@ }, { "constant": false, - "id": 425, + "id": 429, "name": "value", "nodeType": "VariableDeclaration", - "scope": 470, + "scope": 476, "src": "1335:13:4", "stateVariable": false, "storageLocation": "default", @@ -1327,7 +1371,7 @@ "typeString": "uint256" }, "typeName": { - "id": 424, + "id": 428, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1335:7:4", @@ -1341,10 +1385,10 @@ }, { "constant": false, - "id": 427, + "id": 431, "name": "data", "nodeType": "VariableDeclaration", - "scope": 470, + "scope": 476, "src": "1359:10:4", "stateVariable": false, "storageLocation": "default", @@ -1353,7 +1397,7 @@ "typeString": "bytes" }, "typeName": { - "id": 426, + "id": 430, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "1359:5:4", @@ -1367,10 +1411,10 @@ }, { "constant": false, - "id": 429, + "id": 433, "name": "operation", "nodeType": "VariableDeclaration", - "scope": 470, + "scope": 476, "src": "1380:24:4", "stateVariable": false, "storageLocation": "default", @@ -1380,7 +1424,7 @@ }, "typeName": { "contractScope": null, - "id": 428, + "id": 432, "name": "Enum.Operation", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 29, @@ -1395,10 +1439,10 @@ }, { "constant": false, - "id": 431, + "id": 435, "name": "nonce", "nodeType": "VariableDeclaration", - "scope": 470, + "scope": 476, "src": "1415:13:4", "stateVariable": false, "storageLocation": "default", @@ -1407,7 +1451,7 @@ "typeString": "uint256" }, "typeName": { - "id": 430, + "id": 434, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1415:7:4", @@ -1424,35 +1468,35 @@ }, "payable": false, "returnParameters": { - "id": 433, + "id": 437, "nodeType": "ParameterList", "parameters": [], "src": "1454:0:4" }, - "scope": 626, - "src": "1263:571:4", + "scope": 635, + "src": "1263:634:4", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 521, + "id": 529, "nodeType": "Block", - "src": "2460:358:4", + "src": "2523:433:4", "statements": [ { "assignments": [ - 484 + 490 ], "declarations": [ { "constant": false, - "id": 484, + "id": 490, "name": "transactionHash", "nodeType": "VariableDeclaration", - "scope": 522, - "src": "2470:23:4", + "scope": 530, + "src": "2533:23:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1460,10 +1504,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 483, + "id": 489, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "2470:7:4", + "src": "2533:7:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1473,18 +1517,18 @@ "visibility": "internal" } ], - "id": 492, + "id": 498, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 486, + "id": 492, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 472, - "src": "2515:2:4", + "referencedDeclaration": 478, + "src": "2578:2:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1492,12 +1536,12 @@ }, { "argumentTypes": null, - "id": 487, + "id": 493, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 474, - "src": "2519:5:4", + "referencedDeclaration": 480, + "src": "2582:5:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1505,12 +1549,12 @@ }, { "argumentTypes": null, - "id": 488, + "id": 494, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 476, - "src": "2526:4:4", + "referencedDeclaration": 482, + "src": "2589:4:4", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -1518,12 +1562,12 @@ }, { "argumentTypes": null, - "id": 489, + "id": 495, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 478, - "src": "2532:9:4", + "referencedDeclaration": 484, + "src": "2595:9:4", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" @@ -1531,12 +1575,12 @@ }, { "argumentTypes": null, - "id": 490, + "id": 496, "name": "nonce", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 480, - "src": "2543:5:4", + "referencedDeclaration": 486, + "src": "2606:5:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1566,18 +1610,18 @@ "typeString": "uint256" } ], - "id": 485, + "id": 491, "name": "getTransactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 625, - "src": "2496:18:4", + "referencedDeclaration": 634, + "src": "2559:18:4", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$_t_uint256_$returns$_t_bytes32_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256) view returns (bytes32)" } }, - "id": 491, + "id": 497, "isConstant": false, "isLValue": false, "isPure": false, @@ -1585,14 +1629,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2496:53:4", + "src": "2559:53:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "VariableDeclarationStatement", - "src": "2470:79:4" + "src": "2533:79:4" }, { "expression": { @@ -1600,7 +1644,7 @@ "arguments": [ { "argumentTypes": null, - "id": 497, + "id": 503, "isConstant": false, "isLValue": false, "isPure": false, @@ -1608,31 +1652,31 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "2567:28:4", + "src": "2630:28:4", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 494, + "id": 500, "name": "isExecuted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 415, - "src": "2568:10:4", + "referencedDeclaration": 419, + "src": "2631:10:4", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" } }, - "id": 496, + "id": 502, "indexExpression": { "argumentTypes": null, - "id": 495, + "id": 501, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 484, - "src": "2579:15:4", + "referencedDeclaration": 490, + "src": "2642:15:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1643,7 +1687,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2568:27:4", + "src": "2631:27:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1653,6 +1697,24 @@ "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "53616665207472616e73616374696f6e20616c7265616479206578656375746564", + "id": 504, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2660:35:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_78cc689035dd21cb903fbad8327952ddf83800cf1115919ff1ad2be36eed70db", + "typeString": "literal_string \"Safe transaction already executed\"" + }, + "value": "Safe transaction already executed" } ], "expression": { @@ -1660,23 +1722,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_78cc689035dd21cb903fbad8327952ddf83800cf1115919ff1ad2be36eed70db", + "typeString": "literal_string \"Safe transaction already executed\"" } ], - "id": 493, + "id": 499, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "2559:7:4", + "referencedDeclaration": 2658, + "src": "2622:7:4", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 498, + "id": 505, "isConstant": false, "isLValue": false, "isPure": false, @@ -1684,15 +1750,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2559:37:4", + "src": "2622:74:4", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 499, + "id": 506, "nodeType": "ExpressionStatement", - "src": "2559:37:4" + "src": "2622:74:4" }, { "expression": { @@ -1700,12 +1766,12 @@ "arguments": [ { "argumentTypes": null, - "id": 501, + "id": 508, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 484, - "src": "2633:15:4", + "referencedDeclaration": 490, + "src": "2733:15:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1719,18 +1785,18 @@ "typeString": "bytes32" } ], - "id": 500, + "id": 507, "name": "checkAndClearConfirmations", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 591, - "src": "2606:26:4", + "referencedDeclaration": 600, + "src": "2706:26:4", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$returns$__$", "typeString": "function (bytes32)" } }, - "id": 502, + "id": 509, "isConstant": false, "isLValue": false, "isPure": false, @@ -1738,20 +1804,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2606:43:4", + "src": "2706:43:4", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 503, + "id": 510, "nodeType": "ExpressionStatement", - "src": "2606:43:4" + "src": "2706:43:4" }, { "expression": { "argumentTypes": null, - "id": 508, + "id": 515, "isConstant": false, "isLValue": false, "isPure": false, @@ -1760,26 +1826,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 504, + "id": 511, "name": "isExecuted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 415, - "src": "2712:10:4", + "referencedDeclaration": 419, + "src": "2812:10:4", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" } }, - "id": 506, + "id": 513, "indexExpression": { "argumentTypes": null, - "id": 505, + "id": 512, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 484, - "src": "2723:15:4", + "referencedDeclaration": 490, + "src": "2823:15:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1790,7 +1856,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "2712:27:4", + "src": "2812:27:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1801,14 +1867,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 507, + "id": 514, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "2742:4:4", + "src": "2842:4:4", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -1816,15 +1882,15 @@ }, "value": "true" }, - "src": "2712:34:4", + "src": "2812:34:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 509, + "id": 516, "nodeType": "ExpressionStatement", - "src": "2712:34:4" + "src": "2812:34:4" }, { "expression": { @@ -1835,12 +1901,12 @@ "arguments": [ { "argumentTypes": null, - "id": 512, + "id": 519, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 472, - "src": "2772:2:4", + "referencedDeclaration": 478, + "src": "2872:2:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1848,12 +1914,12 @@ }, { "argumentTypes": null, - "id": 513, + "id": 520, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 474, - "src": "2776:5:4", + "referencedDeclaration": 480, + "src": "2876:5:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1861,12 +1927,12 @@ }, { "argumentTypes": null, - "id": 514, + "id": 521, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 476, - "src": "2783:4:4", + "referencedDeclaration": 482, + "src": "2883:4:4", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -1874,12 +1940,12 @@ }, { "argumentTypes": null, - "id": 515, + "id": 522, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 478, - "src": "2789:9:4", + "referencedDeclaration": 484, + "src": "2889:9:4", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" @@ -1890,18 +1956,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 516, + "id": 523, "name": "gasleft", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2591, - "src": "2800:7:4", + "referencedDeclaration": 2647, + "src": "2900:7:4", "typeDescriptions": { "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, - "id": 517, + "id": 524, "isConstant": false, "isLValue": false, "isPure": false, @@ -1909,7 +1975,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2800:9:4", + "src": "2900:9:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1939,18 +2005,18 @@ "typeString": "uint256" } ], - "id": 511, + "id": 518, "name": "execute", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 989, - "src": "2764:7:4", + "referencedDeclaration": 1007, + "src": "2864:7:4", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256) returns (bool)" } }, - "id": 518, + "id": 525, "isConstant": false, "isLValue": false, "isPure": false, @@ -1958,11 +2024,29 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2764:46:4", + "src": "2864:46:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "436f756c64206e6f7420657865637574652073616665207472616e73616374696f6e", + "id": 526, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2912:36:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_d12b254798790cac45e0b54201b0ecf8f3257f9e4c1cfc4633e272006616c878", + "typeString": "literal_string \"Could not execute safe transaction\"" + }, + "value": "Could not execute safe transaction" } ], "expression": { @@ -1970,23 +2054,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_d12b254798790cac45e0b54201b0ecf8f3257f9e4c1cfc4633e272006616c878", + "typeString": "literal_string \"Could not execute safe transaction\"" } ], - "id": 510, + "id": 517, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "2756:7:4", + "referencedDeclaration": 2658, + "src": "2856:7:4", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 519, + "id": 527, "isConstant": false, "isLValue": false, "isPure": false, @@ -1994,20 +2082,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2756:55:4", + "src": "2856:93:4", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 520, + "id": 528, "nodeType": "ExpressionStatement", - "src": "2756:55:4" + "src": "2856:93:4" } ] }, "documentation": "@dev Allows to execute a Safe transaction confirmed by required number of owners. If the sender is an owner this is automatically confirmed.\n @param to Destination address of Safe transaction.\n @param value Ether value of Safe transaction.\n @param data Data payload of Safe transaction.\n @param operation Operation type of Safe transaction.\n @param nonce Nonce used for this Safe transaction.", - "id": 522, + "id": 530, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -2015,16 +2103,16 @@ "name": "execTransactionIfApproved", "nodeType": "FunctionDefinition", "parameters": { - "id": 481, + "id": 487, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 472, + "id": 478, "name": "to", "nodeType": "VariableDeclaration", - "scope": 522, - "src": "2320:10:4", + "scope": 530, + "src": "2383:10:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2032,10 +2120,10 @@ "typeString": "address" }, "typeName": { - "id": 471, + "id": 477, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2320:7:4", + "src": "2383:7:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2046,91 +2134,11 @@ }, { "constant": false, - "id": 474, + "id": 480, "name": "value", "nodeType": "VariableDeclaration", - "scope": 522, - "src": "2341:13:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 473, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2341:7:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 476, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 522, - "src": "2365:10:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 475, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "2365:5:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 478, - "name": "operation", - "nodeType": "VariableDeclaration", - "scope": 522, - "src": "2386:24:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$29", - "typeString": "enum Enum.Operation" - }, - "typeName": { - "contractScope": null, - "id": 477, - "name": "Enum.Operation", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 29, - "src": "2386:14:4", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$29", - "typeString": "enum Enum.Operation" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 480, - "name": "nonce", - "nodeType": "VariableDeclaration", - "scope": 522, - "src": "2421:13:4", + "scope": 530, + "src": "2404:13:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2141,7 +2149,87 @@ "id": 479, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2421:7:4", + "src": "2404:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 482, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 530, + "src": "2428:10:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 481, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2428:5:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 484, + "name": "operation", + "nodeType": "VariableDeclaration", + "scope": 530, + "src": "2449:24:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + }, + "typeName": { + "contractScope": null, + "id": 483, + "name": "Enum.Operation", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 29, + "src": "2449:14:4", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 486, + "name": "nonce", + "nodeType": "VariableDeclaration", + "scope": 530, + "src": "2484:13:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 485, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2484:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2151,39 +2239,39 @@ "visibility": "internal" } ], - "src": "2310:130:4" + "src": "2373:130:4" }, "payable": false, "returnParameters": { - "id": 482, + "id": 488, "nodeType": "ParameterList", "parameters": [], - "src": "2460:0:4" + "src": "2523:0:4" }, - "scope": 626, - "src": "2276:542:4", + "scope": 635, + "src": "2339:617:4", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 590, + "id": 599, "nodeType": "Block", - "src": "2906:651:4", + "src": "3044:679:4", "statements": [ { "assignments": [ - 530 + 538 ], "declarations": [ { "constant": false, - "id": 530, + "id": 538, "name": "approvals", "nodeType": "VariableDeclaration", - "scope": 591, - "src": "2916:37:4", + "scope": 600, + "src": "3054:37:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2191,28 +2279,28 @@ "typeString": "mapping(address => uint256)" }, "typeName": { - "id": 529, + "id": 537, "keyType": { - "id": 527, + "id": 535, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2924:7:4", + "src": "3062:7:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", - "src": "2916:27:4", + "src": "3054:27:4", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" }, "valueType": { - "id": 528, + "id": 536, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2935:7:4", + "src": "3073:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2223,31 +2311,31 @@ "visibility": "internal" } ], - "id": 534, + "id": 542, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 531, + "id": 539, "name": "isApproved", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 421, - "src": "2956:10:4", + "referencedDeclaration": 425, + "src": "3094:10:4", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_uint256_$_$", "typeString": "mapping(bytes32 => mapping(address => uint256))" } }, - "id": 533, + "id": 541, "indexExpression": { "argumentTypes": null, - "id": 532, + "id": 540, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 524, - "src": "2967:15:4", + "referencedDeclaration": 532, + "src": "3105:15:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -2258,27 +2346,27 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2956:27:4", + "src": "3094:27:4", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "nodeType": "VariableDeclarationStatement", - "src": "2916:67:4" + "src": "3054:67:4" }, { "assignments": [ - 536 + 544 ], "declarations": [ { "constant": false, - "id": 536, + "id": 544, "name": "confirmations", "nodeType": "VariableDeclaration", - "scope": 591, - "src": "2993:21:4", + "scope": 600, + "src": "3131:21:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2286,10 +2374,10 @@ "typeString": "uint256" }, "typeName": { - "id": 535, + "id": 543, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2993:7:4", + "src": "3131:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2299,18 +2387,18 @@ "visibility": "internal" } ], - "id": 538, + "id": 546, "initialValue": { "argumentTypes": null, "hexValue": "30", - "id": 537, + "id": 545, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3017:1:4", + "src": "3155:1:4", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -2319,20 +2407,20 @@ "value": "0" }, "nodeType": "VariableDeclarationStatement", - "src": "2993:25:4" + "src": "3131:25:4" }, { "assignments": [ - 540 + 548 ], "declarations": [ { "constant": false, - "id": 540, + "id": 548, "name": "currentOwner", "nodeType": "VariableDeclaration", - "scope": 591, - "src": "3070:20:4", + "scope": 600, + "src": "3208:20:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2340,10 +2428,10 @@ "typeString": "address" }, "typeName": { - "id": 539, + "id": 547, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3070:7:4", + "src": "3208:7:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2353,31 +2441,31 @@ "visibility": "internal" } ], - "id": 544, + "id": 552, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 541, + "id": 549, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1114, - "src": "3093:6:4", + "referencedDeclaration": 1132, + "src": "3231:6:4", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 543, + "id": 551, "indexExpression": { "argumentTypes": null, - "id": 542, + "id": 550, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1110, - "src": "3100:15:4", + "referencedDeclaration": 1128, + "src": "3238:15:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2388,33 +2476,33 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3093:23:4", + "src": "3231:23:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", - "src": "3070:46:4" + "src": "3208:46:4" }, { "body": { - "id": 582, + "id": 590, "nodeType": "Block", - "src": "3166:340:4", + "src": "3304:340:4", "statements": [ { "assignments": [ - 549 + 557 ], "declarations": [ { "constant": false, - "id": 549, + "id": 557, "name": "ownerConfirmed", "nodeType": "VariableDeclaration", - "scope": 591, - "src": "3180:19:4", + "scope": 600, + "src": "3318:19:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2422,10 +2510,10 @@ "typeString": "bool" }, "typeName": { - "id": 548, + "id": 556, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "3180:4:4", + "src": "3318:4:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2435,14 +2523,14 @@ "visibility": "internal" } ], - "id": 555, + "id": 563, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 554, + "id": 562, "isConstant": false, "isLValue": false, "isPure": false, @@ -2451,26 +2539,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 550, + "id": 558, "name": "approvals", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 530, - "src": "3202:9:4", + "referencedDeclaration": 538, + "src": "3340:9:4", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, - "id": 552, + "id": 560, "indexExpression": { "argumentTypes": null, - "id": 551, + "id": 559, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 540, - "src": "3212:12:4", + "referencedDeclaration": 548, + "src": "3350:12:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2481,7 +2569,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3202:23:4", + "src": "3340:23:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2492,14 +2580,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 553, + "id": 561, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3229:1:4", + "src": "3367:1:4", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -2507,14 +2595,14 @@ }, "value": "0" }, - "src": "3202:28:4", + "src": "3340:28:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "VariableDeclarationStatement", - "src": "3180:50:4" + "src": "3318:50:4" }, { "condition": { @@ -2523,7 +2611,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 561, + "id": 569, "isConstant": false, "isLValue": false, "isPure": false, @@ -2534,19 +2622,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 559, + "id": 567, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 556, + "id": 564, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 540, - "src": "3247:12:4", + "referencedDeclaration": 548, + "src": "3385:12:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2558,18 +2646,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 557, + "id": 565, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2598, - "src": "3263:3:4", + "referencedDeclaration": 2654, + "src": "3401:3:4", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 558, + "id": 566, "isConstant": false, "isLValue": false, "isPure": false, @@ -2577,13 +2665,13 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "3263:10:4", + "src": "3401:10:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "3247:26:4", + "src": "3385:26:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2593,59 +2681,59 @@ "operator": "||", "rightExpression": { "argumentTypes": null, - "id": 560, + "id": 568, "name": "ownerConfirmed", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 549, - "src": "3277:14:4", + "referencedDeclaration": 557, + "src": "3415:14:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "3247:44:4", + "src": "3385:44:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 575, + "id": 583, "nodeType": "IfStatement", - "src": "3244:203:4", + "src": "3382:203:4", "trueBody": { - "id": 574, + "id": 582, "nodeType": "Block", - "src": "3293:154:4", + "src": "3431:154:4", "statements": [ { "condition": { "argumentTypes": null, - "id": 562, + "id": 570, "name": "ownerConfirmed", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 549, - "src": "3315:14:4", + "referencedDeclaration": 557, + "src": "3453:14:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 570, + "id": 578, "nodeType": "IfStatement", - "src": "3311:88:4", + "src": "3449:88:4", "trueBody": { - "id": 569, + "id": 577, "nodeType": "Block", - "src": "3331:68:4", + "src": "3469:68:4", "statements": [ { "expression": { "argumentTypes": null, - "id": 567, + "id": 575, "isConstant": false, "isLValue": false, "isPure": false, @@ -2654,26 +2742,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 563, + "id": 571, "name": "approvals", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 530, - "src": "3353:9:4", + "referencedDeclaration": 538, + "src": "3491:9:4", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, - "id": 565, + "id": 573, "indexExpression": { "argumentTypes": null, - "id": 564, + "id": 572, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 540, - "src": "3363:12:4", + "referencedDeclaration": 548, + "src": "3501:12:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2684,7 +2772,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "3353:23:4", + "src": "3491:23:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2695,14 +2783,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "30", - "id": 566, + "id": 574, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3379:1:4", + "src": "3517:1:4", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -2710,15 +2798,15 @@ }, "value": "0" }, - "src": "3353:27:4", + "src": "3491:27:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 568, + "id": 576, "nodeType": "ExpressionStatement", - "src": "3353:27:4" + "src": "3491:27:4" } ] } @@ -2726,7 +2814,7 @@ { "expression": { "argumentTypes": null, - "id": 572, + "id": 580, "isConstant": false, "isLValue": false, "isPure": false, @@ -2734,15 +2822,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "3416:16:4", + "src": "3554:16:4", "subExpression": { "argumentTypes": null, - "id": 571, + "id": 579, "name": "confirmations", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 536, - "src": "3416:13:4", + "referencedDeclaration": 544, + "src": "3554:13:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2753,9 +2841,9 @@ "typeString": "uint256" } }, - "id": 573, + "id": 581, "nodeType": "ExpressionStatement", - "src": "3416:16:4" + "src": "3554:16:4" } ] } @@ -2763,19 +2851,19 @@ { "expression": { "argumentTypes": null, - "id": 580, + "id": 588, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 576, + "id": 584, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 540, - "src": "3460:12:4", + "referencedDeclaration": 548, + "src": "3598:12:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2787,26 +2875,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 577, + "id": 585, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1114, - "src": "3475:6:4", + "referencedDeclaration": 1132, + "src": "3613:6:4", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 579, + "id": 587, "indexExpression": { "argumentTypes": null, - "id": 578, + "id": 586, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 540, - "src": "3482:12:4", + "referencedDeclaration": 548, + "src": "3620:12:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2817,21 +2905,21 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3475:20:4", + "src": "3613:20:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "3460:35:4", + "src": "3598:35:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 581, + "id": 589, "nodeType": "ExpressionStatement", - "src": "3460:35:4" + "src": "3598:35:4" } ] }, @@ -2841,19 +2929,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 547, + "id": 555, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 545, + "id": 553, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 540, - "src": "3133:12:4", + "referencedDeclaration": 548, + "src": "3271:12:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2863,26 +2951,26 @@ "operator": "!=", "rightExpression": { "argumentTypes": null, - "id": 546, + "id": 554, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1110, - "src": "3149:15:4", + "referencedDeclaration": 1128, + "src": "3287:15:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "3133:31:4", + "src": "3271:31:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 583, + "id": 591, "nodeType": "WhileStatement", - "src": "3126:380:4" + "src": "3264:380:4" }, { "expression": { @@ -2894,19 +2982,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 587, + "id": 595, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 585, + "id": 593, "name": "confirmations", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 536, - "src": "3523:13:4", + "referencedDeclaration": 544, + "src": "3661:13:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2916,22 +3004,40 @@ "operator": ">=", "rightExpression": { "argumentTypes": null, - "id": 586, + "id": 594, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1118, - "src": "3540:9:4", + "referencedDeclaration": 1136, + "src": "3678:9:4", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "src": "3523:26:4", + "src": "3661:26:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "4e6f7420656e6f75676820636f6e6669726d6174696f6e73", + "id": 596, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3689:26:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_b345da2aaad39251196728cc7926bed93e890843c2a47c2cdd1122427d828094", + "typeString": "literal_string \"Not enough confirmations\"" + }, + "value": "Not enough confirmations" } ], "expression": { @@ -2939,23 +3045,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_b345da2aaad39251196728cc7926bed93e890843c2a47c2cdd1122427d828094", + "typeString": "literal_string \"Not enough confirmations\"" } ], - "id": 584, + "id": 592, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "3515:7:4", + "referencedDeclaration": 2658, + "src": "3653:7:4", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 588, + "id": 597, "isConstant": false, "isLValue": false, "isPure": false, @@ -2963,20 +3073,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3515:35:4", + "src": "3653:63:4", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 589, + "id": 598, "nodeType": "ExpressionStatement", - "src": "3515:35:4" + "src": "3653:63:4" } ] }, "documentation": null, - "id": 591, + "id": 600, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -2984,16 +3094,16 @@ "name": "checkAndClearConfirmations", "nodeType": "FunctionDefinition", "parameters": { - "id": 525, + "id": 533, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 524, + "id": 532, "name": "transactionHash", "nodeType": "VariableDeclaration", - "scope": 591, - "src": "2860:23:4", + "scope": 600, + "src": "2998:23:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3001,10 +3111,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 523, + "id": 531, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "2860:7:4", + "src": "2998:7:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -3014,26 +3124,26 @@ "visibility": "internal" } ], - "src": "2859:25:4" + "src": "2997:25:4" }, "payable": false, "returnParameters": { - "id": 526, + "id": 534, "nodeType": "ParameterList", "parameters": [], - "src": "2906:0:4" + "src": "3044:0:4" }, - "scope": 626, - "src": "2824:733:4", + "scope": 635, + "src": "2962:761:4", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 624, + "id": 633, "nodeType": "Block", - "src": "4051:113:4", + "src": "4217:113:4", "statements": [ { "expression": { @@ -3048,14 +3158,14 @@ { "argumentTypes": null, "hexValue": "30783139", - "id": 610, + "id": 619, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4100:4:4", + "src": "4266:4:4", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_25_by_1", @@ -3071,20 +3181,20 @@ "typeString": "int_const 25" } ], - "id": 609, + "id": 618, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "4095:4:4", + "src": "4261:4:4", "typeDescriptions": { "typeIdentifier": "t_type$_t_bytes1_$", "typeString": "type(bytes1)" }, "typeName": "byte" }, - "id": 611, + "id": 620, "isConstant": false, "isLValue": false, "isPure": true, @@ -3092,7 +3202,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4095:10:4", + "src": "4261:10:4", "typeDescriptions": { "typeIdentifier": "t_bytes1", "typeString": "bytes1" @@ -3104,14 +3214,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 613, + "id": 622, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4112:1:4", + "src": "4278:1:4", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -3127,20 +3237,20 @@ "typeString": "int_const 0" } ], - "id": 612, + "id": 621, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "4107:4:4", + "src": "4273:4:4", "typeDescriptions": { "typeIdentifier": "t_type$_t_bytes1_$", "typeString": "type(bytes1)" }, "typeName": "byte" }, - "id": 614, + "id": 623, "isConstant": false, "isLValue": false, "isPure": true, @@ -3148,7 +3258,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4107:7:4", + "src": "4273:7:4", "typeDescriptions": { "typeIdentifier": "t_bytes1", "typeString": "bytes1" @@ -3156,25 +3266,25 @@ }, { "argumentTypes": null, - "id": 615, + "id": 624, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2633, - "src": "4116:4:4", + "referencedDeclaration": 2689, + "src": "4282:4:4", "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafeTeamEdition_$626", + "typeIdentifier": "t_contract$_GnosisSafeTeamEdition_$635", "typeString": "contract GnosisSafeTeamEdition" } }, { "argumentTypes": null, - "id": 616, + "id": 625, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 593, - "src": "4122:2:4", + "referencedDeclaration": 602, + "src": "4288:2:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3182,12 +3292,12 @@ }, { "argumentTypes": null, - "id": 617, + "id": 626, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 595, - "src": "4126:5:4", + "referencedDeclaration": 604, + "src": "4292:5:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3195,12 +3305,12 @@ }, { "argumentTypes": null, - "id": 618, + "id": 627, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 597, - "src": "4133:4:4", + "referencedDeclaration": 606, + "src": "4299:4:4", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -3208,12 +3318,12 @@ }, { "argumentTypes": null, - "id": 619, + "id": 628, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 599, - "src": "4139:9:4", + "referencedDeclaration": 608, + "src": "4305:9:4", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" @@ -3221,12 +3331,12 @@ }, { "argumentTypes": null, - "id": 620, + "id": 629, "name": "nonce", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 601, - "src": "4150:5:4", + "referencedDeclaration": 610, + "src": "4316:5:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3244,7 +3354,7 @@ "typeString": "bytes1" }, { - "typeIdentifier": "t_contract$_GnosisSafeTeamEdition_$626", + "typeIdentifier": "t_contract$_GnosisSafeTeamEdition_$635", "typeString": "contract GnosisSafeTeamEdition" }, { @@ -3270,18 +3380,18 @@ ], "expression": { "argumentTypes": null, - "id": 607, + "id": 616, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2585, - "src": "4078:3:4", + "referencedDeclaration": 2641, + "src": "4244:3:4", "typeDescriptions": { "typeIdentifier": "t_magic_abi", "typeString": "abi" } }, - "id": 608, + "id": 617, "isConstant": false, "isLValue": false, "isPure": true, @@ -3289,13 +3399,13 @@ "memberName": "encodePacked", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "4078:16:4", + "src": "4244:16:4", "typeDescriptions": { "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)" } }, - "id": 621, + "id": 630, "isConstant": false, "isLValue": false, "isPure": false, @@ -3303,7 +3413,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4078:78:4", + "src": "4244:78:4", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -3317,18 +3427,18 @@ "typeString": "bytes memory" } ], - "id": 606, + "id": 615, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2592, - "src": "4068:9:4", + "referencedDeclaration": 2648, + "src": "4234:9:4", "typeDescriptions": { "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", "typeString": "function () pure returns (bytes32)" } }, - "id": 622, + "id": 631, "isConstant": false, "isLValue": false, "isPure": false, @@ -3336,21 +3446,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4068:89:4", + "src": "4234:89:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "functionReturnParameters": 605, - "id": 623, + "functionReturnParameters": 614, + "id": 632, "nodeType": "Return", - "src": "4061:96:4" + "src": "4227:96:4" } ] }, "documentation": "@dev Returns hash to be signed by owners.\n @param to Destination address.\n @param value Ether value.\n @param data Data payload.\n @param operation Operation type.\n @param nonce Transaction nonce.\n @return Transaction hash.", - "id": 625, + "id": 634, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -3358,16 +3468,16 @@ "name": "getTransactionHash", "nodeType": "FunctionDefinition", "parameters": { - "id": 602, + "id": 611, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 593, + "id": 602, "name": "to", "nodeType": "VariableDeclaration", - "scope": 625, - "src": "3872:10:4", + "scope": 634, + "src": "4038:10:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3375,10 +3485,10 @@ "typeString": "address" }, "typeName": { - "id": 592, + "id": 601, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3872:7:4", + "src": "4038:7:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3389,11 +3499,11 @@ }, { "constant": false, - "id": 595, + "id": 604, "name": "value", "nodeType": "VariableDeclaration", - "scope": 625, - "src": "3893:13:4", + "scope": 634, + "src": "4059:13:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3401,10 +3511,10 @@ "typeString": "uint256" }, "typeName": { - "id": 594, + "id": 603, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3893:7:4", + "src": "4059:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3415,11 +3525,11 @@ }, { "constant": false, - "id": 597, + "id": 606, "name": "data", "nodeType": "VariableDeclaration", - "scope": 625, - "src": "3917:10:4", + "scope": 634, + "src": "4083:10:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3427,10 +3537,10 @@ "typeString": "bytes" }, "typeName": { - "id": 596, + "id": 605, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "3917:5:4", + "src": "4083:5:4", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -3441,11 +3551,11 @@ }, { "constant": false, - "id": 599, + "id": 608, "name": "operation", "nodeType": "VariableDeclaration", - "scope": 625, - "src": "3938:24:4", + "scope": 634, + "src": "4104:24:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3454,11 +3564,11 @@ }, "typeName": { "contractScope": null, - "id": 598, + "id": 607, "name": "Enum.Operation", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 29, - "src": "3938:14:4", + "src": "4104:14:4", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" @@ -3469,11 +3579,11 @@ }, { "constant": false, - "id": 601, + "id": 610, "name": "nonce", "nodeType": "VariableDeclaration", - "scope": 625, - "src": "3973:13:4", + "scope": 634, + "src": "4139:13:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3481,10 +3591,10 @@ "typeString": "uint256" }, "typeName": { - "id": 600, + "id": 609, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3973:7:4", + "src": "4139:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3494,20 +3604,20 @@ "visibility": "internal" } ], - "src": "3862:130:4" + "src": "4028:130:4" }, "payable": false, "returnParameters": { - "id": 605, + "id": 614, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 604, + "id": 613, "name": "", "nodeType": "VariableDeclaration", - "scope": 625, - "src": "4038:7:4", + "scope": 634, + "src": "4204:7:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3515,10 +3625,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 603, + "id": 612, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "4038:7:4", + "src": "4204:7:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -3528,33 +3638,33 @@ "visibility": "internal" } ], - "src": "4037:9:4" + "src": "4203:9:4" }, - "scope": 626, - "src": "3835:329:4", + "scope": 635, + "src": "4001:329:4", "stateMutability": "view", "superFunction": null, "visibility": "public" } ], - "scope": 627, - "src": "272:3894:4" + "scope": 636, + "src": "272:4060:4" } ], - "src": "0:4167:4" + "src": "0:4333:4" }, "legacyAST": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafeTeamEdition.sol", "exportedSymbols": { "GnosisSafeTeamEdition": [ - 626 + 635 ] }, - "id": 627, + "id": 636, "nodeType": "SourceUnit", "nodes": [ { - "id": 399, + "id": 403, "literals": [ "solidity", "0.4", @@ -3566,9 +3676,9 @@ { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafe.sol", "file": "./GnosisSafe.sol", - "id": 400, + "id": 404, "nodeType": "ImportDirective", - "scope": 627, + "scope": 636, "sourceUnit": 64, "src": "24:26:4", "symbolAliases": [], @@ -3577,10 +3687,10 @@ { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/MasterCopy.sol", "file": "./MasterCopy.sol", - "id": 401, + "id": 405, "nodeType": "ImportDirective", - "scope": 627, - "sourceUnit": 653, + "scope": 636, + "sourceUnit": 663, "src": "51:26:4", "symbolAliases": [], "unitAlias": "" @@ -3591,17 +3701,17 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 402, + "id": 406, "name": "MasterCopy", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 652, + "referencedDeclaration": 662, "src": "306:10:4", "typeDescriptions": { - "typeIdentifier": "t_contract$_MasterCopy_$652", + "typeIdentifier": "t_contract$_MasterCopy_$662", "typeString": "contract MasterCopy" } }, - "id": 403, + "id": 407, "nodeType": "InheritanceSpecifier", "src": "306:10:4" }, @@ -3609,7 +3719,7 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 404, + "id": 408, "name": "GnosisSafe", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 63, @@ -3619,39 +3729,39 @@ "typeString": "contract GnosisSafe" } }, - "id": 405, + "id": 409, "nodeType": "InheritanceSpecifier", "src": "318:10:4" } ], "contractDependencies": [ 63, - 652, - 1100, - 1472, - 1619 + 662, + 1118, + 1504, + 1654 ], "contractKind": "contract", "documentation": "@title Gnosis Safe Team Edition - A multisignature wallet with support for confirmations.\n @author Stefan George - \n @author Richard Meissner - ", "fullyImplemented": true, - "id": 626, + "id": 635, "linearizedBaseContracts": [ - 626, + 635, 63, - 1472, - 1100, - 652, - 1619 + 1504, + 1118, + 662, + 1654 ], "name": "GnosisSafeTeamEdition", "nodeType": "ContractDefinition", "nodes": [ { "constant": true, - "id": 408, + "id": 412, "name": "NAME", "nodeType": "VariableDeclaration", - "scope": 626, + "scope": 635, "src": "336:56:4", "stateVariable": true, "storageLocation": "default", @@ -3660,7 +3770,7 @@ "typeString": "string" }, "typeName": { - "id": 406, + "id": 410, "name": "string", "nodeType": "ElementaryTypeName", "src": "336:6:4", @@ -3672,7 +3782,7 @@ "value": { "argumentTypes": null, "hexValue": "476e6f7369732053616665205465616d2045646974696f6e", - "id": 407, + "id": 411, "isConstant": false, "isLValue": false, "isPure": true, @@ -3691,10 +3801,10 @@ }, { "constant": true, - "id": 411, + "id": 415, "name": "VERSION", "nodeType": "VariableDeclaration", - "scope": 626, + "scope": 635, "src": "398:40:4", "stateVariable": true, "storageLocation": "default", @@ -3703,7 +3813,7 @@ "typeString": "string" }, "typeName": { - "id": 409, + "id": 413, "name": "string", "nodeType": "ElementaryTypeName", "src": "398:6:4", @@ -3715,7 +3825,7 @@ "value": { "argumentTypes": null, "hexValue": "302e302e31", - "id": 410, + "id": 414, "isConstant": false, "isLValue": false, "isPure": true, @@ -3734,10 +3844,10 @@ }, { "constant": false, - "id": 415, + "id": 419, "name": "isExecuted", "nodeType": "VariableDeclaration", - "scope": 626, + "scope": 635, "src": "536:43:4", "stateVariable": true, "storageLocation": "default", @@ -3746,9 +3856,9 @@ "typeString": "mapping(bytes32 => bool)" }, "typeName": { - "id": 414, + "id": 418, "keyType": { - "id": 412, + "id": 416, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "545:7:4", @@ -3764,7 +3874,7 @@ "typeString": "mapping(bytes32 => bool)" }, "valueType": { - "id": 413, + "id": 417, "name": "bool", "nodeType": "ElementaryTypeName", "src": "556:4:4", @@ -3779,10 +3889,10 @@ }, { "constant": false, - "id": 421, + "id": 425, "name": "isApproved", "nodeType": "VariableDeclaration", - "scope": 626, + "scope": 635, "src": "767:66:4", "stateVariable": true, "storageLocation": "default", @@ -3791,9 +3901,9 @@ "typeString": "mapping(bytes32 => mapping(address => uint256))" }, "typeName": { - "id": 420, + "id": 424, "keyType": { - "id": 416, + "id": 420, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "776:7:4", @@ -3809,9 +3919,9 @@ "typeString": "mapping(bytes32 => mapping(address => uint256))" }, "valueType": { - "id": 419, + "id": 423, "keyType": { - "id": 417, + "id": 421, "name": "address", "nodeType": "ElementaryTypeName", "src": "795:7:4", @@ -3827,7 +3937,7 @@ "typeString": "mapping(address => uint256)" }, "valueType": { - "id": 418, + "id": 422, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "806:7:4", @@ -3843,9 +3953,9 @@ }, { "body": { - "id": 469, + "id": 475, "nodeType": "Block", - "src": "1454:380:4", + "src": "1454:443:4", "statements": [ { "expression": { @@ -3857,7 +3967,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 440, + "id": 444, "isConstant": false, "isLValue": false, "isPure": false, @@ -3866,34 +3976,34 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 435, + "id": 439, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1114, + "referencedDeclaration": 1132, "src": "1542:6:4", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 438, + "id": 442, "indexExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 436, + "id": 440, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2598, + "referencedDeclaration": 2654, "src": "1549:3:4", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 437, + "id": 441, "isConstant": false, "isLValue": false, "isPure": false, @@ -3923,7 +4033,7 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 439, + "id": 443, "isConstant": false, "isLValue": false, "isPure": true, @@ -3943,6 +4053,24 @@ "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "53656e646572206973206e6f7420616e206f776e6572", + "id": 445, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1567:24:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_b22a5f47ffb62866097c90f90b5b53f76973769c84a10c62e12a07eb2ba1ef4a", + "typeString": "literal_string \"Sender is not an owner\"" + }, + "value": "Sender is not an owner" } ], "expression": { @@ -3950,23 +4078,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_b22a5f47ffb62866097c90f90b5b53f76973769c84a10c62e12a07eb2ba1ef4a", + "typeString": "literal_string \"Sender is not an owner\"" } ], - "id": 434, + "id": 438, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, + "referencedDeclaration": 2658, "src": "1534:7:4", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 441, + "id": 446, "isConstant": false, "isLValue": false, "isPure": false, @@ -3974,28 +4106,28 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1534:32:4", + "src": "1534:58:4", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 442, + "id": 447, "nodeType": "ExpressionStatement", - "src": "1534:32:4" + "src": "1534:58:4" }, { "assignments": [ - 444 + 449 ], "declarations": [ { "constant": false, - "id": 444, + "id": 449, "name": "transactionHash", "nodeType": "VariableDeclaration", - "scope": 470, - "src": "1576:23:4", + "scope": 476, + "src": "1602:23:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4003,10 +4135,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 443, + "id": 448, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "1576:7:4", + "src": "1602:7:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -4016,18 +4148,18 @@ "visibility": "internal" } ], - "id": 452, + "id": 457, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 446, + "id": 451, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 423, - "src": "1621:2:4", + "referencedDeclaration": 427, + "src": "1647:2:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4035,12 +4167,12 @@ }, { "argumentTypes": null, - "id": 447, + "id": 452, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 425, - "src": "1625:5:4", + "referencedDeclaration": 429, + "src": "1651:5:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4048,12 +4180,12 @@ }, { "argumentTypes": null, - "id": 448, + "id": 453, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 427, - "src": "1632:4:4", + "referencedDeclaration": 431, + "src": "1658:4:4", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -4061,12 +4193,12 @@ }, { "argumentTypes": null, - "id": 449, + "id": 454, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 429, - "src": "1638:9:4", + "referencedDeclaration": 433, + "src": "1664:9:4", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" @@ -4074,12 +4206,12 @@ }, { "argumentTypes": null, - "id": 450, + "id": 455, "name": "nonce", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 431, - "src": "1649:5:4", + "referencedDeclaration": 435, + "src": "1675:5:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4109,18 +4241,18 @@ "typeString": "uint256" } ], - "id": 445, + "id": 450, "name": "getTransactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 625, - "src": "1602:18:4", + "referencedDeclaration": 634, + "src": "1628:18:4", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$_t_uint256_$returns$_t_bytes32_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256) view returns (bytes32)" } }, - "id": 451, + "id": 456, "isConstant": false, "isLValue": false, "isPure": false, @@ -4128,14 +4260,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1602:53:4", + "src": "1628:53:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "VariableDeclarationStatement", - "src": "1576:79:4" + "src": "1602:79:4" }, { "expression": { @@ -4143,7 +4275,7 @@ "arguments": [ { "argumentTypes": null, - "id": 457, + "id": 462, "isConstant": false, "isLValue": false, "isPure": false, @@ -4151,31 +4283,31 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "1745:28:4", + "src": "1771:28:4", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 454, + "id": 459, "name": "isExecuted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 415, - "src": "1746:10:4", + "referencedDeclaration": 419, + "src": "1772:10:4", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" } }, - "id": 456, + "id": 461, "indexExpression": { "argumentTypes": null, - "id": 455, + "id": 460, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 444, - "src": "1757:15:4", + "referencedDeclaration": 449, + "src": "1783:15:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -4186,7 +4318,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1746:27:4", + "src": "1772:27:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4196,6 +4328,24 @@ "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "53616665207472616e73616374696f6e20616c7265616479206578656375746564", + "id": 463, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1801:35:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_78cc689035dd21cb903fbad8327952ddf83800cf1115919ff1ad2be36eed70db", + "typeString": "literal_string \"Safe transaction already executed\"" + }, + "value": "Safe transaction already executed" } ], "expression": { @@ -4203,23 +4353,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_78cc689035dd21cb903fbad8327952ddf83800cf1115919ff1ad2be36eed70db", + "typeString": "literal_string \"Safe transaction already executed\"" } ], - "id": 453, + "id": 458, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "1737:7:4", + "referencedDeclaration": 2658, + "src": "1763:7:4", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 458, + "id": 464, "isConstant": false, "isLValue": false, "isPure": false, @@ -4227,20 +4381,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1737:37:4", + "src": "1763:74:4", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 459, + "id": 465, "nodeType": "ExpressionStatement", - "src": "1737:37:4" + "src": "1763:74:4" }, { "expression": { "argumentTypes": null, - "id": 467, + "id": 473, "isConstant": false, "isLValue": false, "isPure": false, @@ -4251,26 +4405,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 460, + "id": 466, "name": "isApproved", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 421, - "src": "1784:10:4", + "referencedDeclaration": 425, + "src": "1847:10:4", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_uint256_$_$", "typeString": "mapping(bytes32 => mapping(address => uint256))" } }, - "id": 464, + "id": 470, "indexExpression": { "argumentTypes": null, - "id": 461, + "id": 467, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 444, - "src": "1795:15:4", + "referencedDeclaration": 449, + "src": "1858:15:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -4281,29 +4435,29 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1784:27:4", + "src": "1847:27:4", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, - "id": 465, + "id": 471, "indexExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 462, + "id": 468, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2598, - "src": "1812:3:4", + "referencedDeclaration": 2654, + "src": "1875:3:4", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 463, + "id": 469, "isConstant": false, "isLValue": false, "isPure": false, @@ -4311,7 +4465,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1812:10:4", + "src": "1875:10:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4322,7 +4476,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1784:39:4", + "src": "1847:39:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4333,14 +4487,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "31", - "id": 466, + "id": 472, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1826:1:4", + "src": "1889:1:4", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -4348,20 +4502,20 @@ }, "value": "1" }, - "src": "1784:43:4", + "src": "1847:43:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 468, + "id": 474, "nodeType": "ExpressionStatement", - "src": "1784:43:4" + "src": "1847:43:4" } ] }, "documentation": "@dev Allows to confirm a Safe transaction with a regular transaction.\n This can only be done from an owner address.\n @param to Destination address of Safe transaction.\n @param value Ether value of Safe transaction.\n @param data Data payload of Safe transaction.\n @param operation Operation type of Safe transaction.\n @param nonce Nonce used for this Safe transaction.", - "id": 470, + "id": 476, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -4369,15 +4523,15 @@ "name": "approveTransactionWithParameters", "nodeType": "FunctionDefinition", "parameters": { - "id": 432, + "id": 436, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 423, + "id": 427, "name": "to", "nodeType": "VariableDeclaration", - "scope": 470, + "scope": 476, "src": "1314:10:4", "stateVariable": false, "storageLocation": "default", @@ -4386,7 +4540,7 @@ "typeString": "address" }, "typeName": { - "id": 422, + "id": 426, "name": "address", "nodeType": "ElementaryTypeName", "src": "1314:7:4", @@ -4400,10 +4554,10 @@ }, { "constant": false, - "id": 425, + "id": 429, "name": "value", "nodeType": "VariableDeclaration", - "scope": 470, + "scope": 476, "src": "1335:13:4", "stateVariable": false, "storageLocation": "default", @@ -4412,7 +4566,7 @@ "typeString": "uint256" }, "typeName": { - "id": 424, + "id": 428, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1335:7:4", @@ -4426,10 +4580,10 @@ }, { "constant": false, - "id": 427, + "id": 431, "name": "data", "nodeType": "VariableDeclaration", - "scope": 470, + "scope": 476, "src": "1359:10:4", "stateVariable": false, "storageLocation": "default", @@ -4438,7 +4592,7 @@ "typeString": "bytes" }, "typeName": { - "id": 426, + "id": 430, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "1359:5:4", @@ -4452,10 +4606,10 @@ }, { "constant": false, - "id": 429, + "id": 433, "name": "operation", "nodeType": "VariableDeclaration", - "scope": 470, + "scope": 476, "src": "1380:24:4", "stateVariable": false, "storageLocation": "default", @@ -4465,7 +4619,7 @@ }, "typeName": { "contractScope": null, - "id": 428, + "id": 432, "name": "Enum.Operation", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 29, @@ -4480,10 +4634,10 @@ }, { "constant": false, - "id": 431, + "id": 435, "name": "nonce", "nodeType": "VariableDeclaration", - "scope": 470, + "scope": 476, "src": "1415:13:4", "stateVariable": false, "storageLocation": "default", @@ -4492,7 +4646,7 @@ "typeString": "uint256" }, "typeName": { - "id": 430, + "id": 434, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1415:7:4", @@ -4509,35 +4663,35 @@ }, "payable": false, "returnParameters": { - "id": 433, + "id": 437, "nodeType": "ParameterList", "parameters": [], "src": "1454:0:4" }, - "scope": 626, - "src": "1263:571:4", + "scope": 635, + "src": "1263:634:4", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 521, + "id": 529, "nodeType": "Block", - "src": "2460:358:4", + "src": "2523:433:4", "statements": [ { "assignments": [ - 484 + 490 ], "declarations": [ { "constant": false, - "id": 484, + "id": 490, "name": "transactionHash", "nodeType": "VariableDeclaration", - "scope": 522, - "src": "2470:23:4", + "scope": 530, + "src": "2533:23:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4545,10 +4699,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 483, + "id": 489, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "2470:7:4", + "src": "2533:7:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -4558,18 +4712,18 @@ "visibility": "internal" } ], - "id": 492, + "id": 498, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 486, + "id": 492, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 472, - "src": "2515:2:4", + "referencedDeclaration": 478, + "src": "2578:2:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4577,12 +4731,12 @@ }, { "argumentTypes": null, - "id": 487, + "id": 493, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 474, - "src": "2519:5:4", + "referencedDeclaration": 480, + "src": "2582:5:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4590,12 +4744,12 @@ }, { "argumentTypes": null, - "id": 488, + "id": 494, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 476, - "src": "2526:4:4", + "referencedDeclaration": 482, + "src": "2589:4:4", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -4603,12 +4757,12 @@ }, { "argumentTypes": null, - "id": 489, + "id": 495, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 478, - "src": "2532:9:4", + "referencedDeclaration": 484, + "src": "2595:9:4", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" @@ -4616,12 +4770,12 @@ }, { "argumentTypes": null, - "id": 490, + "id": 496, "name": "nonce", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 480, - "src": "2543:5:4", + "referencedDeclaration": 486, + "src": "2606:5:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4651,18 +4805,18 @@ "typeString": "uint256" } ], - "id": 485, + "id": 491, "name": "getTransactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 625, - "src": "2496:18:4", + "referencedDeclaration": 634, + "src": "2559:18:4", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$_t_uint256_$returns$_t_bytes32_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256) view returns (bytes32)" } }, - "id": 491, + "id": 497, "isConstant": false, "isLValue": false, "isPure": false, @@ -4670,14 +4824,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2496:53:4", + "src": "2559:53:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "VariableDeclarationStatement", - "src": "2470:79:4" + "src": "2533:79:4" }, { "expression": { @@ -4685,7 +4839,7 @@ "arguments": [ { "argumentTypes": null, - "id": 497, + "id": 503, "isConstant": false, "isLValue": false, "isPure": false, @@ -4693,31 +4847,31 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "2567:28:4", + "src": "2630:28:4", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 494, + "id": 500, "name": "isExecuted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 415, - "src": "2568:10:4", + "referencedDeclaration": 419, + "src": "2631:10:4", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" } }, - "id": 496, + "id": 502, "indexExpression": { "argumentTypes": null, - "id": 495, + "id": 501, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 484, - "src": "2579:15:4", + "referencedDeclaration": 490, + "src": "2642:15:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -4728,7 +4882,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2568:27:4", + "src": "2631:27:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4738,6 +4892,24 @@ "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "53616665207472616e73616374696f6e20616c7265616479206578656375746564", + "id": 504, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2660:35:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_78cc689035dd21cb903fbad8327952ddf83800cf1115919ff1ad2be36eed70db", + "typeString": "literal_string \"Safe transaction already executed\"" + }, + "value": "Safe transaction already executed" } ], "expression": { @@ -4745,23 +4917,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_78cc689035dd21cb903fbad8327952ddf83800cf1115919ff1ad2be36eed70db", + "typeString": "literal_string \"Safe transaction already executed\"" } ], - "id": 493, + "id": 499, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "2559:7:4", + "referencedDeclaration": 2658, + "src": "2622:7:4", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 498, + "id": 505, "isConstant": false, "isLValue": false, "isPure": false, @@ -4769,15 +4945,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2559:37:4", + "src": "2622:74:4", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 499, + "id": 506, "nodeType": "ExpressionStatement", - "src": "2559:37:4" + "src": "2622:74:4" }, { "expression": { @@ -4785,12 +4961,12 @@ "arguments": [ { "argumentTypes": null, - "id": 501, + "id": 508, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 484, - "src": "2633:15:4", + "referencedDeclaration": 490, + "src": "2733:15:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -4804,18 +4980,18 @@ "typeString": "bytes32" } ], - "id": 500, + "id": 507, "name": "checkAndClearConfirmations", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 591, - "src": "2606:26:4", + "referencedDeclaration": 600, + "src": "2706:26:4", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$returns$__$", "typeString": "function (bytes32)" } }, - "id": 502, + "id": 509, "isConstant": false, "isLValue": false, "isPure": false, @@ -4823,20 +4999,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2606:43:4", + "src": "2706:43:4", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 503, + "id": 510, "nodeType": "ExpressionStatement", - "src": "2606:43:4" + "src": "2706:43:4" }, { "expression": { "argumentTypes": null, - "id": 508, + "id": 515, "isConstant": false, "isLValue": false, "isPure": false, @@ -4845,26 +5021,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 504, + "id": 511, "name": "isExecuted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 415, - "src": "2712:10:4", + "referencedDeclaration": 419, + "src": "2812:10:4", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" } }, - "id": 506, + "id": 513, "indexExpression": { "argumentTypes": null, - "id": 505, + "id": 512, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 484, - "src": "2723:15:4", + "referencedDeclaration": 490, + "src": "2823:15:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -4875,7 +5051,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "2712:27:4", + "src": "2812:27:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4886,14 +5062,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 507, + "id": 514, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "2742:4:4", + "src": "2842:4:4", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -4901,15 +5077,15 @@ }, "value": "true" }, - "src": "2712:34:4", + "src": "2812:34:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 509, + "id": 516, "nodeType": "ExpressionStatement", - "src": "2712:34:4" + "src": "2812:34:4" }, { "expression": { @@ -4920,12 +5096,12 @@ "arguments": [ { "argumentTypes": null, - "id": 512, + "id": 519, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 472, - "src": "2772:2:4", + "referencedDeclaration": 478, + "src": "2872:2:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4933,12 +5109,12 @@ }, { "argumentTypes": null, - "id": 513, + "id": 520, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 474, - "src": "2776:5:4", + "referencedDeclaration": 480, + "src": "2876:5:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4946,12 +5122,12 @@ }, { "argumentTypes": null, - "id": 514, + "id": 521, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 476, - "src": "2783:4:4", + "referencedDeclaration": 482, + "src": "2883:4:4", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -4959,12 +5135,12 @@ }, { "argumentTypes": null, - "id": 515, + "id": 522, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 478, - "src": "2789:9:4", + "referencedDeclaration": 484, + "src": "2889:9:4", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" @@ -4975,18 +5151,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 516, + "id": 523, "name": "gasleft", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2591, - "src": "2800:7:4", + "referencedDeclaration": 2647, + "src": "2900:7:4", "typeDescriptions": { "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, - "id": 517, + "id": 524, "isConstant": false, "isLValue": false, "isPure": false, @@ -4994,7 +5170,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2800:9:4", + "src": "2900:9:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5024,18 +5200,18 @@ "typeString": "uint256" } ], - "id": 511, + "id": 518, "name": "execute", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 989, - "src": "2764:7:4", + "referencedDeclaration": 1007, + "src": "2864:7:4", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256) returns (bool)" } }, - "id": 518, + "id": 525, "isConstant": false, "isLValue": false, "isPure": false, @@ -5043,11 +5219,29 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2764:46:4", + "src": "2864:46:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "436f756c64206e6f7420657865637574652073616665207472616e73616374696f6e", + "id": 526, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2912:36:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_d12b254798790cac45e0b54201b0ecf8f3257f9e4c1cfc4633e272006616c878", + "typeString": "literal_string \"Could not execute safe transaction\"" + }, + "value": "Could not execute safe transaction" } ], "expression": { @@ -5055,23 +5249,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_d12b254798790cac45e0b54201b0ecf8f3257f9e4c1cfc4633e272006616c878", + "typeString": "literal_string \"Could not execute safe transaction\"" } ], - "id": 510, + "id": 517, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "2756:7:4", + "referencedDeclaration": 2658, + "src": "2856:7:4", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 519, + "id": 527, "isConstant": false, "isLValue": false, "isPure": false, @@ -5079,20 +5277,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2756:55:4", + "src": "2856:93:4", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 520, + "id": 528, "nodeType": "ExpressionStatement", - "src": "2756:55:4" + "src": "2856:93:4" } ] }, "documentation": "@dev Allows to execute a Safe transaction confirmed by required number of owners. If the sender is an owner this is automatically confirmed.\n @param to Destination address of Safe transaction.\n @param value Ether value of Safe transaction.\n @param data Data payload of Safe transaction.\n @param operation Operation type of Safe transaction.\n @param nonce Nonce used for this Safe transaction.", - "id": 522, + "id": 530, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -5100,16 +5298,16 @@ "name": "execTransactionIfApproved", "nodeType": "FunctionDefinition", "parameters": { - "id": 481, + "id": 487, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 472, + "id": 478, "name": "to", "nodeType": "VariableDeclaration", - "scope": 522, - "src": "2320:10:4", + "scope": 530, + "src": "2383:10:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5117,10 +5315,10 @@ "typeString": "address" }, "typeName": { - "id": 471, + "id": 477, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2320:7:4", + "src": "2383:7:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5131,91 +5329,11 @@ }, { "constant": false, - "id": 474, + "id": 480, "name": "value", "nodeType": "VariableDeclaration", - "scope": 522, - "src": "2341:13:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 473, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2341:7:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 476, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 522, - "src": "2365:10:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 475, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "2365:5:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 478, - "name": "operation", - "nodeType": "VariableDeclaration", - "scope": 522, - "src": "2386:24:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$29", - "typeString": "enum Enum.Operation" - }, - "typeName": { - "contractScope": null, - "id": 477, - "name": "Enum.Operation", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 29, - "src": "2386:14:4", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$29", - "typeString": "enum Enum.Operation" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 480, - "name": "nonce", - "nodeType": "VariableDeclaration", - "scope": 522, - "src": "2421:13:4", + "scope": 530, + "src": "2404:13:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5226,7 +5344,87 @@ "id": 479, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2421:7:4", + "src": "2404:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 482, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 530, + "src": "2428:10:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 481, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2428:5:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 484, + "name": "operation", + "nodeType": "VariableDeclaration", + "scope": 530, + "src": "2449:24:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + }, + "typeName": { + "contractScope": null, + "id": 483, + "name": "Enum.Operation", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 29, + "src": "2449:14:4", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 486, + "name": "nonce", + "nodeType": "VariableDeclaration", + "scope": 530, + "src": "2484:13:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 485, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2484:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5236,39 +5434,39 @@ "visibility": "internal" } ], - "src": "2310:130:4" + "src": "2373:130:4" }, "payable": false, "returnParameters": { - "id": 482, + "id": 488, "nodeType": "ParameterList", "parameters": [], - "src": "2460:0:4" + "src": "2523:0:4" }, - "scope": 626, - "src": "2276:542:4", + "scope": 635, + "src": "2339:617:4", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 590, + "id": 599, "nodeType": "Block", - "src": "2906:651:4", + "src": "3044:679:4", "statements": [ { "assignments": [ - 530 + 538 ], "declarations": [ { "constant": false, - "id": 530, + "id": 538, "name": "approvals", "nodeType": "VariableDeclaration", - "scope": 591, - "src": "2916:37:4", + "scope": 600, + "src": "3054:37:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5276,28 +5474,28 @@ "typeString": "mapping(address => uint256)" }, "typeName": { - "id": 529, + "id": 537, "keyType": { - "id": 527, + "id": 535, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2924:7:4", + "src": "3062:7:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", - "src": "2916:27:4", + "src": "3054:27:4", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" }, "valueType": { - "id": 528, + "id": 536, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2935:7:4", + "src": "3073:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5308,31 +5506,31 @@ "visibility": "internal" } ], - "id": 534, + "id": 542, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 531, + "id": 539, "name": "isApproved", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 421, - "src": "2956:10:4", + "referencedDeclaration": 425, + "src": "3094:10:4", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_uint256_$_$", "typeString": "mapping(bytes32 => mapping(address => uint256))" } }, - "id": 533, + "id": 541, "indexExpression": { "argumentTypes": null, - "id": 532, + "id": 540, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 524, - "src": "2967:15:4", + "referencedDeclaration": 532, + "src": "3105:15:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -5343,27 +5541,27 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2956:27:4", + "src": "3094:27:4", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "nodeType": "VariableDeclarationStatement", - "src": "2916:67:4" + "src": "3054:67:4" }, { "assignments": [ - 536 + 544 ], "declarations": [ { "constant": false, - "id": 536, + "id": 544, "name": "confirmations", "nodeType": "VariableDeclaration", - "scope": 591, - "src": "2993:21:4", + "scope": 600, + "src": "3131:21:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5371,10 +5569,10 @@ "typeString": "uint256" }, "typeName": { - "id": 535, + "id": 543, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2993:7:4", + "src": "3131:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5384,18 +5582,18 @@ "visibility": "internal" } ], - "id": 538, + "id": 546, "initialValue": { "argumentTypes": null, "hexValue": "30", - "id": 537, + "id": 545, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3017:1:4", + "src": "3155:1:4", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -5404,20 +5602,20 @@ "value": "0" }, "nodeType": "VariableDeclarationStatement", - "src": "2993:25:4" + "src": "3131:25:4" }, { "assignments": [ - 540 + 548 ], "declarations": [ { "constant": false, - "id": 540, + "id": 548, "name": "currentOwner", "nodeType": "VariableDeclaration", - "scope": 591, - "src": "3070:20:4", + "scope": 600, + "src": "3208:20:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5425,10 +5623,10 @@ "typeString": "address" }, "typeName": { - "id": 539, + "id": 547, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3070:7:4", + "src": "3208:7:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5438,31 +5636,31 @@ "visibility": "internal" } ], - "id": 544, + "id": 552, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 541, + "id": 549, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1114, - "src": "3093:6:4", + "referencedDeclaration": 1132, + "src": "3231:6:4", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 543, + "id": 551, "indexExpression": { "argumentTypes": null, - "id": 542, + "id": 550, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1110, - "src": "3100:15:4", + "referencedDeclaration": 1128, + "src": "3238:15:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5473,33 +5671,33 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3093:23:4", + "src": "3231:23:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", - "src": "3070:46:4" + "src": "3208:46:4" }, { "body": { - "id": 582, + "id": 590, "nodeType": "Block", - "src": "3166:340:4", + "src": "3304:340:4", "statements": [ { "assignments": [ - 549 + 557 ], "declarations": [ { "constant": false, - "id": 549, + "id": 557, "name": "ownerConfirmed", "nodeType": "VariableDeclaration", - "scope": 591, - "src": "3180:19:4", + "scope": 600, + "src": "3318:19:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5507,10 +5705,10 @@ "typeString": "bool" }, "typeName": { - "id": 548, + "id": 556, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "3180:4:4", + "src": "3318:4:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5520,14 +5718,14 @@ "visibility": "internal" } ], - "id": 555, + "id": 563, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 554, + "id": 562, "isConstant": false, "isLValue": false, "isPure": false, @@ -5536,26 +5734,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 550, + "id": 558, "name": "approvals", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 530, - "src": "3202:9:4", + "referencedDeclaration": 538, + "src": "3340:9:4", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, - "id": 552, + "id": 560, "indexExpression": { "argumentTypes": null, - "id": 551, + "id": 559, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 540, - "src": "3212:12:4", + "referencedDeclaration": 548, + "src": "3350:12:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5566,7 +5764,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3202:23:4", + "src": "3340:23:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5577,14 +5775,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 553, + "id": 561, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3229:1:4", + "src": "3367:1:4", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -5592,14 +5790,14 @@ }, "value": "0" }, - "src": "3202:28:4", + "src": "3340:28:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "VariableDeclarationStatement", - "src": "3180:50:4" + "src": "3318:50:4" }, { "condition": { @@ -5608,7 +5806,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 561, + "id": 569, "isConstant": false, "isLValue": false, "isPure": false, @@ -5619,19 +5817,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 559, + "id": 567, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 556, + "id": 564, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 540, - "src": "3247:12:4", + "referencedDeclaration": 548, + "src": "3385:12:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5643,18 +5841,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 557, + "id": 565, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2598, - "src": "3263:3:4", + "referencedDeclaration": 2654, + "src": "3401:3:4", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 558, + "id": 566, "isConstant": false, "isLValue": false, "isPure": false, @@ -5662,13 +5860,13 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "3263:10:4", + "src": "3401:10:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "3247:26:4", + "src": "3385:26:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5678,59 +5876,59 @@ "operator": "||", "rightExpression": { "argumentTypes": null, - "id": 560, + "id": 568, "name": "ownerConfirmed", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 549, - "src": "3277:14:4", + "referencedDeclaration": 557, + "src": "3415:14:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "3247:44:4", + "src": "3385:44:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 575, + "id": 583, "nodeType": "IfStatement", - "src": "3244:203:4", + "src": "3382:203:4", "trueBody": { - "id": 574, + "id": 582, "nodeType": "Block", - "src": "3293:154:4", + "src": "3431:154:4", "statements": [ { "condition": { "argumentTypes": null, - "id": 562, + "id": 570, "name": "ownerConfirmed", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 549, - "src": "3315:14:4", + "referencedDeclaration": 557, + "src": "3453:14:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 570, + "id": 578, "nodeType": "IfStatement", - "src": "3311:88:4", + "src": "3449:88:4", "trueBody": { - "id": 569, + "id": 577, "nodeType": "Block", - "src": "3331:68:4", + "src": "3469:68:4", "statements": [ { "expression": { "argumentTypes": null, - "id": 567, + "id": 575, "isConstant": false, "isLValue": false, "isPure": false, @@ -5739,26 +5937,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 563, + "id": 571, "name": "approvals", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 530, - "src": "3353:9:4", + "referencedDeclaration": 538, + "src": "3491:9:4", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, - "id": 565, + "id": 573, "indexExpression": { "argumentTypes": null, - "id": 564, + "id": 572, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 540, - "src": "3363:12:4", + "referencedDeclaration": 548, + "src": "3501:12:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5769,7 +5967,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "3353:23:4", + "src": "3491:23:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5780,14 +5978,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "30", - "id": 566, + "id": 574, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3379:1:4", + "src": "3517:1:4", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -5795,15 +5993,15 @@ }, "value": "0" }, - "src": "3353:27:4", + "src": "3491:27:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 568, + "id": 576, "nodeType": "ExpressionStatement", - "src": "3353:27:4" + "src": "3491:27:4" } ] } @@ -5811,7 +6009,7 @@ { "expression": { "argumentTypes": null, - "id": 572, + "id": 580, "isConstant": false, "isLValue": false, "isPure": false, @@ -5819,15 +6017,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "3416:16:4", + "src": "3554:16:4", "subExpression": { "argumentTypes": null, - "id": 571, + "id": 579, "name": "confirmations", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 536, - "src": "3416:13:4", + "referencedDeclaration": 544, + "src": "3554:13:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5838,9 +6036,9 @@ "typeString": "uint256" } }, - "id": 573, + "id": 581, "nodeType": "ExpressionStatement", - "src": "3416:16:4" + "src": "3554:16:4" } ] } @@ -5848,19 +6046,19 @@ { "expression": { "argumentTypes": null, - "id": 580, + "id": 588, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 576, + "id": 584, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 540, - "src": "3460:12:4", + "referencedDeclaration": 548, + "src": "3598:12:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5872,26 +6070,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 577, + "id": 585, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1114, - "src": "3475:6:4", + "referencedDeclaration": 1132, + "src": "3613:6:4", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 579, + "id": 587, "indexExpression": { "argumentTypes": null, - "id": 578, + "id": 586, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 540, - "src": "3482:12:4", + "referencedDeclaration": 548, + "src": "3620:12:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5902,21 +6100,21 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3475:20:4", + "src": "3613:20:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "3460:35:4", + "src": "3598:35:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 581, + "id": 589, "nodeType": "ExpressionStatement", - "src": "3460:35:4" + "src": "3598:35:4" } ] }, @@ -5926,19 +6124,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 547, + "id": 555, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 545, + "id": 553, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 540, - "src": "3133:12:4", + "referencedDeclaration": 548, + "src": "3271:12:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5948,26 +6146,26 @@ "operator": "!=", "rightExpression": { "argumentTypes": null, - "id": 546, + "id": 554, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1110, - "src": "3149:15:4", + "referencedDeclaration": 1128, + "src": "3287:15:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "3133:31:4", + "src": "3271:31:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 583, + "id": 591, "nodeType": "WhileStatement", - "src": "3126:380:4" + "src": "3264:380:4" }, { "expression": { @@ -5979,19 +6177,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 587, + "id": 595, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 585, + "id": 593, "name": "confirmations", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 536, - "src": "3523:13:4", + "referencedDeclaration": 544, + "src": "3661:13:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6001,22 +6199,40 @@ "operator": ">=", "rightExpression": { "argumentTypes": null, - "id": 586, + "id": 594, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1118, - "src": "3540:9:4", + "referencedDeclaration": 1136, + "src": "3678:9:4", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "src": "3523:26:4", + "src": "3661:26:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "4e6f7420656e6f75676820636f6e6669726d6174696f6e73", + "id": 596, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3689:26:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_b345da2aaad39251196728cc7926bed93e890843c2a47c2cdd1122427d828094", + "typeString": "literal_string \"Not enough confirmations\"" + }, + "value": "Not enough confirmations" } ], "expression": { @@ -6024,23 +6240,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_b345da2aaad39251196728cc7926bed93e890843c2a47c2cdd1122427d828094", + "typeString": "literal_string \"Not enough confirmations\"" } ], - "id": 584, + "id": 592, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "3515:7:4", + "referencedDeclaration": 2658, + "src": "3653:7:4", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 588, + "id": 597, "isConstant": false, "isLValue": false, "isPure": false, @@ -6048,20 +6268,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3515:35:4", + "src": "3653:63:4", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 589, + "id": 598, "nodeType": "ExpressionStatement", - "src": "3515:35:4" + "src": "3653:63:4" } ] }, "documentation": null, - "id": 591, + "id": 600, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -6069,16 +6289,16 @@ "name": "checkAndClearConfirmations", "nodeType": "FunctionDefinition", "parameters": { - "id": 525, + "id": 533, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 524, + "id": 532, "name": "transactionHash", "nodeType": "VariableDeclaration", - "scope": 591, - "src": "2860:23:4", + "scope": 600, + "src": "2998:23:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6086,10 +6306,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 523, + "id": 531, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "2860:7:4", + "src": "2998:7:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -6099,26 +6319,26 @@ "visibility": "internal" } ], - "src": "2859:25:4" + "src": "2997:25:4" }, "payable": false, "returnParameters": { - "id": 526, + "id": 534, "nodeType": "ParameterList", "parameters": [], - "src": "2906:0:4" + "src": "3044:0:4" }, - "scope": 626, - "src": "2824:733:4", + "scope": 635, + "src": "2962:761:4", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 624, + "id": 633, "nodeType": "Block", - "src": "4051:113:4", + "src": "4217:113:4", "statements": [ { "expression": { @@ -6133,14 +6353,14 @@ { "argumentTypes": null, "hexValue": "30783139", - "id": 610, + "id": 619, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4100:4:4", + "src": "4266:4:4", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_25_by_1", @@ -6156,20 +6376,20 @@ "typeString": "int_const 25" } ], - "id": 609, + "id": 618, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "4095:4:4", + "src": "4261:4:4", "typeDescriptions": { "typeIdentifier": "t_type$_t_bytes1_$", "typeString": "type(bytes1)" }, "typeName": "byte" }, - "id": 611, + "id": 620, "isConstant": false, "isLValue": false, "isPure": true, @@ -6177,7 +6397,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4095:10:4", + "src": "4261:10:4", "typeDescriptions": { "typeIdentifier": "t_bytes1", "typeString": "bytes1" @@ -6189,14 +6409,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 613, + "id": 622, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4112:1:4", + "src": "4278:1:4", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -6212,20 +6432,20 @@ "typeString": "int_const 0" } ], - "id": 612, + "id": 621, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "4107:4:4", + "src": "4273:4:4", "typeDescriptions": { "typeIdentifier": "t_type$_t_bytes1_$", "typeString": "type(bytes1)" }, "typeName": "byte" }, - "id": 614, + "id": 623, "isConstant": false, "isLValue": false, "isPure": true, @@ -6233,7 +6453,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4107:7:4", + "src": "4273:7:4", "typeDescriptions": { "typeIdentifier": "t_bytes1", "typeString": "bytes1" @@ -6241,25 +6461,25 @@ }, { "argumentTypes": null, - "id": 615, + "id": 624, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2633, - "src": "4116:4:4", + "referencedDeclaration": 2689, + "src": "4282:4:4", "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafeTeamEdition_$626", + "typeIdentifier": "t_contract$_GnosisSafeTeamEdition_$635", "typeString": "contract GnosisSafeTeamEdition" } }, { "argumentTypes": null, - "id": 616, + "id": 625, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 593, - "src": "4122:2:4", + "referencedDeclaration": 602, + "src": "4288:2:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6267,12 +6487,12 @@ }, { "argumentTypes": null, - "id": 617, + "id": 626, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 595, - "src": "4126:5:4", + "referencedDeclaration": 604, + "src": "4292:5:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6280,12 +6500,12 @@ }, { "argumentTypes": null, - "id": 618, + "id": 627, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 597, - "src": "4133:4:4", + "referencedDeclaration": 606, + "src": "4299:4:4", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -6293,12 +6513,12 @@ }, { "argumentTypes": null, - "id": 619, + "id": 628, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 599, - "src": "4139:9:4", + "referencedDeclaration": 608, + "src": "4305:9:4", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" @@ -6306,12 +6526,12 @@ }, { "argumentTypes": null, - "id": 620, + "id": 629, "name": "nonce", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 601, - "src": "4150:5:4", + "referencedDeclaration": 610, + "src": "4316:5:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6329,7 +6549,7 @@ "typeString": "bytes1" }, { - "typeIdentifier": "t_contract$_GnosisSafeTeamEdition_$626", + "typeIdentifier": "t_contract$_GnosisSafeTeamEdition_$635", "typeString": "contract GnosisSafeTeamEdition" }, { @@ -6355,18 +6575,18 @@ ], "expression": { "argumentTypes": null, - "id": 607, + "id": 616, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2585, - "src": "4078:3:4", + "referencedDeclaration": 2641, + "src": "4244:3:4", "typeDescriptions": { "typeIdentifier": "t_magic_abi", "typeString": "abi" } }, - "id": 608, + "id": 617, "isConstant": false, "isLValue": false, "isPure": true, @@ -6374,13 +6594,13 @@ "memberName": "encodePacked", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "4078:16:4", + "src": "4244:16:4", "typeDescriptions": { "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)" } }, - "id": 621, + "id": 630, "isConstant": false, "isLValue": false, "isPure": false, @@ -6388,7 +6608,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4078:78:4", + "src": "4244:78:4", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -6402,18 +6622,18 @@ "typeString": "bytes memory" } ], - "id": 606, + "id": 615, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2592, - "src": "4068:9:4", + "referencedDeclaration": 2648, + "src": "4234:9:4", "typeDescriptions": { "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", "typeString": "function () pure returns (bytes32)" } }, - "id": 622, + "id": 631, "isConstant": false, "isLValue": false, "isPure": false, @@ -6421,21 +6641,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4068:89:4", + "src": "4234:89:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "functionReturnParameters": 605, - "id": 623, + "functionReturnParameters": 614, + "id": 632, "nodeType": "Return", - "src": "4061:96:4" + "src": "4227:96:4" } ] }, "documentation": "@dev Returns hash to be signed by owners.\n @param to Destination address.\n @param value Ether value.\n @param data Data payload.\n @param operation Operation type.\n @param nonce Transaction nonce.\n @return Transaction hash.", - "id": 625, + "id": 634, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -6443,16 +6663,16 @@ "name": "getTransactionHash", "nodeType": "FunctionDefinition", "parameters": { - "id": 602, + "id": 611, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 593, + "id": 602, "name": "to", "nodeType": "VariableDeclaration", - "scope": 625, - "src": "3872:10:4", + "scope": 634, + "src": "4038:10:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6460,10 +6680,10 @@ "typeString": "address" }, "typeName": { - "id": 592, + "id": 601, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3872:7:4", + "src": "4038:7:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6474,11 +6694,11 @@ }, { "constant": false, - "id": 595, + "id": 604, "name": "value", "nodeType": "VariableDeclaration", - "scope": 625, - "src": "3893:13:4", + "scope": 634, + "src": "4059:13:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6486,10 +6706,10 @@ "typeString": "uint256" }, "typeName": { - "id": 594, + "id": 603, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3893:7:4", + "src": "4059:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6500,11 +6720,11 @@ }, { "constant": false, - "id": 597, + "id": 606, "name": "data", "nodeType": "VariableDeclaration", - "scope": 625, - "src": "3917:10:4", + "scope": 634, + "src": "4083:10:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6512,10 +6732,10 @@ "typeString": "bytes" }, "typeName": { - "id": 596, + "id": 605, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "3917:5:4", + "src": "4083:5:4", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -6526,11 +6746,11 @@ }, { "constant": false, - "id": 599, + "id": 608, "name": "operation", "nodeType": "VariableDeclaration", - "scope": 625, - "src": "3938:24:4", + "scope": 634, + "src": "4104:24:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6539,11 +6759,11 @@ }, "typeName": { "contractScope": null, - "id": 598, + "id": 607, "name": "Enum.Operation", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 29, - "src": "3938:14:4", + "src": "4104:14:4", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" @@ -6554,11 +6774,11 @@ }, { "constant": false, - "id": 601, + "id": 610, "name": "nonce", "nodeType": "VariableDeclaration", - "scope": 625, - "src": "3973:13:4", + "scope": 634, + "src": "4139:13:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6566,10 +6786,10 @@ "typeString": "uint256" }, "typeName": { - "id": 600, + "id": 609, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3973:7:4", + "src": "4139:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6579,20 +6799,20 @@ "visibility": "internal" } ], - "src": "3862:130:4" + "src": "4028:130:4" }, "payable": false, "returnParameters": { - "id": 605, + "id": 614, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 604, + "id": 613, "name": "", "nodeType": "VariableDeclaration", - "scope": 625, - "src": "4038:7:4", + "scope": 634, + "src": "4204:7:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6600,10 +6820,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 603, + "id": 612, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "4038:7:4", + "src": "4204:7:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -6613,20 +6833,20 @@ "visibility": "internal" } ], - "src": "4037:9:4" + "src": "4203:9:4" }, - "scope": 626, - "src": "3835:329:4", + "scope": 635, + "src": "4001:329:4", "stateMutability": "view", "superFunction": null, "visibility": "public" } ], - "scope": 627, - "src": "272:3894:4" + "scope": 636, + "src": "272:4060:4" } ], - "src": "0:4167:4" + "src": "0:4333:4" }, "compiler": { "name": "solc", @@ -6636,22 +6856,16 @@ "4": { "events": {}, "links": {}, - "address": "0x2c4aed3a457a6c22b69e3c265e8ea2f1c63c3a22", - "transactionHash": "0xadc1acb04257fdd33996d12fb7aacca9dd0bbd4791091cadba4feb42d58d84b7" - }, - "1527316019334": { - "events": {}, - "links": {}, - "address": "0x8a0005965449a50c878f81366c85b1b8ed684cd9", - "transactionHash": "0xb4a3d52a904d829e91e4502b2b0659cbfd5a90dd2af4c90f9d488e4e3f3b47d2" + "address": "0x49177854cc884e0fbdadf69f3ddd255b4693b525", + "transactionHash": "0x230882f0b4bfda1e180148b9dfabcaca88e1d7dc267b00e3680563d5fe43e403" }, "1527420696956": { "events": {}, "links": {}, - "address": "0x60c424968c3dc4ff9130b80591c0b97dda690b66", - "transactionHash": "0x304ee33d69762c466c689bbea9fcce594bfafd1cbad5482e75be43ad24ca200f" + "address": "0x951aad4e4620ce64d8c072f551fcaed12425fe85", + "transactionHash": "0x1817ac338c1a78b56552121e12b7bc3e6968e8d9fdfa73c48dd482bfa1cc2827" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-27T11:31:46.251Z" + "updatedAt": "2018-05-28T06:08:59.455Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/MasterCopy.json b/safe-contracts/build/contracts/MasterCopy.json index 5d41f32a..ebdb526c 100644 --- a/safe-contracts/build/contracts/MasterCopy.json +++ b/safe-contracts/build/contracts/MasterCopy.json @@ -16,24 +16,24 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50610158806100206000396000f300608060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680637de7edef14610046575b600080fd5b34801561005257600080fd5b50610087600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610089565b005b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156100c357600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141515156100e957600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505600a165627a7a72305820af102433b8ccec4f2f22acc2112a110b3e5e8a3a9a6410aebbe25fc9281607660029", - "deployedBytecode": "0x608060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680637de7edef14610046575b600080fd5b34801561005257600080fd5b50610087600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610089565b005b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156100c357600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141515156100e957600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505600a165627a7a72305820af102433b8ccec4f2f22acc2112a110b3e5e8a3a9a6410aebbe25fc9281607660029", - "sourceMap": "203:633:5:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;203:633:5;;;;;;;", - "deployedSourceMap": "203:633:5:-;;;;;;;;;;;;;;;;;;;;;;;;626:208;;8:9:-1;5:2;;;30:1;27;20:12;5:2;626:208:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;244:4:13;222:27;;:10;:27;;;214:36;;;;;;;;791:1:5;776:11;:16;;;;768:25;;;;;;;;816:11;803:10;;:24;;;;;;;;;;;;;;;;;;626:208;:::o", - "source": "pragma solidity 0.4.24;\nimport \"./SelfAuthorized.sol\";\n\n\n/// @title MasterCopy - Base for master copy contracts (should always be first super contract)\n/// @author Richard Meissner - \ncontract MasterCopy is SelfAuthorized {\n // masterCopy always needs to be first declared variable, to ensure that it is at the same location as in the Proxy contract.\n // It should also always be ensured that the address is stored alone (uses a full word)\n address masterCopy;\n\n /// @dev Allows to upgrade the contract. This can only be done via a Safe transaction.\n /// @param _masterCopy New contract address.\n function changeMasterCopy(address _masterCopy)\n public\n authorized\n {\n // Master copy address cannot be null.\n require(_masterCopy != 0);\n masterCopy = _masterCopy;\n }\n}\n", + "bytecode": "0x608060405234801561001057600080fd5b50610276806100206000396000f300608060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680637de7edef14610046575b600080fd5b34801561005257600080fd5b50610087600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610089565b005b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610152576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515610207576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f496e76616c6964206d617374657220636f707920616464726573732070726f7681526020017f696465640000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505600a165627a7a72305820243ca7a44eb0464a47c14309cc3a29e407df6e966674981a787df22c0d9280220029", + "deployedBytecode": "0x608060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680637de7edef14610046575b600080fd5b34801561005257600080fd5b50610087600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610089565b005b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610152576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515610207576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f496e76616c6964206d617374657220636f707920616464726573732070726f7681526020017f696465640000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505600a165627a7a72305820243ca7a44eb0464a47c14309cc3a29e407df6e966674981a787df22c0d9280220029", + "sourceMap": "203:673:5:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;203:673:5;;;;;;;", + "deployedSourceMap": "203:673:5:-;;;;;;;;;;;;;;;;;;;;;;;;626:248;;8:9:-1;5:2;;;30:1;27;20:12;5:2;626:248:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;244:4:13;222:27;;:10;:27;;;214:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;791:1:5;776:11;:16;;;;768:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;856:11;843:10;;:24;;;;;;;;;;;;;;;;;;626:248;:::o", + "source": "pragma solidity 0.4.24;\nimport \"./SelfAuthorized.sol\";\n\n\n/// @title MasterCopy - Base for master copy contracts (should always be first super contract)\n/// @author Richard Meissner - \ncontract MasterCopy is SelfAuthorized {\n // masterCopy always needs to be first declared variable, to ensure that it is at the same location as in the Proxy contract.\n // It should also always be ensured that the address is stored alone (uses a full word)\n address masterCopy;\n\n /// @dev Allows to upgrade the contract. This can only be done via a Safe transaction.\n /// @param _masterCopy New contract address.\n function changeMasterCopy(address _masterCopy)\n public\n authorized\n {\n // Master copy address cannot be null.\n require(_masterCopy != 0, \"Invalid master copy address provided\");\n masterCopy = _masterCopy;\n }\n}\n", "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/MasterCopy.sol", "ast": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/MasterCopy.sol", "exportedSymbols": { "MasterCopy": [ - 652 + 662 ] }, - "id": 653, + "id": 663, "nodeType": "SourceUnit", "nodes": [ { - "id": 628, + "id": 637, "literals": [ "solidity", "0.4", @@ -45,10 +45,10 @@ { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/SelfAuthorized.sol", "file": "./SelfAuthorized.sol", - "id": 629, + "id": 638, "nodeType": "ImportDirective", - "scope": 653, - "sourceUnit": 1620, + "scope": 663, + "sourceUnit": 1655, "src": "24:30:5", "symbolAliases": [], "unitAlias": "" @@ -59,41 +59,41 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 630, + "id": 639, "name": "SelfAuthorized", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1619, + "referencedDeclaration": 1654, "src": "226:14:5", "typeDescriptions": { - "typeIdentifier": "t_contract$_SelfAuthorized_$1619", + "typeIdentifier": "t_contract$_SelfAuthorized_$1654", "typeString": "contract SelfAuthorized" } }, - "id": 631, + "id": 640, "nodeType": "InheritanceSpecifier", "src": "226:14:5" } ], "contractDependencies": [ - 1619 + 1654 ], "contractKind": "contract", "documentation": "@title MasterCopy - Base for master copy contracts (should always be first super contract)\n @author Richard Meissner - ", "fullyImplemented": true, - "id": 652, + "id": 662, "linearizedBaseContracts": [ - 652, - 1619 + 662, + 1654 ], "name": "MasterCopy", "nodeType": "ContractDefinition", "nodes": [ { "constant": false, - "id": 633, + "id": 642, "name": "masterCopy", "nodeType": "VariableDeclaration", - "scope": 652, + "scope": 662, "src": "465:18:5", "stateVariable": true, "storageLocation": "default", @@ -102,7 +102,7 @@ "typeString": "address" }, "typeName": { - "id": 632, + "id": 641, "name": "address", "nodeType": "ElementaryTypeName", "src": "465:7:5", @@ -116,9 +116,9 @@ }, { "body": { - "id": 650, + "id": 660, "nodeType": "Block", - "src": "711:123:5", + "src": "711:163:5", "statements": [ { "expression": { @@ -130,18 +130,18 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 643, + "id": 652, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 641, + "id": 650, "name": "_masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 635, + "referencedDeclaration": 644, "src": "776:11:5", "typeDescriptions": { "typeIdentifier": "t_address", @@ -153,7 +153,7 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 642, + "id": 651, "isConstant": false, "isLValue": false, "isPure": true, @@ -173,6 +173,24 @@ "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "496e76616c6964206d617374657220636f707920616464726573732070726f7669646564", + "id": 653, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "794:38:5", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_108d84599042957b954e89d43b52f80be89321dfc114a37800028eba58dafc87", + "typeString": "literal_string \"Invalid master copy address provided\"" + }, + "value": "Invalid master copy address provided" } ], "expression": { @@ -180,23 +198,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_108d84599042957b954e89d43b52f80be89321dfc114a37800028eba58dafc87", + "typeString": "literal_string \"Invalid master copy address provided\"" } ], - "id": 640, + "id": 649, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, + "referencedDeclaration": 2658, "src": "768:7:5", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 644, + "id": 654, "isConstant": false, "isLValue": false, "isPure": false, @@ -204,32 +226,32 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "768:25:5", + "src": "768:65:5", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 645, + "id": 655, "nodeType": "ExpressionStatement", - "src": "768:25:5" + "src": "768:65:5" }, { "expression": { "argumentTypes": null, - "id": 648, + "id": 658, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 646, + "id": 656, "name": "masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 633, - "src": "803:10:5", + "referencedDeclaration": 642, + "src": "843:10:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -239,45 +261,45 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 647, + "id": 657, "name": "_masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 635, - "src": "816:11:5", + "referencedDeclaration": 644, + "src": "856:11:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "803:24:5", + "src": "843:24:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 649, + "id": 659, "nodeType": "ExpressionStatement", - "src": "803:24:5" + "src": "843:24:5" } ] }, "documentation": "@dev Allows to upgrade the contract. This can only be done via a Safe transaction.\n @param _masterCopy New contract address.", - "id": 651, + "id": 661, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 638, + "id": 647, "modifierName": { "argumentTypes": null, - "id": 637, + "id": 646, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1618, + "referencedDeclaration": 1653, "src": "696:10:5", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", @@ -291,15 +313,15 @@ "name": "changeMasterCopy", "nodeType": "FunctionDefinition", "parameters": { - "id": 636, + "id": 645, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 635, + "id": 644, "name": "_masterCopy", "nodeType": "VariableDeclaration", - "scope": 651, + "scope": 661, "src": "652:19:5", "stateVariable": false, "storageLocation": "default", @@ -308,7 +330,7 @@ "typeString": "address" }, "typeName": { - "id": 634, + "id": 643, "name": "address", "nodeType": "ElementaryTypeName", "src": "652:7:5", @@ -325,36 +347,36 @@ }, "payable": false, "returnParameters": { - "id": 639, + "id": 648, "nodeType": "ParameterList", "parameters": [], "src": "711:0:5" }, - "scope": 652, - "src": "626:208:5", + "scope": 662, + "src": "626:248:5", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" } ], - "scope": 653, - "src": "203:633:5" + "scope": 663, + "src": "203:673:5" } ], - "src": "0:837:5" + "src": "0:877:5" }, "legacyAST": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/MasterCopy.sol", "exportedSymbols": { "MasterCopy": [ - 652 + 662 ] }, - "id": 653, + "id": 663, "nodeType": "SourceUnit", "nodes": [ { - "id": 628, + "id": 637, "literals": [ "solidity", "0.4", @@ -366,10 +388,10 @@ { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/SelfAuthorized.sol", "file": "./SelfAuthorized.sol", - "id": 629, + "id": 638, "nodeType": "ImportDirective", - "scope": 653, - "sourceUnit": 1620, + "scope": 663, + "sourceUnit": 1655, "src": "24:30:5", "symbolAliases": [], "unitAlias": "" @@ -380,41 +402,41 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 630, + "id": 639, "name": "SelfAuthorized", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1619, + "referencedDeclaration": 1654, "src": "226:14:5", "typeDescriptions": { - "typeIdentifier": "t_contract$_SelfAuthorized_$1619", + "typeIdentifier": "t_contract$_SelfAuthorized_$1654", "typeString": "contract SelfAuthorized" } }, - "id": 631, + "id": 640, "nodeType": "InheritanceSpecifier", "src": "226:14:5" } ], "contractDependencies": [ - 1619 + 1654 ], "contractKind": "contract", "documentation": "@title MasterCopy - Base for master copy contracts (should always be first super contract)\n @author Richard Meissner - ", "fullyImplemented": true, - "id": 652, + "id": 662, "linearizedBaseContracts": [ - 652, - 1619 + 662, + 1654 ], "name": "MasterCopy", "nodeType": "ContractDefinition", "nodes": [ { "constant": false, - "id": 633, + "id": 642, "name": "masterCopy", "nodeType": "VariableDeclaration", - "scope": 652, + "scope": 662, "src": "465:18:5", "stateVariable": true, "storageLocation": "default", @@ -423,7 +445,7 @@ "typeString": "address" }, "typeName": { - "id": 632, + "id": 641, "name": "address", "nodeType": "ElementaryTypeName", "src": "465:7:5", @@ -437,9 +459,9 @@ }, { "body": { - "id": 650, + "id": 660, "nodeType": "Block", - "src": "711:123:5", + "src": "711:163:5", "statements": [ { "expression": { @@ -451,18 +473,18 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 643, + "id": 652, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 641, + "id": 650, "name": "_masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 635, + "referencedDeclaration": 644, "src": "776:11:5", "typeDescriptions": { "typeIdentifier": "t_address", @@ -474,7 +496,7 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 642, + "id": 651, "isConstant": false, "isLValue": false, "isPure": true, @@ -494,6 +516,24 @@ "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "496e76616c6964206d617374657220636f707920616464726573732070726f7669646564", + "id": 653, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "794:38:5", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_108d84599042957b954e89d43b52f80be89321dfc114a37800028eba58dafc87", + "typeString": "literal_string \"Invalid master copy address provided\"" + }, + "value": "Invalid master copy address provided" } ], "expression": { @@ -501,23 +541,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_108d84599042957b954e89d43b52f80be89321dfc114a37800028eba58dafc87", + "typeString": "literal_string \"Invalid master copy address provided\"" } ], - "id": 640, + "id": 649, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, + "referencedDeclaration": 2658, "src": "768:7:5", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 644, + "id": 654, "isConstant": false, "isLValue": false, "isPure": false, @@ -525,32 +569,32 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "768:25:5", + "src": "768:65:5", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 645, + "id": 655, "nodeType": "ExpressionStatement", - "src": "768:25:5" + "src": "768:65:5" }, { "expression": { "argumentTypes": null, - "id": 648, + "id": 658, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 646, + "id": 656, "name": "masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 633, - "src": "803:10:5", + "referencedDeclaration": 642, + "src": "843:10:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -560,45 +604,45 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 647, + "id": 657, "name": "_masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 635, - "src": "816:11:5", + "referencedDeclaration": 644, + "src": "856:11:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "803:24:5", + "src": "843:24:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 649, + "id": 659, "nodeType": "ExpressionStatement", - "src": "803:24:5" + "src": "843:24:5" } ] }, "documentation": "@dev Allows to upgrade the contract. This can only be done via a Safe transaction.\n @param _masterCopy New contract address.", - "id": 651, + "id": 661, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 638, + "id": 647, "modifierName": { "argumentTypes": null, - "id": 637, + "id": 646, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1618, + "referencedDeclaration": 1653, "src": "696:10:5", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", @@ -612,15 +656,15 @@ "name": "changeMasterCopy", "nodeType": "FunctionDefinition", "parameters": { - "id": 636, + "id": 645, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 635, + "id": 644, "name": "_masterCopy", "nodeType": "VariableDeclaration", - "scope": 651, + "scope": 661, "src": "652:19:5", "stateVariable": false, "storageLocation": "default", @@ -629,7 +673,7 @@ "typeString": "address" }, "typeName": { - "id": 634, + "id": 643, "name": "address", "nodeType": "ElementaryTypeName", "src": "652:7:5", @@ -646,23 +690,23 @@ }, "payable": false, "returnParameters": { - "id": 639, + "id": 648, "nodeType": "ParameterList", "parameters": [], "src": "711:0:5" }, - "scope": 652, - "src": "626:208:5", + "scope": 662, + "src": "626:248:5", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" } ], - "scope": 653, - "src": "203:633:5" + "scope": 663, + "src": "203:673:5" } ], - "src": "0:837:5" + "src": "0:877:5" }, "compiler": { "name": "solc", @@ -670,5 +714,5 @@ }, "networks": {}, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-27T11:12:45.579Z" + "updatedAt": "2018-05-28T05:59:52.701Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/Migrations.json b/safe-contracts/build/contracts/Migrations.json index a7baf88b..f182f637 100644 --- a/safe-contracts/build/contracts/Migrations.json +++ b/safe-contracts/build/contracts/Migrations.json @@ -74,14 +74,14 @@ "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Migrations.sol", "exportedSymbols": { "Migrations": [ - 709 + 719 ] }, - "id": 710, + "id": 720, "nodeType": "SourceUnit", "nodes": [ { - "id": 654, + "id": 664, "literals": [ "solidity", "^", @@ -97,19 +97,19 @@ "contractKind": "contract", "documentation": null, "fullyImplemented": true, - "id": 709, + "id": 719, "linearizedBaseContracts": [ - 709 + 719 ], "name": "Migrations", "nodeType": "ContractDefinition", "nodes": [ { "constant": false, - "id": 656, + "id": 666, "name": "owner", "nodeType": "VariableDeclaration", - "scope": 709, + "scope": 719, "src": "51:20:6", "stateVariable": true, "storageLocation": "default", @@ -118,7 +118,7 @@ "typeString": "address" }, "typeName": { - "id": 655, + "id": 665, "name": "address", "nodeType": "ElementaryTypeName", "src": "51:7:6", @@ -132,10 +132,10 @@ }, { "constant": false, - "id": 658, + "id": 668, "name": "last_completed_migration", "nodeType": "VariableDeclaration", - "scope": 709, + "scope": 719, "src": "77:36:6", "stateVariable": true, "storageLocation": "default", @@ -144,7 +144,7 @@ "typeString": "uint256" }, "typeName": { - "id": 657, + "id": 667, "name": "uint", "nodeType": "ElementaryTypeName", "src": "77:4:6", @@ -158,7 +158,7 @@ }, { "body": { - "id": 666, + "id": 676, "nodeType": "Block", "src": "142:43:6", "statements": [ @@ -169,7 +169,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 663, + "id": 673, "isConstant": false, "isLValue": false, "isPure": false, @@ -178,18 +178,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 660, + "id": 670, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2598, + "referencedDeclaration": 2654, "src": "156:3:6", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 661, + "id": 671, "isConstant": false, "isLValue": false, "isPure": false, @@ -207,11 +207,11 @@ "operator": "==", "rightExpression": { "argumentTypes": null, - "id": 662, + "id": 672, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 656, + "referencedDeclaration": 666, "src": "170:5:6", "typeDescriptions": { "typeIdentifier": "t_address", @@ -225,11 +225,11 @@ } }, "falseBody": null, - "id": 665, + "id": 675, "nodeType": "IfStatement", "src": "152:26:6", "trueBody": { - "id": 664, + "id": 674, "nodeType": "PlaceholderStatement", "src": "177:1:6" } @@ -237,11 +237,11 @@ ] }, "documentation": null, - "id": 667, + "id": 677, "name": "restricted", "nodeType": "ModifierDefinition", "parameters": { - "id": 659, + "id": 669, "nodeType": "ParameterList", "parameters": [], "src": "139:2:6" @@ -251,25 +251,25 @@ }, { "body": { - "id": 675, + "id": 685, "nodeType": "Block", "src": "224:35:6", "statements": [ { "expression": { "argumentTypes": null, - "id": 673, + "id": 683, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 670, + "id": 680, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 656, + "referencedDeclaration": 666, "src": "234:5:6", "typeDescriptions": { "typeIdentifier": "t_address", @@ -282,18 +282,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 671, + "id": 681, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2598, + "referencedDeclaration": 2654, "src": "242:3:6", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 672, + "id": 682, "isConstant": false, "isLValue": false, "isPure": false, @@ -313,14 +313,14 @@ "typeString": "address" } }, - "id": 674, + "id": 684, "nodeType": "ExpressionStatement", "src": "234:18:6" } ] }, "documentation": null, - "id": 676, + "id": 686, "implemented": true, "isConstructor": true, "isDeclaredConst": false, @@ -328,19 +328,19 @@ "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 668, + "id": 678, "nodeType": "ParameterList", "parameters": [], "src": "202:2:6" }, "payable": false, "returnParameters": { - "id": 669, + "id": 679, "nodeType": "ParameterList", "parameters": [], "src": "224:0:6" }, - "scope": 709, + "scope": 719, "src": "191:68:6", "stateMutability": "nonpayable", "superFunction": null, @@ -348,25 +348,25 @@ }, { "body": { - "id": 687, + "id": 697, "nodeType": "Block", "src": "341:53:6", "statements": [ { "expression": { "argumentTypes": null, - "id": 685, + "id": 695, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 683, + "id": 693, "name": "last_completed_migration", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 658, + "referencedDeclaration": 668, "src": "351:24:6", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -377,11 +377,11 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 684, + "id": 694, "name": "completed", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 678, + "referencedDeclaration": 688, "src": "378:9:6", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -394,28 +394,28 @@ "typeString": "uint256" } }, - "id": 686, + "id": 696, "nodeType": "ExpressionStatement", "src": "351:36:6" } ] }, "documentation": null, - "id": 688, + "id": 698, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 681, + "id": 691, "modifierName": { "argumentTypes": null, - "id": 680, + "id": 690, "name": "restricted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 667, + "referencedDeclaration": 677, "src": "326:10:6", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", @@ -429,15 +429,15 @@ "name": "setCompleted", "nodeType": "FunctionDefinition", "parameters": { - "id": 679, + "id": 689, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 678, + "id": 688, "name": "completed", "nodeType": "VariableDeclaration", - "scope": 688, + "scope": 698, "src": "287:14:6", "stateVariable": false, "storageLocation": "default", @@ -446,7 +446,7 @@ "typeString": "uint256" }, "typeName": { - "id": 677, + "id": 687, "name": "uint", "nodeType": "ElementaryTypeName", "src": "287:4:6", @@ -463,12 +463,12 @@ }, "payable": false, "returnParameters": { - "id": 682, + "id": 692, "nodeType": "ParameterList", "parameters": [], "src": "341:0:6" }, - "scope": 709, + "scope": 719, "src": "265:129:6", "stateMutability": "nonpayable", "superFunction": null, @@ -476,37 +476,37 @@ }, { "body": { - "id": 707, + "id": 717, "nodeType": "Block", "src": "476:119:6", "statements": [ { "assignments": [ - 696 + 706 ], "declarations": [ { "constant": false, - "id": 696, + "id": 706, "name": "upgraded", "nodeType": "VariableDeclaration", - "scope": 708, + "scope": 718, "src": "486:19:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_Migrations_$709", + "typeIdentifier": "t_contract$_Migrations_$719", "typeString": "contract Migrations" }, "typeName": { "contractScope": null, - "id": 695, + "id": 705, "name": "Migrations", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 709, + "referencedDeclaration": 719, "src": "486:10:6", "typeDescriptions": { - "typeIdentifier": "t_contract$_Migrations_$709", + "typeIdentifier": "t_contract$_Migrations_$719", "typeString": "contract Migrations" } }, @@ -514,17 +514,17 @@ "visibility": "internal" } ], - "id": 700, + "id": 710, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 698, + "id": 708, "name": "new_address", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 690, + "referencedDeclaration": 700, "src": "519:11:6", "typeDescriptions": { "typeIdentifier": "t_address", @@ -539,18 +539,18 @@ "typeString": "address" } ], - "id": 697, + "id": 707, "name": "Migrations", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 709, + "referencedDeclaration": 719, "src": "508:10:6", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Migrations_$709_$", + "typeIdentifier": "t_type$_t_contract$_Migrations_$719_$", "typeString": "type(contract Migrations)" } }, - "id": 699, + "id": 709, "isConstant": false, "isLValue": false, "isPure": false, @@ -560,7 +560,7 @@ "nodeType": "FunctionCall", "src": "508:23:6", "typeDescriptions": { - "typeIdentifier": "t_contract$_Migrations_$709", + "typeIdentifier": "t_contract$_Migrations_$719", "typeString": "contract Migrations" } }, @@ -573,11 +573,11 @@ "arguments": [ { "argumentTypes": null, - "id": 704, + "id": 714, "name": "last_completed_migration", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 658, + "referencedDeclaration": 668, "src": "563:24:6", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -594,32 +594,32 @@ ], "expression": { "argumentTypes": null, - "id": 701, + "id": 711, "name": "upgraded", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 696, + "referencedDeclaration": 706, "src": "541:8:6", "typeDescriptions": { - "typeIdentifier": "t_contract$_Migrations_$709", + "typeIdentifier": "t_contract$_Migrations_$719", "typeString": "contract Migrations" } }, - "id": 703, + "id": 713, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "setCompleted", "nodeType": "MemberAccess", - "referencedDeclaration": 688, + "referencedDeclaration": 698, "src": "541:21:6", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256) external" } }, - "id": 705, + "id": 715, "isConstant": false, "isLValue": false, "isPure": false, @@ -633,28 +633,28 @@ "typeString": "tuple()" } }, - "id": 706, + "id": 716, "nodeType": "ExpressionStatement", "src": "541:47:6" } ] }, "documentation": null, - "id": 708, + "id": 718, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 693, + "id": 703, "modifierName": { "argumentTypes": null, - "id": 692, + "id": 702, "name": "restricted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 667, + "referencedDeclaration": 677, "src": "461:10:6", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", @@ -668,15 +668,15 @@ "name": "upgrade", "nodeType": "FunctionDefinition", "parameters": { - "id": 691, + "id": 701, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 690, + "id": 700, "name": "new_address", "nodeType": "VariableDeclaration", - "scope": 708, + "scope": 718, "src": "417:19:6", "stateVariable": false, "storageLocation": "default", @@ -685,7 +685,7 @@ "typeString": "address" }, "typeName": { - "id": 689, + "id": 699, "name": "address", "nodeType": "ElementaryTypeName", "src": "417:7:6", @@ -702,19 +702,19 @@ }, "payable": false, "returnParameters": { - "id": 694, + "id": 704, "nodeType": "ParameterList", "parameters": [], "src": "476:0:6" }, - "scope": 709, + "scope": 719, "src": "400:195:6", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" } ], - "scope": 710, + "scope": 720, "src": "25:572:6" } ], @@ -724,14 +724,14 @@ "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Migrations.sol", "exportedSymbols": { "Migrations": [ - 709 + 719 ] }, - "id": 710, + "id": 720, "nodeType": "SourceUnit", "nodes": [ { - "id": 654, + "id": 664, "literals": [ "solidity", "^", @@ -747,19 +747,19 @@ "contractKind": "contract", "documentation": null, "fullyImplemented": true, - "id": 709, + "id": 719, "linearizedBaseContracts": [ - 709 + 719 ], "name": "Migrations", "nodeType": "ContractDefinition", "nodes": [ { "constant": false, - "id": 656, + "id": 666, "name": "owner", "nodeType": "VariableDeclaration", - "scope": 709, + "scope": 719, "src": "51:20:6", "stateVariable": true, "storageLocation": "default", @@ -768,7 +768,7 @@ "typeString": "address" }, "typeName": { - "id": 655, + "id": 665, "name": "address", "nodeType": "ElementaryTypeName", "src": "51:7:6", @@ -782,10 +782,10 @@ }, { "constant": false, - "id": 658, + "id": 668, "name": "last_completed_migration", "nodeType": "VariableDeclaration", - "scope": 709, + "scope": 719, "src": "77:36:6", "stateVariable": true, "storageLocation": "default", @@ -794,7 +794,7 @@ "typeString": "uint256" }, "typeName": { - "id": 657, + "id": 667, "name": "uint", "nodeType": "ElementaryTypeName", "src": "77:4:6", @@ -808,7 +808,7 @@ }, { "body": { - "id": 666, + "id": 676, "nodeType": "Block", "src": "142:43:6", "statements": [ @@ -819,7 +819,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 663, + "id": 673, "isConstant": false, "isLValue": false, "isPure": false, @@ -828,18 +828,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 660, + "id": 670, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2598, + "referencedDeclaration": 2654, "src": "156:3:6", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 661, + "id": 671, "isConstant": false, "isLValue": false, "isPure": false, @@ -857,11 +857,11 @@ "operator": "==", "rightExpression": { "argumentTypes": null, - "id": 662, + "id": 672, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 656, + "referencedDeclaration": 666, "src": "170:5:6", "typeDescriptions": { "typeIdentifier": "t_address", @@ -875,11 +875,11 @@ } }, "falseBody": null, - "id": 665, + "id": 675, "nodeType": "IfStatement", "src": "152:26:6", "trueBody": { - "id": 664, + "id": 674, "nodeType": "PlaceholderStatement", "src": "177:1:6" } @@ -887,11 +887,11 @@ ] }, "documentation": null, - "id": 667, + "id": 677, "name": "restricted", "nodeType": "ModifierDefinition", "parameters": { - "id": 659, + "id": 669, "nodeType": "ParameterList", "parameters": [], "src": "139:2:6" @@ -901,25 +901,25 @@ }, { "body": { - "id": 675, + "id": 685, "nodeType": "Block", "src": "224:35:6", "statements": [ { "expression": { "argumentTypes": null, - "id": 673, + "id": 683, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 670, + "id": 680, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 656, + "referencedDeclaration": 666, "src": "234:5:6", "typeDescriptions": { "typeIdentifier": "t_address", @@ -932,18 +932,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 671, + "id": 681, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2598, + "referencedDeclaration": 2654, "src": "242:3:6", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 672, + "id": 682, "isConstant": false, "isLValue": false, "isPure": false, @@ -963,14 +963,14 @@ "typeString": "address" } }, - "id": 674, + "id": 684, "nodeType": "ExpressionStatement", "src": "234:18:6" } ] }, "documentation": null, - "id": 676, + "id": 686, "implemented": true, "isConstructor": true, "isDeclaredConst": false, @@ -978,19 +978,19 @@ "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 668, + "id": 678, "nodeType": "ParameterList", "parameters": [], "src": "202:2:6" }, "payable": false, "returnParameters": { - "id": 669, + "id": 679, "nodeType": "ParameterList", "parameters": [], "src": "224:0:6" }, - "scope": 709, + "scope": 719, "src": "191:68:6", "stateMutability": "nonpayable", "superFunction": null, @@ -998,25 +998,25 @@ }, { "body": { - "id": 687, + "id": 697, "nodeType": "Block", "src": "341:53:6", "statements": [ { "expression": { "argumentTypes": null, - "id": 685, + "id": 695, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 683, + "id": 693, "name": "last_completed_migration", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 658, + "referencedDeclaration": 668, "src": "351:24:6", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -1027,11 +1027,11 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 684, + "id": 694, "name": "completed", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 678, + "referencedDeclaration": 688, "src": "378:9:6", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -1044,28 +1044,28 @@ "typeString": "uint256" } }, - "id": 686, + "id": 696, "nodeType": "ExpressionStatement", "src": "351:36:6" } ] }, "documentation": null, - "id": 688, + "id": 698, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 681, + "id": 691, "modifierName": { "argumentTypes": null, - "id": 680, + "id": 690, "name": "restricted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 667, + "referencedDeclaration": 677, "src": "326:10:6", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", @@ -1079,15 +1079,15 @@ "name": "setCompleted", "nodeType": "FunctionDefinition", "parameters": { - "id": 679, + "id": 689, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 678, + "id": 688, "name": "completed", "nodeType": "VariableDeclaration", - "scope": 688, + "scope": 698, "src": "287:14:6", "stateVariable": false, "storageLocation": "default", @@ -1096,7 +1096,7 @@ "typeString": "uint256" }, "typeName": { - "id": 677, + "id": 687, "name": "uint", "nodeType": "ElementaryTypeName", "src": "287:4:6", @@ -1113,12 +1113,12 @@ }, "payable": false, "returnParameters": { - "id": 682, + "id": 692, "nodeType": "ParameterList", "parameters": [], "src": "341:0:6" }, - "scope": 709, + "scope": 719, "src": "265:129:6", "stateMutability": "nonpayable", "superFunction": null, @@ -1126,37 +1126,37 @@ }, { "body": { - "id": 707, + "id": 717, "nodeType": "Block", "src": "476:119:6", "statements": [ { "assignments": [ - 696 + 706 ], "declarations": [ { "constant": false, - "id": 696, + "id": 706, "name": "upgraded", "nodeType": "VariableDeclaration", - "scope": 708, + "scope": 718, "src": "486:19:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_Migrations_$709", + "typeIdentifier": "t_contract$_Migrations_$719", "typeString": "contract Migrations" }, "typeName": { "contractScope": null, - "id": 695, + "id": 705, "name": "Migrations", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 709, + "referencedDeclaration": 719, "src": "486:10:6", "typeDescriptions": { - "typeIdentifier": "t_contract$_Migrations_$709", + "typeIdentifier": "t_contract$_Migrations_$719", "typeString": "contract Migrations" } }, @@ -1164,17 +1164,17 @@ "visibility": "internal" } ], - "id": 700, + "id": 710, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 698, + "id": 708, "name": "new_address", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 690, + "referencedDeclaration": 700, "src": "519:11:6", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1189,18 +1189,18 @@ "typeString": "address" } ], - "id": 697, + "id": 707, "name": "Migrations", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 709, + "referencedDeclaration": 719, "src": "508:10:6", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Migrations_$709_$", + "typeIdentifier": "t_type$_t_contract$_Migrations_$719_$", "typeString": "type(contract Migrations)" } }, - "id": 699, + "id": 709, "isConstant": false, "isLValue": false, "isPure": false, @@ -1210,7 +1210,7 @@ "nodeType": "FunctionCall", "src": "508:23:6", "typeDescriptions": { - "typeIdentifier": "t_contract$_Migrations_$709", + "typeIdentifier": "t_contract$_Migrations_$719", "typeString": "contract Migrations" } }, @@ -1223,11 +1223,11 @@ "arguments": [ { "argumentTypes": null, - "id": 704, + "id": 714, "name": "last_completed_migration", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 658, + "referencedDeclaration": 668, "src": "563:24:6", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -1244,32 +1244,32 @@ ], "expression": { "argumentTypes": null, - "id": 701, + "id": 711, "name": "upgraded", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 696, + "referencedDeclaration": 706, "src": "541:8:6", "typeDescriptions": { - "typeIdentifier": "t_contract$_Migrations_$709", + "typeIdentifier": "t_contract$_Migrations_$719", "typeString": "contract Migrations" } }, - "id": 703, + "id": 713, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "setCompleted", "nodeType": "MemberAccess", - "referencedDeclaration": 688, + "referencedDeclaration": 698, "src": "541:21:6", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256) external" } }, - "id": 705, + "id": 715, "isConstant": false, "isLValue": false, "isPure": false, @@ -1283,28 +1283,28 @@ "typeString": "tuple()" } }, - "id": 706, + "id": 716, "nodeType": "ExpressionStatement", "src": "541:47:6" } ] }, "documentation": null, - "id": 708, + "id": 718, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 693, + "id": 703, "modifierName": { "argumentTypes": null, - "id": 692, + "id": 702, "name": "restricted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 667, + "referencedDeclaration": 677, "src": "461:10:6", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", @@ -1318,15 +1318,15 @@ "name": "upgrade", "nodeType": "FunctionDefinition", "parameters": { - "id": 691, + "id": 701, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 690, + "id": 700, "name": "new_address", "nodeType": "VariableDeclaration", - "scope": 708, + "scope": 718, "src": "417:19:6", "stateVariable": false, "storageLocation": "default", @@ -1335,7 +1335,7 @@ "typeString": "address" }, "typeName": { - "id": 689, + "id": 699, "name": "address", "nodeType": "ElementaryTypeName", "src": "417:7:6", @@ -1352,19 +1352,19 @@ }, "payable": false, "returnParameters": { - "id": 694, + "id": 704, "nodeType": "ParameterList", "parameters": [], "src": "476:0:6" }, - "scope": 709, + "scope": 719, "src": "400:195:6", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" } ], - "scope": 710, + "scope": 720, "src": "25:572:6" } ], @@ -1378,22 +1378,16 @@ "4": { "events": {}, "links": {}, - "address": "0x310ed4914d3d280593bdd91cd25f3010cef95c8f", - "transactionHash": "0x77ed51dc2aaa3502d11556785f91f9a1ec7102c4ab4d9fd24b163a12d46664ed" - }, - "1527316019334": { - "events": {}, - "links": {}, - "address": "0x9511a1770d3700a42a922080cf7f2f20db4d9c05", - "transactionHash": "0x3215566e4282c1fe81a9e093b0fa684ce647015b0e43446042c71426709d8170" + "address": "0xc5c55f0cb09881e18e507e904c73c6db48f88616", + "transactionHash": "0xf83653e8ebe550e4eb2bcee2ddc8134fd1b04816395503cb8ea90dfddc649c07" }, "1527420696956": { "events": {}, "links": {}, - "address": "0x03b6c37cb58fdaec2b5f7e9f9ed58a7525ef79d7", - "transactionHash": "0xb6a19a7a679a1474c09c651e4151421f210afa3f47effed019d4c0206144ee5f" + "address": "0xf73d9d696980438e73abe252b508f2db3ad4c72b", + "transactionHash": "0x91576b3419f784105bdd4f493f68d2cc6f57975bd21641a7433eb6e705180b3b" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-27T11:31:46.343Z" + "updatedAt": "2018-05-28T06:08:59.489Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/Module.json b/safe-contracts/build/contracts/Module.json index 0f066967..da3adb7a 100644 --- a/safe-contracts/build/contracts/Module.json +++ b/safe-contracts/build/contracts/Module.json @@ -30,24 +30,24 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50610202806100206000396000f30060806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063481c6a75146100515780637de7edef146100a8575b600080fd5b34801561005d57600080fd5b506100666100eb565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156100b457600080fd5b506100e9600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610111565b005b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561016d57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561019357600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505600a165627a7a723058201e28a6acfe6922717722c910e51de720875c6e665112c8866ae58ba4fc613f1b0029", - "deployedBytecode": "0x60806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063481c6a75146100515780637de7edef146100a8575b600080fd5b34801561005d57600080fd5b506100666100eb565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156100b457600080fd5b506100e9600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610111565b005b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561016d57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561019357600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505600a165627a7a723058201e28a6acfe6922717722c910e51de720875c6e665112c8866ae58ba4fc613f1b0029", - "sourceMap": "225:437:7:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;225:437:7;;;;;;;", - "deployedSourceMap": "225:437:7:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;262:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;262:28:7;;;;;;;;;;;;;;;;;;;;;;;;;;;626:208:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;626:208:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;262:28:7;;;;;;;;;;;;;:::o;626:208:5:-;359:7:7;;;;;;;;;;;337:30;;:10;:30;;;329:39;;;;;;;;791:1:5;776:11;:16;;;;768:25;;;;;;;;816:11;803:10;;:24;;;;;;;;;;;;;;;;;;626:208;:::o", - "source": "pragma solidity 0.4.24;\nimport \"./MasterCopy.sol\";\nimport \"./ModuleManager.sol\";\n\n\n/// @title Module - Base class for modules.\n/// @author Stefan George - \n/// @author Richard Meissner - \ncontract Module is MasterCopy {\n\n ModuleManager public manager;\n\n modifier authorized() {\n require(msg.sender == address(manager));\n _;\n }\n\n function setManager()\n internal\n {\n // manager can only be 0 at initalization of contract.\n // Check ensures that setup function can only be called once.\n require(address(manager) == 0);\n manager = ModuleManager(msg.sender);\n }\n}\n", + "bytecode": "0x608060405234801561001057600080fd5b50610320806100206000396000f30060806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063481c6a75146100515780637de7edef146100a8575b600080fd5b34801561005d57600080fd5b506100666100eb565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156100b457600080fd5b506100e9600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610111565b005b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156101fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d206d81526020017f616e61676572000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141515156102b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f496e76616c6964206d617374657220636f707920616464726573732070726f7681526020017f696465640000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505600a165627a7a723058209e7f23d7b73f9e5b09e154410dde0c89b8f5a21c14b2641881da29e7c93cea470029", + "deployedBytecode": "0x60806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063481c6a75146100515780637de7edef146100a8575b600080fd5b34801561005d57600080fd5b506100666100eb565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156100b457600080fd5b506100e9600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610111565b005b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156101fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d206d81526020017f616e61676572000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141515156102b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f496e76616c6964206d617374657220636f707920616464726573732070726f7681526020017f696465640000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505600a165627a7a723058209e7f23d7b73f9e5b09e154410dde0c89b8f5a21c14b2641881da29e7c93cea470029", + "sourceMap": "225:511:7:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;225:511:7;;;;;;;", + "deployedSourceMap": "225:511:7:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;262:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;262:28:7;;;;;;;;;;;;;;;;;;;;;;;;;;;626:248:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;626:248:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;262:28:7;;;;;;;;;;;;;:::o;626:248:5:-;359:7:7;;;;;;;;;;;337:30;;:10;:30;;;329:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;791:1:5;776:11;:16;;;;768:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;856:11;843:10;;:24;;;;;;;;;;;;;;;;;;626:248;:::o", + "source": "pragma solidity 0.4.24;\nimport \"./MasterCopy.sol\";\nimport \"./ModuleManager.sol\";\n\n\n/// @title Module - Base class for modules.\n/// @author Stefan George - \n/// @author Richard Meissner - \ncontract Module is MasterCopy {\n\n ModuleManager public manager;\n\n modifier authorized() {\n require(msg.sender == address(manager), \"Method can only be called from manager\");\n _;\n }\n\n function setManager()\n internal\n {\n // manager can only be 0 at initalization of contract.\n // Check ensures that setup function can only be called once.\n require(address(manager) == 0, \"Manager has already been set\");\n manager = ModuleManager(msg.sender);\n }\n}\n", "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Module.sol", "ast": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Module.sol", "exportedSymbols": { "Module": [ - 750 + 762 ] }, - "id": 751, + "id": 763, "nodeType": "SourceUnit", "nodes": [ { - "id": 711, + "id": 721, "literals": [ "solidity", "0.4", @@ -59,10 +59,10 @@ { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/MasterCopy.sol", "file": "./MasterCopy.sol", - "id": 712, + "id": 722, "nodeType": "ImportDirective", - "scope": 751, - "sourceUnit": 653, + "scope": 763, + "sourceUnit": 663, "src": "24:26:7", "symbolAliases": [], "unitAlias": "" @@ -70,10 +70,10 @@ { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/ModuleManager.sol", "file": "./ModuleManager.sol", - "id": 713, + "id": 723, "nodeType": "ImportDirective", - "scope": 751, - "sourceUnit": 1101, + "scope": 763, + "sourceUnit": 1119, "src": "51:29:7", "symbolAliases": [], "unitAlias": "" @@ -84,59 +84,59 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 714, + "id": 724, "name": "MasterCopy", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 652, + "referencedDeclaration": 662, "src": "244:10:7", "typeDescriptions": { - "typeIdentifier": "t_contract$_MasterCopy_$652", + "typeIdentifier": "t_contract$_MasterCopy_$662", "typeString": "contract MasterCopy" } }, - "id": 715, + "id": 725, "nodeType": "InheritanceSpecifier", "src": "244:10:7" } ], "contractDependencies": [ - 652, - 1619 + 662, + 1654 ], "contractKind": "contract", "documentation": "@title Module - Base class for modules.\n @author Stefan George - \n @author Richard Meissner - ", "fullyImplemented": true, - "id": 750, + "id": 762, "linearizedBaseContracts": [ - 750, - 652, - 1619 + 762, + 662, + 1654 ], "name": "Module", "nodeType": "ContractDefinition", "nodes": [ { "constant": false, - "id": 717, + "id": 727, "name": "manager", "nodeType": "VariableDeclaration", - "scope": 750, + "scope": 762, "src": "262:28:7", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1100", + "typeIdentifier": "t_contract$_ModuleManager_$1118", "typeString": "contract ModuleManager" }, "typeName": { "contractScope": null, - "id": 716, + "id": 726, "name": "ModuleManager", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1100, + "referencedDeclaration": 1118, "src": "262:13:7", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1100", + "typeIdentifier": "t_contract$_ModuleManager_$1118", "typeString": "contract ModuleManager" } }, @@ -145,9 +145,9 @@ }, { "body": { - "id": 729, + "id": 740, "nodeType": "Block", - "src": "319:67:7", + "src": "319:109:7", "statements": [ { "expression": { @@ -159,7 +159,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 725, + "id": 735, "isConstant": false, "isLValue": false, "isPure": false, @@ -168,18 +168,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 720, + "id": 730, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2598, + "referencedDeclaration": 2654, "src": "337:3:7", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 721, + "id": 731, "isConstant": false, "isLValue": false, "isPure": false, @@ -200,14 +200,14 @@ "arguments": [ { "argumentTypes": null, - "id": 723, + "id": 733, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 717, + "referencedDeclaration": 727, "src": "359:7:7", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1100", + "typeIdentifier": "t_contract$_ModuleManager_$1118", "typeString": "contract ModuleManager" } } @@ -215,11 +215,11 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_ModuleManager_$1100", + "typeIdentifier": "t_contract$_ModuleManager_$1118", "typeString": "contract ModuleManager" } ], - "id": 722, + "id": 732, "isConstant": false, "isLValue": false, "isPure": true, @@ -232,7 +232,7 @@ }, "typeName": "address" }, - "id": 724, + "id": 734, "isConstant": false, "isLValue": false, "isPure": false, @@ -251,6 +251,24 @@ "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d206d616e61676572", + "id": 736, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "369:40:7", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_f857f17fb7e241a141cb689ce417fc402008e9655fbe55c721e32587b5d510de", + "typeString": "literal_string \"Method can only be called from manager\"" + }, + "value": "Method can only be called from manager" } ], "expression": { @@ -258,23 +276,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_f857f17fb7e241a141cb689ce417fc402008e9655fbe55c721e32587b5d510de", + "typeString": "literal_string \"Method can only be called from manager\"" } ], - "id": 719, + "id": 729, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, + "referencedDeclaration": 2658, "src": "329:7:7", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 726, + "id": 737, "isConstant": false, "isLValue": false, "isPure": false, @@ -282,41 +304,41 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "329:39:7", + "src": "329:81:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 727, + "id": 738, "nodeType": "ExpressionStatement", - "src": "329:39:7" + "src": "329:81:7" }, { - "id": 728, + "id": 739, "nodeType": "PlaceholderStatement", - "src": "378:1:7" + "src": "420:1:7" } ] }, "documentation": null, - "id": 730, + "id": 741, "name": "authorized", "nodeType": "ModifierDefinition", "parameters": { - "id": 718, + "id": 728, "nodeType": "ParameterList", "parameters": [], "src": "316:2:7" }, - "src": "297:89:7", + "src": "297:131:7", "visibility": "internal" }, { "body": { - "id": 748, + "id": 760, "nodeType": "Block", - "src": "435:225:7", + "src": "477:257:7", "statements": [ { "expression": { @@ -328,7 +350,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 738, + "id": 749, "isConstant": false, "isLValue": false, "isPure": false, @@ -338,14 +360,14 @@ "arguments": [ { "argumentTypes": null, - "id": 735, + "id": 746, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 717, - "src": "594:7:7", + "referencedDeclaration": 727, + "src": "636:7:7", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1100", + "typeIdentifier": "t_contract$_ModuleManager_$1118", "typeString": "contract ModuleManager" } } @@ -353,24 +375,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_ModuleManager_$1100", + "typeIdentifier": "t_contract$_ModuleManager_$1118", "typeString": "contract ModuleManager" } ], - "id": 734, + "id": 745, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "586:7:7", + "src": "628:7:7", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 736, + "id": 747, "isConstant": false, "isLValue": false, "isPure": false, @@ -378,7 +400,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "586:16:7", + "src": "628:16:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -389,14 +411,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 737, + "id": 748, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "606:1:7", + "src": "648:1:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -404,11 +426,29 @@ }, "value": "0" }, - "src": "586:21:7", + "src": "628:21:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "4d616e616765722068617320616c7265616479206265656e20736574", + "id": 750, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "651:30:7", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_5b4e79257e154cde85ff5a3cf5bf48eb2c3921f8c031de73d371d41be013f3cc", + "typeString": "literal_string \"Manager has already been set\"" + }, + "value": "Manager has already been set" } ], "expression": { @@ -416,23 +456,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_5b4e79257e154cde85ff5a3cf5bf48eb2c3921f8c031de73d371d41be013f3cc", + "typeString": "literal_string \"Manager has already been set\"" } ], - "id": 733, + "id": 744, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "578:7:7", + "referencedDeclaration": 2658, + "src": "620:7:7", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 739, + "id": 751, "isConstant": false, "isLValue": false, "isPure": false, @@ -440,34 +484,34 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "578:30:7", + "src": "620:62:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 740, + "id": 752, "nodeType": "ExpressionStatement", - "src": "578:30:7" + "src": "620:62:7" }, { "expression": { "argumentTypes": null, - "id": 746, + "id": 758, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 741, + "id": 753, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 717, - "src": "618:7:7", + "referencedDeclaration": 727, + "src": "692:7:7", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1100", + "typeIdentifier": "t_contract$_ModuleManager_$1118", "typeString": "contract ModuleManager" } }, @@ -480,18 +524,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 743, + "id": 755, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2598, - "src": "642:3:7", + "referencedDeclaration": 2654, + "src": "716:3:7", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 744, + "id": 756, "isConstant": false, "isLValue": false, "isPure": false, @@ -499,7 +543,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "642:10:7", + "src": "716:10:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -513,18 +557,18 @@ "typeString": "address" } ], - "id": 742, + "id": 754, "name": "ModuleManager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1100, - "src": "628:13:7", + "referencedDeclaration": 1118, + "src": "702:13:7", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_ModuleManager_$1100_$", + "typeIdentifier": "t_type$_t_contract$_ModuleManager_$1118_$", "typeString": "type(contract ModuleManager)" } }, - "id": 745, + "id": 757, "isConstant": false, "isLValue": false, "isPure": false, @@ -532,26 +576,26 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "628:25:7", + "src": "702:25:7", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1100", + "typeIdentifier": "t_contract$_ModuleManager_$1118", "typeString": "contract ModuleManager" } }, - "src": "618:35:7", + "src": "692:35:7", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1100", + "typeIdentifier": "t_contract$_ModuleManager_$1118", "typeString": "contract ModuleManager" } }, - "id": 747, + "id": 759, "nodeType": "ExpressionStatement", - "src": "618:35:7" + "src": "692:35:7" } ] }, "documentation": null, - "id": 749, + "id": 761, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -559,43 +603,43 @@ "name": "setManager", "nodeType": "FunctionDefinition", "parameters": { - "id": 731, + "id": 742, "nodeType": "ParameterList", "parameters": [], - "src": "411:2:7" + "src": "453:2:7" }, "payable": false, "returnParameters": { - "id": 732, + "id": 743, "nodeType": "ParameterList", "parameters": [], - "src": "435:0:7" + "src": "477:0:7" }, - "scope": 750, - "src": "392:268:7", + "scope": 762, + "src": "434:300:7", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" } ], - "scope": 751, - "src": "225:437:7" + "scope": 763, + "src": "225:511:7" } ], - "src": "0:663:7" + "src": "0:737:7" }, "legacyAST": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Module.sol", "exportedSymbols": { "Module": [ - 750 + 762 ] }, - "id": 751, + "id": 763, "nodeType": "SourceUnit", "nodes": [ { - "id": 711, + "id": 721, "literals": [ "solidity", "0.4", @@ -607,10 +651,10 @@ { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/MasterCopy.sol", "file": "./MasterCopy.sol", - "id": 712, + "id": 722, "nodeType": "ImportDirective", - "scope": 751, - "sourceUnit": 653, + "scope": 763, + "sourceUnit": 663, "src": "24:26:7", "symbolAliases": [], "unitAlias": "" @@ -618,10 +662,10 @@ { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/ModuleManager.sol", "file": "./ModuleManager.sol", - "id": 713, + "id": 723, "nodeType": "ImportDirective", - "scope": 751, - "sourceUnit": 1101, + "scope": 763, + "sourceUnit": 1119, "src": "51:29:7", "symbolAliases": [], "unitAlias": "" @@ -632,59 +676,59 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 714, + "id": 724, "name": "MasterCopy", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 652, + "referencedDeclaration": 662, "src": "244:10:7", "typeDescriptions": { - "typeIdentifier": "t_contract$_MasterCopy_$652", + "typeIdentifier": "t_contract$_MasterCopy_$662", "typeString": "contract MasterCopy" } }, - "id": 715, + "id": 725, "nodeType": "InheritanceSpecifier", "src": "244:10:7" } ], "contractDependencies": [ - 652, - 1619 + 662, + 1654 ], "contractKind": "contract", "documentation": "@title Module - Base class for modules.\n @author Stefan George - \n @author Richard Meissner - ", "fullyImplemented": true, - "id": 750, + "id": 762, "linearizedBaseContracts": [ - 750, - 652, - 1619 + 762, + 662, + 1654 ], "name": "Module", "nodeType": "ContractDefinition", "nodes": [ { "constant": false, - "id": 717, + "id": 727, "name": "manager", "nodeType": "VariableDeclaration", - "scope": 750, + "scope": 762, "src": "262:28:7", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1100", + "typeIdentifier": "t_contract$_ModuleManager_$1118", "typeString": "contract ModuleManager" }, "typeName": { "contractScope": null, - "id": 716, + "id": 726, "name": "ModuleManager", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1100, + "referencedDeclaration": 1118, "src": "262:13:7", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1100", + "typeIdentifier": "t_contract$_ModuleManager_$1118", "typeString": "contract ModuleManager" } }, @@ -693,9 +737,9 @@ }, { "body": { - "id": 729, + "id": 740, "nodeType": "Block", - "src": "319:67:7", + "src": "319:109:7", "statements": [ { "expression": { @@ -707,7 +751,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 725, + "id": 735, "isConstant": false, "isLValue": false, "isPure": false, @@ -716,18 +760,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 720, + "id": 730, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2598, + "referencedDeclaration": 2654, "src": "337:3:7", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 721, + "id": 731, "isConstant": false, "isLValue": false, "isPure": false, @@ -748,14 +792,14 @@ "arguments": [ { "argumentTypes": null, - "id": 723, + "id": 733, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 717, + "referencedDeclaration": 727, "src": "359:7:7", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1100", + "typeIdentifier": "t_contract$_ModuleManager_$1118", "typeString": "contract ModuleManager" } } @@ -763,11 +807,11 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_ModuleManager_$1100", + "typeIdentifier": "t_contract$_ModuleManager_$1118", "typeString": "contract ModuleManager" } ], - "id": 722, + "id": 732, "isConstant": false, "isLValue": false, "isPure": true, @@ -780,7 +824,7 @@ }, "typeName": "address" }, - "id": 724, + "id": 734, "isConstant": false, "isLValue": false, "isPure": false, @@ -799,6 +843,24 @@ "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d206d616e61676572", + "id": 736, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "369:40:7", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_f857f17fb7e241a141cb689ce417fc402008e9655fbe55c721e32587b5d510de", + "typeString": "literal_string \"Method can only be called from manager\"" + }, + "value": "Method can only be called from manager" } ], "expression": { @@ -806,23 +868,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_f857f17fb7e241a141cb689ce417fc402008e9655fbe55c721e32587b5d510de", + "typeString": "literal_string \"Method can only be called from manager\"" } ], - "id": 719, + "id": 729, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, + "referencedDeclaration": 2658, "src": "329:7:7", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 726, + "id": 737, "isConstant": false, "isLValue": false, "isPure": false, @@ -830,41 +896,41 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "329:39:7", + "src": "329:81:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 727, + "id": 738, "nodeType": "ExpressionStatement", - "src": "329:39:7" + "src": "329:81:7" }, { - "id": 728, + "id": 739, "nodeType": "PlaceholderStatement", - "src": "378:1:7" + "src": "420:1:7" } ] }, "documentation": null, - "id": 730, + "id": 741, "name": "authorized", "nodeType": "ModifierDefinition", "parameters": { - "id": 718, + "id": 728, "nodeType": "ParameterList", "parameters": [], "src": "316:2:7" }, - "src": "297:89:7", + "src": "297:131:7", "visibility": "internal" }, { "body": { - "id": 748, + "id": 760, "nodeType": "Block", - "src": "435:225:7", + "src": "477:257:7", "statements": [ { "expression": { @@ -876,7 +942,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 738, + "id": 749, "isConstant": false, "isLValue": false, "isPure": false, @@ -886,14 +952,14 @@ "arguments": [ { "argumentTypes": null, - "id": 735, + "id": 746, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 717, - "src": "594:7:7", + "referencedDeclaration": 727, + "src": "636:7:7", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1100", + "typeIdentifier": "t_contract$_ModuleManager_$1118", "typeString": "contract ModuleManager" } } @@ -901,24 +967,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_ModuleManager_$1100", + "typeIdentifier": "t_contract$_ModuleManager_$1118", "typeString": "contract ModuleManager" } ], - "id": 734, + "id": 745, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "586:7:7", + "src": "628:7:7", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 736, + "id": 747, "isConstant": false, "isLValue": false, "isPure": false, @@ -926,7 +992,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "586:16:7", + "src": "628:16:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -937,14 +1003,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 737, + "id": 748, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "606:1:7", + "src": "648:1:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -952,11 +1018,29 @@ }, "value": "0" }, - "src": "586:21:7", + "src": "628:21:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "4d616e616765722068617320616c7265616479206265656e20736574", + "id": 750, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "651:30:7", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_5b4e79257e154cde85ff5a3cf5bf48eb2c3921f8c031de73d371d41be013f3cc", + "typeString": "literal_string \"Manager has already been set\"" + }, + "value": "Manager has already been set" } ], "expression": { @@ -964,23 +1048,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_5b4e79257e154cde85ff5a3cf5bf48eb2c3921f8c031de73d371d41be013f3cc", + "typeString": "literal_string \"Manager has already been set\"" } ], - "id": 733, + "id": 744, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "578:7:7", + "referencedDeclaration": 2658, + "src": "620:7:7", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 739, + "id": 751, "isConstant": false, "isLValue": false, "isPure": false, @@ -988,34 +1076,34 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "578:30:7", + "src": "620:62:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 740, + "id": 752, "nodeType": "ExpressionStatement", - "src": "578:30:7" + "src": "620:62:7" }, { "expression": { "argumentTypes": null, - "id": 746, + "id": 758, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 741, + "id": 753, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 717, - "src": "618:7:7", + "referencedDeclaration": 727, + "src": "692:7:7", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1100", + "typeIdentifier": "t_contract$_ModuleManager_$1118", "typeString": "contract ModuleManager" } }, @@ -1028,18 +1116,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 743, + "id": 755, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2598, - "src": "642:3:7", + "referencedDeclaration": 2654, + "src": "716:3:7", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 744, + "id": 756, "isConstant": false, "isLValue": false, "isPure": false, @@ -1047,7 +1135,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "642:10:7", + "src": "716:10:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1061,18 +1149,18 @@ "typeString": "address" } ], - "id": 742, + "id": 754, "name": "ModuleManager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1100, - "src": "628:13:7", + "referencedDeclaration": 1118, + "src": "702:13:7", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_ModuleManager_$1100_$", + "typeIdentifier": "t_type$_t_contract$_ModuleManager_$1118_$", "typeString": "type(contract ModuleManager)" } }, - "id": 745, + "id": 757, "isConstant": false, "isLValue": false, "isPure": false, @@ -1080,26 +1168,26 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "628:25:7", + "src": "702:25:7", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1100", + "typeIdentifier": "t_contract$_ModuleManager_$1118", "typeString": "contract ModuleManager" } }, - "src": "618:35:7", + "src": "692:35:7", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1100", + "typeIdentifier": "t_contract$_ModuleManager_$1118", "typeString": "contract ModuleManager" } }, - "id": 747, + "id": 759, "nodeType": "ExpressionStatement", - "src": "618:35:7" + "src": "692:35:7" } ] }, "documentation": null, - "id": 749, + "id": 761, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -1107,30 +1195,30 @@ "name": "setManager", "nodeType": "FunctionDefinition", "parameters": { - "id": 731, + "id": 742, "nodeType": "ParameterList", "parameters": [], - "src": "411:2:7" + "src": "453:2:7" }, "payable": false, "returnParameters": { - "id": 732, + "id": 743, "nodeType": "ParameterList", "parameters": [], - "src": "435:0:7" + "src": "477:0:7" }, - "scope": 750, - "src": "392:268:7", + "scope": 762, + "src": "434:300:7", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" } ], - "scope": 751, - "src": "225:437:7" + "scope": 763, + "src": "225:511:7" } ], - "src": "0:663:7" + "src": "0:737:7" }, "compiler": { "name": "solc", @@ -1138,5 +1226,5 @@ }, "networks": {}, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-27T11:12:45.579Z" + "updatedAt": "2018-05-28T05:59:52.702Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/ModuleManager.json b/safe-contracts/build/contracts/ModuleManager.json index 240aef16..a04684d7 100644 --- a/safe-contracts/build/contracts/ModuleManager.json +++ b/safe-contracts/build/contracts/ModuleManager.json @@ -138,24 +138,24 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50610d8f806100206000396000f300608060405260043610610083576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063468721a714610085578063610b59251461013d57806385e332cd14610180578063a3f4df7e146101d7578063b2494df314610267578063e009cfde146102d3578063ffa1ad7414610336575b005b34801561009157600080fd5b50610123600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff1690602001909291905050506103c6565b604051808215151515815260200191505060405180910390f35b34801561014957600080fd5b5061017e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610462565b005b34801561018c57600080fd5b506101956106db565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101e357600080fd5b506101ec6106e0565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561022c578082015181840152602081019050610211565b50505050905090810190601f1680156102595780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561027357600080fd5b5061027c610719565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156102bf5780820151818401526020810190506102a4565b505050509050019250505060405180910390f35b3480156102df57600080fd5b50610334600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506109bc565b005b34801561034257600080fd5b5061034b610beb565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561038b578082015181840152602081019050610370565b50505050905090810190601f1680156103b85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6000806000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415151561044b57600080fd5b610458858585855a610c24565b9050949350505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561049c57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141580156104f05750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b15156104fb57600080fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561057e57600080fd5b600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600181565b6040805190810160405280600e81526020017f4d6f64756c65204d616e6167657200000000000000000000000000000000000081525081565b6060600080606060009250600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151561082b576000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508280600101935050610787565b8260405190808252806020026020018201604052801561085a5781602001602082028038833980820191505090505b50905060009250600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415156109b35781818481518110151561090957fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915082806001019350506108c4565b80935050505090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156109f657600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610a8e57600080fd5b6000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b60008060006002811115610c3457fe5b846002811115610c4057fe5b1415610c5957610c5287878786610d21565b9150610d17565b60016002811115610c6657fe5b846002811115610c7257fe5b1415610c8a57610c83878685610d3a565b9150610d16565b610c9385610d51565b905060008173ffffffffffffffffffffffffffffffffffffffff16141591507f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b5b5095945050505050565b6000806000845160208601878987f19050949350505050565b60008060008451602086018786f490509392505050565b60008151602083016000f090509190505600a165627a7a72305820433f31b2330c2467d55766d21a1ebc4edbb89e459704843222ec9c2d5e0f8c000029", - "deployedBytecode": "0x608060405260043610610083576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063468721a714610085578063610b59251461013d57806385e332cd14610180578063a3f4df7e146101d7578063b2494df314610267578063e009cfde146102d3578063ffa1ad7414610336575b005b34801561009157600080fd5b50610123600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff1690602001909291905050506103c6565b604051808215151515815260200191505060405180910390f35b34801561014957600080fd5b5061017e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610462565b005b34801561018c57600080fd5b506101956106db565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101e357600080fd5b506101ec6106e0565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561022c578082015181840152602081019050610211565b50505050905090810190601f1680156102595780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561027357600080fd5b5061027c610719565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156102bf5780820151818401526020810190506102a4565b505050509050019250505060405180910390f35b3480156102df57600080fd5b50610334600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506109bc565b005b34801561034257600080fd5b5061034b610beb565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561038b578082015181840152602081019050610370565b50505050905090810190601f1680156103b85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6000806000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415151561044b57600080fd5b610458858585855a610c24565b9050949350505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561049c57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141580156104f05750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b15156104fb57600080fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561057e57600080fd5b600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600181565b6040805190810160405280600e81526020017f4d6f64756c65204d616e6167657200000000000000000000000000000000000081525081565b6060600080606060009250600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151561082b576000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508280600101935050610787565b8260405190808252806020026020018201604052801561085a5781602001602082028038833980820191505090505b50905060009250600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415156109b35781818481518110151561090957fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915082806001019350506108c4565b80935050505090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156109f657600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610a8e57600080fd5b6000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b60008060006002811115610c3457fe5b846002811115610c4057fe5b1415610c5957610c5287878786610d21565b9150610d17565b60016002811115610c6657fe5b846002811115610c7257fe5b1415610c8a57610c83878685610d3a565b9150610d16565b610c9385610d51565b905060008173ffffffffffffffffffffffffffffffffffffffff16141591507f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b5b5095945050505050565b6000806000845160208601878987f19050949350505050565b60008060008451602086018786f490509392505050565b60008151602083016000f090509190505600a165627a7a72305820433f31b2330c2467d55766d21a1ebc4edbb89e459704843222ec9c2d5e0f8c000029", - "sourceMap": "303:4860:8:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;303:4860:8;;;;;;;", - "deployedSourceMap": "303:4860:8:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2522:377;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2522:377:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1235:391;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1235:391:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;499:55;;8:9:-1;5:2;;;30:1;27;20:12;5:2;499:55:8;;;;;;;;;;;;;;;;;;;;;;;;;;;401:46;;8:9:-1;5:2;;;30:1;27;20:12;5:2;401:46:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;401:46:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4423:738;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4423:738:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;4423:738:8;;;;;;;;;;;;;;;;;1887:299;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1887:299:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;453:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;453:40:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;453:40:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2522:377;2654:12;2762:1;2739:7;:19;2747:10;2739:19;;;;;;;;;;;;;;;;;;;;;;;;;:24;;;;2731:33;;;;;;;;2846:46;2854:2;2858:5;2865:4;2871:9;2882;2846:7;:46::i;:::-;2836:56;;2522:377;;;;;;:::o;1235:391::-;244:4:13;222:27;;:10;:27;;;214:36;;;;;;;;1401:1:8;1390:6;1382:20;;;;:59;;;;;550:3;1406:35;;1414:6;1406:35;;;;1382:59;1374:68;;;;;;;;1520:1;1501:7;:15;1509:6;1501:15;;;;;;;;;;;;;;;;;;;;;;;;;:20;;;1493:29;;;;;;;;1550:7;:25;550:3;1550:25;;;;;;;;;;;;;;;;;;;;;;;;;1532:7;:15;1540:6;1532:15;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;1613:6;1585:7;:25;550:3;1585:25;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;1235:391;:::o;499:55::-;550:3;499:55;:::o;401:46::-;;;;;;;;;;;;;;;;;;;;:::o;4423:738::-;4490:9;4549:19;4582:21;4782:22;4571:1;4549:23;;4606:7;:25;550:3;4606:25;;;;;;;;;;;;;;;;;;;;;;;;;4582:49;;4641:132;550:3;4647:33;;:13;:33;;;;4641:132;;;4712:7;:22;4720:13;4712:22;;;;;;;;;;;;;;;;;;;;;;;;;4696:38;;4748:14;;;;;;;4641:132;;;4821:11;4807:26;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;4807:26:8;;;;4782:51;;4891:1;4877:15;;4918:7;:25;550:3;4918:25;;;;;;;;;;;;;;;;;;;;;;;;;4902:41;;4953:180;550:3;4959:33;;:13;:33;;;;4953:180;;;5029:13;5008:5;5014:11;5008:18;;;;;;;;;;;;;;;;;:34;;;;;;;;;;;5072:7;:22;5080:13;5072:22;;;;;;;;;;;;;;;;;;;;;;;;;5056:38;;5108:14;;;;;;;4953:180;;;5149:5;5142:12;;4423:738;;;;:::o;1887:299::-;244:4:13;222:27;;:10;:27;;;214:36;;;;;;;;2095:6:8;2064:38;;:7;:19;2072:10;2064:19;;;;;;;;;;;;;;;;;;;;;;;;;:38;;;2056:47;;;;;;;;2135:7;:15;2143:6;2135:15;;;;;;;;;;;;;;;;;;;;;;;;;2113:7;:19;2121:10;2113:19;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;2178:1;2160:7;:15;2168:6;2160:15;;;;;;;;;;;;;;;;:19;;;;;;;;;;;;;;;;;;1887:299;;:::o;453:40::-;;;;;;;;;;;;;;;;;;;;:::o;2905:548::-;3036:12;3307:19;3081;3068:32;;;;;;;;:9;:32;;;;;;;;;3064:383;;;3124:35;3136:2;3140:5;3147:4;3153:5;3124:11;:35::i;:::-;3114:45;;3064:383;;;3191:27;3178:40;;;;;;;;:9;:40;;;;;;;;;3174:273;;;3242:36;3262:2;3266:4;3272:5;3242:19;:36::i;:::-;3232:46;;3174:273;;;3329:19;3343:4;3329:13;:19::i;:::-;3307:41;;3387:1;3372:11;:16;;;;3362:26;;3407:29;3424:11;3407:29;;;;;;;;;;;;;;;;;;;;;;3174:273;3064:383;2905:548;;;;;;;;:::o;3459:309::-;3568:12;3750:1;3747;3740:4;3734:11;3727:4;3721;3717:15;3710:5;3706:2;3699:5;3694:58;3683:69;;3669:93;;;;;;:::o;3774:303::-;3876:12;4059:1;4056;4049:4;4043:11;4036:4;4030;4026:15;4022:2;4015:5;4002:59;3991:70;;3977:94;;;;;:::o;4083:261::-;4152:19;4322:4;4316:11;4309:4;4303;4299:15;4296:1;4289:39;4274:54;;4260:78;;;:::o", - "source": "pragma solidity 0.4.24;\nimport \"./Module.sol\";\nimport \"./MasterCopy.sol\";\nimport \"./Enum.sol\";\n\n\n/// @title Module Manager - A contract that manages modules that can execute transactions via this contract\n/// @author Stefan George - \n/// @author Richard Meissner - \ncontract ModuleManager is SelfAuthorized {\n\n event ContractCreation(address newContract);\n\n string public constant NAME = \"Module Manager\";\n string public constant VERSION = \"0.0.1\";\n address public constant SENTINEL_MODULES = address(0x1);\n\n mapping (address => address) internal modules;\n\n /// @dev Fallback function accepts Ether transactions.\n function ()\n external\n payable\n {\n\n }\n\n function setupModules(address to, bytes data)\n internal\n {\n require(modules[SENTINEL_MODULES] == 0);\n modules[SENTINEL_MODULES] = SENTINEL_MODULES;\n if (to != 0)\n // Setup has to complete successfully or transaction fails.\n require(executeDelegateCall(to, data, gasleft()));\n }\n\n /// @dev Allows to add a module to the whitelist.\n /// This can only be done via a Safe transaction.\n /// @param module Module to be whitelisted.\n function enableModule(Module module)\n public\n authorized\n {\n // Module address cannot be null or sentinel.\n require(address(module) != 0 && address(module) != SENTINEL_MODULES);\n // Module cannot be added twice.\n require(modules[module] == 0);\n modules[module] = modules[SENTINEL_MODULES];\n modules[SENTINEL_MODULES] = module;\n }\n\n /// @dev Allows to remove a module from the whitelist.\n /// This can only be done via a Safe transaction.\n /// @param prevModule Module that pointed to the module to be removed in the linked list\n /// @param module Module to be removed.\n function disableModule(Module prevModule, Module module)\n public\n authorized\n {\n // Validate module address corresponds to module index.\n require(modules[prevModule] == address(module));\n modules[prevModule] = modules[module];\n modules[module] = 0;\n }\n\n /// @dev Allows a Module to execute a Safe transaction without any further confirmations.\n /// @param to Destination address of module transaction.\n /// @param value Ether value of module transaction.\n /// @param data Data payload of module transaction.\n /// @param operation Operation type of module transaction.\n function execTransactionFromModule(address to, uint256 value, bytes data, Enum.Operation operation)\n public\n returns (bool success)\n {\n // Only whitelisted modules are allowed.\n require(modules[msg.sender] != 0);\n // Execute transaction without further confirmations.\n success = execute(to, value, data, operation, gasleft());\n }\n\n function execute(address to, uint256 value, bytes data, Enum.Operation operation, uint256 txGas)\n internal\n returns (bool success)\n {\n if (operation == Enum.Operation.Call)\n success = executeCall(to, value, data, txGas);\n else if (operation == Enum.Operation.DelegateCall)\n success = executeDelegateCall(to, data, txGas);\n else {\n address newContract = executeCreate(data);\n success = newContract != 0;\n emit ContractCreation(newContract);\n }\n }\n\n function executeCall(address to, uint256 value, bytes data, uint256 txGas)\n internal\n returns (bool success)\n {\n // solium-disable-next-line security/no-inline-assembly\n assembly {\n success := call(txGas, to, value, add(data, 0x20), mload(data), 0, 0)\n }\n }\n\n function executeDelegateCall(address to, bytes data, uint256 txGas)\n internal\n returns (bool success)\n {\n // solium-disable-next-line security/no-inline-assembly\n assembly {\n success := delegatecall(txGas, to, add(data, 0x20), mload(data), 0, 0)\n }\n }\n\n function executeCreate(bytes data)\n internal\n returns (address newContract)\n {\n // solium-disable-next-line security/no-inline-assembly\n assembly {\n newContract := create(0, add(data, 0x20), mload(data))\n }\n }\n\n /// @dev Returns array of modules.\n /// @return Array of modules.\n function getModules()\n public\n view\n returns (address[])\n {\n // Calculate module count\n uint256 moduleCount = 0;\n address currentModule = modules[SENTINEL_MODULES];\n while(currentModule != SENTINEL_MODULES) {\n currentModule = modules[currentModule];\n moduleCount ++;\n }\n address[] memory array = new address[](moduleCount);\n\n // populate return array\n moduleCount = 0;\n currentModule = modules[SENTINEL_MODULES];\n while(currentModule != SENTINEL_MODULES) {\n array[moduleCount] = currentModule;\n currentModule = modules[currentModule];\n moduleCount ++;\n }\n return array;\n }\n}\n", + "bytecode": "0x608060405234801561001057600080fd5b5061109d806100206000396000f300608060405260043610610083576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063468721a714610085578063610b59251461013d57806385e332cd14610180578063a3f4df7e146101d7578063b2494df314610267578063e009cfde146102d3578063ffa1ad7414610336575b005b34801561009157600080fd5b50610123600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff1690602001909291905050506103c6565b604051808215151515815260200191505060405180910390f35b34801561014957600080fd5b5061017e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506104f1565b005b34801561018c57600080fd5b506101956108cb565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101e357600080fd5b506101ec6108d0565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561022c578082015181840152602081019050610211565b50505050905090810190601f1680156102595780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561027357600080fd5b5061027c610909565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156102bf5780820151818401526020810190506102a4565b505050509050019250505060405180910390f35b3480156102df57600080fd5b50610334600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610bac565b005b34801561034257600080fd5b5061034b610ef9565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561038b578082015181840152602081019050610370565b50505050905090810190601f1680156103b85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6000806000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515156104da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d206181526020017f6e20656e61626c6564206d6f64756c650000000000000000000000000000000081525060400191505060405180910390fd5b6104e7858585855a610f32565b9050949350505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156105ba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415801561060e5750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1515610682576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f496e76616c6964206d6f64756c6520616464726573732070726f76696465640081525060200191505060405180910390fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561076e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4d6f64756c652068617320616c7265616479206265656e20616464656400000081525060200191505060405180910390fd5b600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600181565b6040805190810160405280600e81526020017f4d6f64756c65204d616e6167657200000000000000000000000000000000000081525081565b6060600080606060009250600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515610a1b576000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508280600101935050610977565b82604051908082528060200260200182016040528015610a4a5781602001602082028038833980820191505090505b50905060009250600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515610ba357818184815181101515610af957fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508280600101935050610ab4565b80935050505090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610c75576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610d9c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001807f496e76616c696420707265764d6f64756c652c206d6f64756c6520706169722081526020017f70726f766964656400000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b60008060006002811115610f4257fe5b846002811115610f4e57fe5b1415610f6757610f608787878661102f565b9150611025565b60016002811115610f7457fe5b846002811115610f8057fe5b1415610f9857610f91878685611048565b9150611024565b610fa18561105f565b905060008173ffffffffffffffffffffffffffffffffffffffff16141591507f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b5b5095945050505050565b6000806000845160208601878987f19050949350505050565b60008060008451602086018786f490509392505050565b60008151602083016000f090509190505600a165627a7a7230582064e1429e38089b60111fc239d8ee944fd8ed2024c4abbbd20e6d6508f25e601e0029", + "deployedBytecode": "0x608060405260043610610083576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063468721a714610085578063610b59251461013d57806385e332cd14610180578063a3f4df7e146101d7578063b2494df314610267578063e009cfde146102d3578063ffa1ad7414610336575b005b34801561009157600080fd5b50610123600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff1690602001909291905050506103c6565b604051808215151515815260200191505060405180910390f35b34801561014957600080fd5b5061017e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506104f1565b005b34801561018c57600080fd5b506101956108cb565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101e357600080fd5b506101ec6108d0565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561022c578082015181840152602081019050610211565b50505050905090810190601f1680156102595780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561027357600080fd5b5061027c610909565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156102bf5780820151818401526020810190506102a4565b505050509050019250505060405180910390f35b3480156102df57600080fd5b50610334600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610bac565b005b34801561034257600080fd5b5061034b610ef9565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561038b578082015181840152602081019050610370565b50505050905090810190601f1680156103b85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6000806000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515156104da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d206181526020017f6e20656e61626c6564206d6f64756c650000000000000000000000000000000081525060400191505060405180910390fd5b6104e7858585855a610f32565b9050949350505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156105ba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415801561060e5750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1515610682576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f496e76616c6964206d6f64756c6520616464726573732070726f76696465640081525060200191505060405180910390fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561076e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4d6f64756c652068617320616c7265616479206265656e20616464656400000081525060200191505060405180910390fd5b600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600181565b6040805190810160405280600e81526020017f4d6f64756c65204d616e6167657200000000000000000000000000000000000081525081565b6060600080606060009250600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515610a1b576000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508280600101935050610977565b82604051908082528060200260200182016040528015610a4a5781602001602082028038833980820191505090505b50905060009250600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515610ba357818184815181101515610af957fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508280600101935050610ab4565b80935050505090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610c75576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610d9c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001807f496e76616c696420707265764d6f64756c652c206d6f64756c6520706169722081526020017f70726f766964656400000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b60008060006002811115610f4257fe5b846002811115610f4e57fe5b1415610f6757610f608787878661102f565b9150611025565b60016002811115610f7457fe5b846002811115610f8057fe5b1415610f9857610f91878685611048565b9150611024565b610fa18561105f565b905060008173ffffffffffffffffffffffffffffffffffffffff16141591507f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b5b5095945050505050565b6000806000845160208601878987f19050949350505050565b60008060008451602086018786f490509392505050565b60008151602083016000f090509190505600a165627a7a7230582064e1429e38089b60111fc239d8ee944fd8ed2024c4abbbd20e6d6508f25e601e0029", + "sourceMap": "303:5100:8:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;303:5100:8;;;;;;;", + "deployedSourceMap": "303:5100:8:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2710:429;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2710:429:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1311:459;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1311:459:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;499:55;;8:9:-1;5:2;;;30:1;27;20:12;5:2;499:55:8;;;;;;;;;;;;;;;;;;;;;;;;;;;401:46;;8:9:-1;5:2;;;30:1;27;20:12;5:2;401:46:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;401:46:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4663:738;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4663:738:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;4663:738:8;;;;;;;;;;;;;;;;;2031:343;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2031:343:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;453:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;453:40:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;453:40:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2710:429;2842:12;2950:1;2927:7;:19;2935:10;2927:19;;;;;;;;;;;;;;;;;;;;;;;;;:24;;;;2919:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3086:46;3094:2;3098:5;3105:4;3111:9;3122;3086:7;:46::i;:::-;3076:56;;2710:429;;;;;;:::o;1311:459::-;244:4:13;222:27;;:10;:27;;;214:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1477:1:8;1466:6;1458:20;;;;:59;;;;;550:3;1482:35;;1490:6;1482:35;;;;1458:59;1450:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1631:1;1612:7;:15;1620:6;1612:15;;;;;;;;;;;;;;;;;;;;;;;;;:20;;;1604:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1694:7;:25;550:3;1694:25;;;;;;;;;;;;;;;;;;;;;;;;;1676:7;:15;1684:6;1676:15;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;1757:6;1729:7;:25;550:3;1729:25;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;1311:459;:::o;499:55::-;550:3;499:55;:::o;401:46::-;;;;;;;;;;;;;;;;;;;;:::o;4663:738::-;4730:9;4789:19;4822:21;5022:22;4811:1;4789:23;;4846:7;:25;550:3;4846:25;;;;;;;;;;;;;;;;;;;;;;;;;4822:49;;4881:132;550:3;4887:33;;:13;:33;;;;4881:132;;;4952:7;:22;4960:13;4952:22;;;;;;;;;;;;;;;;;;;;;;;;;4936:38;;4988:14;;;;;;;4881:132;;;5061:11;5047:26;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;5047:26:8;;;;5022:51;;5131:1;5117:15;;5158:7;:25;550:3;5158:25;;;;;;;;;;;;;;;;;;;;;;;;;5142:41;;5193:180;550:3;5199:33;;:13;:33;;;;5193:180;;;5269:13;5248:5;5254:11;5248:18;;;;;;;;;;;;;;;;;:34;;;;;;;;;;;5312:7;:22;5320:13;5312:22;;;;;;;;;;;;;;;;;;;;;;;;;5296:38;;5348:14;;;;;;;5193:180;;;5389:5;5382:12;;4663:738;;;;:::o;2031:343::-;244:4:13;222:27;;:10;:27;;;214:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2239:6:8;2208:38;;:7;:19;2216:10;2208:19;;;;;;;;;;;;;;;;;;;;;;;;;:38;;;2200:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2323:7;:15;2331:6;2323:15;;;;;;;;;;;;;;;;;;;;;;;;;2301:7;:19;2309:10;2301:19;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;2366:1;2348:7;:15;2356:6;2348:15;;;;;;;;;;;;;;;;:19;;;;;;;;;;;;;;;;;;2031:343;;:::o;453:40::-;;;;;;;;;;;;;;;;;;;;:::o;3145:548::-;3276:12;3547:19;3321;3308:32;;;;;;;;:9;:32;;;;;;;;;3304:383;;;3364:35;3376:2;3380:5;3387:4;3393:5;3364:11;:35::i;:::-;3354:45;;3304:383;;;3431:27;3418:40;;;;;;;;:9;:40;;;;;;;;;3414:273;;;3482:36;3502:2;3506:4;3512:5;3482:19;:36::i;:::-;3472:46;;3414:273;;;3569:19;3583:4;3569:13;:19::i;:::-;3547:41;;3627:1;3612:11;:16;;;;3602:26;;3647:29;3664:11;3647:29;;;;;;;;;;;;;;;;;;;;;;3414:273;3304:383;3145:548;;;;;;;;:::o;3699:309::-;3808:12;3990:1;3987;3980:4;3974:11;3967:4;3961;3957:15;3950:5;3946:2;3939:5;3934:58;3923:69;;3909:93;;;;;;:::o;4014:303::-;4116:12;4299:1;4296;4289:4;4283:11;4276:4;4270;4266:15;4262:2;4255:5;4242:59;4231:70;;4217:94;;;;;:::o;4323:261::-;4392:19;4562:4;4556:11;4549:4;4543;4539:15;4536:1;4529:39;4514:54;;4500:78;;;:::o", + "source": "pragma solidity 0.4.24;\nimport \"./Module.sol\";\nimport \"./MasterCopy.sol\";\nimport \"./Enum.sol\";\n\n\n/// @title Module Manager - A contract that manages modules that can execute transactions via this contract\n/// @author Stefan George - \n/// @author Richard Meissner - \ncontract ModuleManager is SelfAuthorized {\n\n event ContractCreation(address newContract);\n\n string public constant NAME = \"Module Manager\";\n string public constant VERSION = \"0.0.1\";\n address public constant SENTINEL_MODULES = address(0x1);\n\n mapping (address => address) internal modules;\n\n /// @dev Fallback function accepts Ether transactions.\n function ()\n external\n payable\n {\n\n }\n\n function setupModules(address to, bytes data)\n internal\n {\n require(modules[SENTINEL_MODULES] == 0, \"Modules have already been initialized\");\n modules[SENTINEL_MODULES] = SENTINEL_MODULES;\n if (to != 0)\n // Setup has to complete successfully or transaction fails.\n require(executeDelegateCall(to, data, gasleft()), \"Could not finish initialization\");\n }\n\n /// @dev Allows to add a module to the whitelist.\n /// This can only be done via a Safe transaction.\n /// @param module Module to be whitelisted.\n function enableModule(Module module)\n public\n authorized\n {\n // Module address cannot be null or sentinel.\n require(address(module) != 0 && address(module) != SENTINEL_MODULES, \"Invalid module address provided\");\n // Module cannot be added twice.\n require(modules[module] == 0, \"Module has already been added\");\n modules[module] = modules[SENTINEL_MODULES];\n modules[SENTINEL_MODULES] = module;\n }\n\n /// @dev Allows to remove a module from the whitelist.\n /// This can only be done via a Safe transaction.\n /// @param prevModule Module that pointed to the module to be removed in the linked list\n /// @param module Module to be removed.\n function disableModule(Module prevModule, Module module)\n public\n authorized\n {\n // Validate module address corresponds to module index.\n require(modules[prevModule] == address(module), \"Invalid prevModule, module pair provided\");\n modules[prevModule] = modules[module];\n modules[module] = 0;\n }\n\n /// @dev Allows a Module to execute a Safe transaction without any further confirmations.\n /// @param to Destination address of module transaction.\n /// @param value Ether value of module transaction.\n /// @param data Data payload of module transaction.\n /// @param operation Operation type of module transaction.\n function execTransactionFromModule(address to, uint256 value, bytes data, Enum.Operation operation)\n public\n returns (bool success)\n {\n // Only whitelisted modules are allowed.\n require(modules[msg.sender] != 0, \"Method can only be called from an enabled module\");\n // Execute transaction without further confirmations.\n success = execute(to, value, data, operation, gasleft());\n }\n\n function execute(address to, uint256 value, bytes data, Enum.Operation operation, uint256 txGas)\n internal\n returns (bool success)\n {\n if (operation == Enum.Operation.Call)\n success = executeCall(to, value, data, txGas);\n else if (operation == Enum.Operation.DelegateCall)\n success = executeDelegateCall(to, data, txGas);\n else {\n address newContract = executeCreate(data);\n success = newContract != 0;\n emit ContractCreation(newContract);\n }\n }\n\n function executeCall(address to, uint256 value, bytes data, uint256 txGas)\n internal\n returns (bool success)\n {\n // solium-disable-next-line security/no-inline-assembly\n assembly {\n success := call(txGas, to, value, add(data, 0x20), mload(data), 0, 0)\n }\n }\n\n function executeDelegateCall(address to, bytes data, uint256 txGas)\n internal\n returns (bool success)\n {\n // solium-disable-next-line security/no-inline-assembly\n assembly {\n success := delegatecall(txGas, to, add(data, 0x20), mload(data), 0, 0)\n }\n }\n\n function executeCreate(bytes data)\n internal\n returns (address newContract)\n {\n // solium-disable-next-line security/no-inline-assembly\n assembly {\n newContract := create(0, add(data, 0x20), mload(data))\n }\n }\n\n /// @dev Returns array of modules.\n /// @return Array of modules.\n function getModules()\n public\n view\n returns (address[])\n {\n // Calculate module count\n uint256 moduleCount = 0;\n address currentModule = modules[SENTINEL_MODULES];\n while(currentModule != SENTINEL_MODULES) {\n currentModule = modules[currentModule];\n moduleCount ++;\n }\n address[] memory array = new address[](moduleCount);\n\n // populate return array\n moduleCount = 0;\n currentModule = modules[SENTINEL_MODULES];\n while(currentModule != SENTINEL_MODULES) {\n array[moduleCount] = currentModule;\n currentModule = modules[currentModule];\n moduleCount ++;\n }\n return array;\n }\n}\n", "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/ModuleManager.sol", "ast": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/ModuleManager.sol", "exportedSymbols": { "ModuleManager": [ - 1100 + 1118 ] }, - "id": 1101, + "id": 1119, "nodeType": "SourceUnit", "nodes": [ { - "id": 752, + "id": 764, "literals": [ "solidity", "0.4", @@ -167,10 +167,10 @@ { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Module.sol", "file": "./Module.sol", - "id": 753, + "id": 765, "nodeType": "ImportDirective", - "scope": 1101, - "sourceUnit": 751, + "scope": 1119, + "sourceUnit": 763, "src": "24:22:8", "symbolAliases": [], "unitAlias": "" @@ -178,10 +178,10 @@ { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/MasterCopy.sol", "file": "./MasterCopy.sol", - "id": 754, + "id": 766, "nodeType": "ImportDirective", - "scope": 1101, - "sourceUnit": 653, + "scope": 1119, + "sourceUnit": 663, "src": "47:26:8", "symbolAliases": [], "unitAlias": "" @@ -189,9 +189,9 @@ { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Enum.sol", "file": "./Enum.sol", - "id": 755, + "id": 767, "nodeType": "ImportDirective", - "scope": 1101, + "scope": 1119, "sourceUnit": 31, "src": "74:20:8", "symbolAliases": [], @@ -203,31 +203,31 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 756, + "id": 768, "name": "SelfAuthorized", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1619, + "referencedDeclaration": 1654, "src": "329:14:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_SelfAuthorized_$1619", + "typeIdentifier": "t_contract$_SelfAuthorized_$1654", "typeString": "contract SelfAuthorized" } }, - "id": 757, + "id": 769, "nodeType": "InheritanceSpecifier", "src": "329:14:8" } ], "contractDependencies": [ - 1619 + 1654 ], "contractKind": "contract", "documentation": "@title Module Manager - A contract that manages modules that can execute transactions via this contract\n @author Stefan George - \n @author Richard Meissner - ", "fullyImplemented": true, - "id": 1100, + "id": 1118, "linearizedBaseContracts": [ - 1100, - 1619 + 1118, + 1654 ], "name": "ModuleManager", "nodeType": "ContractDefinition", @@ -235,20 +235,20 @@ { "anonymous": false, "documentation": null, - "id": 761, + "id": 773, "name": "ContractCreation", "nodeType": "EventDefinition", "parameters": { - "id": 760, + "id": 772, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 759, + "id": 771, "indexed": false, "name": "newContract", "nodeType": "VariableDeclaration", - "scope": 761, + "scope": 773, "src": "374:19:8", "stateVariable": false, "storageLocation": "default", @@ -257,7 +257,7 @@ "typeString": "address" }, "typeName": { - "id": 758, + "id": 770, "name": "address", "nodeType": "ElementaryTypeName", "src": "374:7:8", @@ -276,10 +276,10 @@ }, { "constant": true, - "id": 764, + "id": 776, "name": "NAME", "nodeType": "VariableDeclaration", - "scope": 1100, + "scope": 1118, "src": "401:46:8", "stateVariable": true, "storageLocation": "default", @@ -288,7 +288,7 @@ "typeString": "string" }, "typeName": { - "id": 762, + "id": 774, "name": "string", "nodeType": "ElementaryTypeName", "src": "401:6:8", @@ -300,7 +300,7 @@ "value": { "argumentTypes": null, "hexValue": "4d6f64756c65204d616e61676572", - "id": 763, + "id": 775, "isConstant": false, "isLValue": false, "isPure": true, @@ -319,10 +319,10 @@ }, { "constant": true, - "id": 767, + "id": 779, "name": "VERSION", "nodeType": "VariableDeclaration", - "scope": 1100, + "scope": 1118, "src": "453:40:8", "stateVariable": true, "storageLocation": "default", @@ -331,7 +331,7 @@ "typeString": "string" }, "typeName": { - "id": 765, + "id": 777, "name": "string", "nodeType": "ElementaryTypeName", "src": "453:6:8", @@ -343,7 +343,7 @@ "value": { "argumentTypes": null, "hexValue": "302e302e31", - "id": 766, + "id": 778, "isConstant": false, "isLValue": false, "isPure": true, @@ -362,10 +362,10 @@ }, { "constant": true, - "id": 772, + "id": 784, "name": "SENTINEL_MODULES", "nodeType": "VariableDeclaration", - "scope": 1100, + "scope": 1118, "src": "499:55:8", "stateVariable": true, "storageLocation": "default", @@ -374,7 +374,7 @@ "typeString": "address" }, "typeName": { - "id": 768, + "id": 780, "name": "address", "nodeType": "ElementaryTypeName", "src": "499:7:8", @@ -389,7 +389,7 @@ { "argumentTypes": null, "hexValue": "307831", - "id": 770, + "id": 782, "isConstant": false, "isLValue": false, "isPure": true, @@ -412,7 +412,7 @@ "typeString": "int_const 1" } ], - "id": 769, + "id": 781, "isConstant": false, "isLValue": false, "isPure": true, @@ -425,7 +425,7 @@ }, "typeName": "address" }, - "id": 771, + "id": 783, "isConstant": false, "isLValue": false, "isPure": true, @@ -443,10 +443,10 @@ }, { "constant": false, - "id": 776, + "id": 788, "name": "modules", "nodeType": "VariableDeclaration", - "scope": 1100, + "scope": 1118, "src": "561:45:8", "stateVariable": true, "storageLocation": "default", @@ -455,9 +455,9 @@ "typeString": "mapping(address => address)" }, "typeName": { - "id": 775, + "id": 787, "keyType": { - "id": 773, + "id": 785, "name": "address", "nodeType": "ElementaryTypeName", "src": "570:7:8", @@ -473,7 +473,7 @@ "typeString": "mapping(address => address)" }, "valueType": { - "id": 774, + "id": 786, "name": "address", "nodeType": "ElementaryTypeName", "src": "581:7:8", @@ -488,13 +488,13 @@ }, { "body": { - "id": 779, + "id": 791, "nodeType": "Block", "src": "721:8:8", "statements": [] }, "documentation": "@dev Fallback function accepts Ether transactions.", - "id": 780, + "id": 792, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -502,19 +502,19 @@ "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 777, + "id": 789, "nodeType": "ParameterList", "parameters": [], "src": "681:2:8" }, "payable": true, "returnParameters": { - "id": 778, + "id": 790, "nodeType": "ParameterList", "parameters": [], "src": "721:0:8" }, - "scope": 1100, + "scope": 1118, "src": "672:57:8", "stateMutability": "payable", "superFunction": null, @@ -522,9 +522,9 @@ }, { "body": { - "id": 814, + "id": 828, "nodeType": "Block", - "src": "802:266:8", + "src": "802:342:8", "statements": [ { "expression": { @@ -536,7 +536,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 792, + "id": 804, "isConstant": false, "isLValue": false, "isPure": false, @@ -545,25 +545,25 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 788, + "id": 800, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 776, + "referencedDeclaration": 788, "src": "820:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 790, + "id": 802, "indexExpression": { "argumentTypes": null, - "id": 789, + "id": 801, "name": "SENTINEL_MODULES", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 772, + "referencedDeclaration": 784, "src": "828:16:8", "typeDescriptions": { "typeIdentifier": "t_address", @@ -586,7 +586,7 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 791, + "id": 803, "isConstant": false, "isLValue": false, "isPure": true, @@ -606,6 +606,24 @@ "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "4d6f64756c6573206861766520616c7265616479206265656e20696e697469616c697a6564", + "id": 805, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "852:39:8", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_1e0428ffa69bff65645154a36d5017c238f946ddaf89430d30eec813f30bdd77", + "typeString": "literal_string \"Modules have already been initialized\"" + }, + "value": "Modules have already been initialized" } ], "expression": { @@ -613,23 +631,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_1e0428ffa69bff65645154a36d5017c238f946ddaf89430d30eec813f30bdd77", + "typeString": "literal_string \"Modules have already been initialized\"" } ], - "id": 787, + "id": 799, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, + "referencedDeclaration": 2658, "src": "812:7:8", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 793, + "id": 806, "isConstant": false, "isLValue": false, "isPure": false, @@ -637,20 +659,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "812:39:8", + "src": "812:80:8", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 794, + "id": 807, "nodeType": "ExpressionStatement", - "src": "812:39:8" + "src": "812:80:8" }, { "expression": { "argumentTypes": null, - "id": 799, + "id": 812, "isConstant": false, "isLValue": false, "isPure": false, @@ -659,26 +681,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 795, + "id": 808, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 776, - "src": "861:7:8", + "referencedDeclaration": 788, + "src": "902:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 797, + "id": 810, "indexExpression": { "argumentTypes": null, - "id": 796, + "id": 809, "name": "SENTINEL_MODULES", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 772, - "src": "869:16:8", + "referencedDeclaration": 784, + "src": "910:16:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -689,7 +711,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "861:25:8", + "src": "902:25:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -699,26 +721,26 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 798, + "id": 811, "name": "SENTINEL_MODULES", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 772, - "src": "889:16:8", + "referencedDeclaration": 784, + "src": "930:16:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "861:44:8", + "src": "902:44:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 800, + "id": 813, "nodeType": "ExpressionStatement", - "src": "861:44:8" + "src": "902:44:8" }, { "condition": { @@ -727,19 +749,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 803, + "id": 816, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 801, + "id": 814, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 782, - "src": "919:2:8", + "referencedDeclaration": 794, + "src": "960:2:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -750,14 +772,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 802, + "id": 815, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "925:1:8", + "src": "966:1:8", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -765,16 +787,16 @@ }, "value": "0" }, - "src": "919:7:8", + "src": "960:7:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 813, + "id": 827, "nodeType": "IfStatement", - "src": "915:146:8", + "src": "956:181:8", "trueBody": { "expression": { "argumentTypes": null, @@ -784,12 +806,12 @@ "arguments": [ { "argumentTypes": null, - "id": 806, + "id": 819, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 782, - "src": "1040:2:8", + "referencedDeclaration": 794, + "src": "1081:2:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -797,12 +819,12 @@ }, { "argumentTypes": null, - "id": 807, + "id": 820, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 784, - "src": "1044:4:8", + "referencedDeclaration": 796, + "src": "1085:4:8", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -813,18 +835,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 808, + "id": 821, "name": "gasleft", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2591, - "src": "1050:7:8", + "referencedDeclaration": 2647, + "src": "1091:7:8", "typeDescriptions": { "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, - "id": 809, + "id": 822, "isConstant": false, "isLValue": false, "isPure": false, @@ -832,7 +854,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1050:9:8", + "src": "1091:9:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -854,18 +876,18 @@ "typeString": "uint256" } ], - "id": 805, + "id": 818, "name": "executeDelegateCall", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1017, - "src": "1020:19:8", + "referencedDeclaration": 1035, + "src": "1061:19:8", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,bytes memory,uint256) returns (bool)" } }, - "id": 810, + "id": 823, "isConstant": false, "isLValue": false, "isPure": false, @@ -873,11 +895,29 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1020:40:8", + "src": "1061:40:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "436f756c64206e6f742066696e69736820696e697469616c697a6174696f6e", + "id": 824, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1103:33:8", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_7913a3f9168bf3e458e3f42eb08db5c4b33f44228d345660887090b75e24c6aa", + "typeString": "literal_string \"Could not finish initialization\"" + }, + "value": "Could not finish initialization" } ], "expression": { @@ -885,23 +925,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_7913a3f9168bf3e458e3f42eb08db5c4b33f44228d345660887090b75e24c6aa", + "typeString": "literal_string \"Could not finish initialization\"" } ], - "id": 804, + "id": 817, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "1012:7:8", + "referencedDeclaration": 2658, + "src": "1053:7:8", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 811, + "id": 825, "isConstant": false, "isLValue": false, "isPure": false, @@ -909,21 +953,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1012:49:8", + "src": "1053:84:8", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 812, + "id": 826, "nodeType": "ExpressionStatement", - "src": "1012:49:8" + "src": "1053:84:8" } } ] }, "documentation": null, - "id": 815, + "id": 829, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -931,15 +975,15 @@ "name": "setupModules", "nodeType": "FunctionDefinition", "parameters": { - "id": 785, + "id": 797, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 782, + "id": 794, "name": "to", "nodeType": "VariableDeclaration", - "scope": 815, + "scope": 829, "src": "757:10:8", "stateVariable": false, "storageLocation": "default", @@ -948,7 +992,7 @@ "typeString": "address" }, "typeName": { - "id": 781, + "id": 793, "name": "address", "nodeType": "ElementaryTypeName", "src": "757:7:8", @@ -962,10 +1006,10 @@ }, { "constant": false, - "id": 784, + "id": 796, "name": "data", "nodeType": "VariableDeclaration", - "scope": 815, + "scope": 829, "src": "769:10:8", "stateVariable": false, "storageLocation": "default", @@ -974,7 +1018,7 @@ "typeString": "bytes" }, "typeName": { - "id": 783, + "id": 795, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "769:5:8", @@ -991,22 +1035,22 @@ }, "payable": false, "returnParameters": { - "id": 786, + "id": 798, "nodeType": "ParameterList", "parameters": [], "src": "802:0:8" }, - "scope": 1100, - "src": "735:333:8", + "scope": 1118, + "src": "735:409:8", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 858, + "id": 874, "nodeType": "Block", - "src": "1310:316:8", + "src": "1386:384:8", "statements": [ { "expression": { @@ -1018,7 +1062,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 833, + "id": 847, "isConstant": false, "isLValue": false, "isPure": false, @@ -1029,7 +1073,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 827, + "id": 841, "isConstant": false, "isLValue": false, "isPure": false, @@ -1039,14 +1083,14 @@ "arguments": [ { "argumentTypes": null, - "id": 824, + "id": 838, "name": "module", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 817, - "src": "1390:6:8", + "referencedDeclaration": 831, + "src": "1466:6:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$750", + "typeIdentifier": "t_contract$_Module_$762", "typeString": "contract Module" } } @@ -1054,24 +1098,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_Module_$750", + "typeIdentifier": "t_contract$_Module_$762", "typeString": "contract Module" } ], - "id": 823, + "id": 837, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1382:7:8", + "src": "1458:7:8", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 825, + "id": 839, "isConstant": false, "isLValue": false, "isPure": false, @@ -1079,7 +1123,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1382:15:8", + "src": "1458:15:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1090,14 +1134,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 826, + "id": 840, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1401:1:8", + "src": "1477:1:8", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -1105,7 +1149,7 @@ }, "value": "0" }, - "src": "1382:20:8", + "src": "1458:20:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1119,7 +1163,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 832, + "id": 846, "isConstant": false, "isLValue": false, "isPure": false, @@ -1129,14 +1173,14 @@ "arguments": [ { "argumentTypes": null, - "id": 829, + "id": 843, "name": "module", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 817, - "src": "1414:6:8", + "referencedDeclaration": 831, + "src": "1490:6:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$750", + "typeIdentifier": "t_contract$_Module_$762", "typeString": "contract Module" } } @@ -1144,24 +1188,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_Module_$750", + "typeIdentifier": "t_contract$_Module_$762", "typeString": "contract Module" } ], - "id": 828, + "id": 842, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1406:7:8", + "src": "1482:7:8", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 830, + "id": 844, "isConstant": false, "isLValue": false, "isPure": false, @@ -1169,7 +1213,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1406:15:8", + "src": "1482:15:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1179,28 +1223,46 @@ "operator": "!=", "rightExpression": { "argumentTypes": null, - "id": 831, + "id": 845, "name": "SENTINEL_MODULES", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 772, - "src": "1425:16:8", + "referencedDeclaration": 784, + "src": "1501:16:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "1406:35:8", + "src": "1482:35:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "1382:59:8", + "src": "1458:59:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "496e76616c6964206d6f64756c6520616464726573732070726f7669646564", + "id": 848, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1519:33:8", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_8c2199b479423c52a835dfe8b0f2e9eb4c1ec1069ba198ccc38077a4a88a5c00", + "typeString": "literal_string \"Invalid module address provided\"" + }, + "value": "Invalid module address provided" } ], "expression": { @@ -1208,23 +1270,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_8c2199b479423c52a835dfe8b0f2e9eb4c1ec1069ba198ccc38077a4a88a5c00", + "typeString": "literal_string \"Invalid module address provided\"" } ], - "id": 822, + "id": 836, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "1374:7:8", + "referencedDeclaration": 2658, + "src": "1450:7:8", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 834, + "id": 849, "isConstant": false, "isLValue": false, "isPure": false, @@ -1232,15 +1298,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1374:68:8", + "src": "1450:103:8", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 835, + "id": 850, "nodeType": "ExpressionStatement", - "src": "1374:68:8" + "src": "1450:103:8" }, { "expression": { @@ -1252,7 +1318,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 841, + "id": 856, "isConstant": false, "isLValue": false, "isPure": false, @@ -1261,28 +1327,28 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 837, + "id": 852, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 776, - "src": "1501:7:8", + "referencedDeclaration": 788, + "src": "1612:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 839, + "id": 854, "indexExpression": { "argumentTypes": null, - "id": 838, + "id": 853, "name": "module", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 817, - "src": "1509:6:8", + "referencedDeclaration": 831, + "src": "1620:6:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$750", + "typeIdentifier": "t_contract$_Module_$762", "typeString": "contract Module" } }, @@ -1291,7 +1357,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1501:15:8", + "src": "1612:15:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1302,14 +1368,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 840, + "id": 855, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1520:1:8", + "src": "1631:1:8", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -1317,11 +1383,29 @@ }, "value": "0" }, - "src": "1501:20:8", + "src": "1612:20:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "4d6f64756c652068617320616c7265616479206265656e206164646564", + "id": 857, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1634:31:8", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ae2b4ea52eaf6de3fb2d8a64b7555be2dfd285b837a62821bf24e7dc6f329450", + "typeString": "literal_string \"Module has already been added\"" + }, + "value": "Module has already been added" } ], "expression": { @@ -1329,23 +1413,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_ae2b4ea52eaf6de3fb2d8a64b7555be2dfd285b837a62821bf24e7dc6f329450", + "typeString": "literal_string \"Module has already been added\"" } ], - "id": 836, + "id": 851, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "1493:7:8", + "referencedDeclaration": 2658, + "src": "1604:7:8", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 842, + "id": 858, "isConstant": false, "isLValue": false, "isPure": false, @@ -1353,20 +1441,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1493:29:8", + "src": "1604:62:8", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 843, + "id": 859, "nodeType": "ExpressionStatement", - "src": "1493:29:8" + "src": "1604:62:8" }, { "expression": { "argumentTypes": null, - "id": 850, + "id": 866, "isConstant": false, "isLValue": false, "isPure": false, @@ -1375,28 +1463,28 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 844, + "id": 860, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 776, - "src": "1532:7:8", + "referencedDeclaration": 788, + "src": "1676:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 846, + "id": 862, "indexExpression": { "argumentTypes": null, - "id": 845, + "id": 861, "name": "module", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 817, - "src": "1540:6:8", + "referencedDeclaration": 831, + "src": "1684:6:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$750", + "typeIdentifier": "t_contract$_Module_$762", "typeString": "contract Module" } }, @@ -1405,7 +1493,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1532:15:8", + "src": "1676:15:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1417,26 +1505,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 847, + "id": 863, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 776, - "src": "1550:7:8", + "referencedDeclaration": 788, + "src": "1694:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 849, + "id": 865, "indexExpression": { "argumentTypes": null, - "id": 848, + "id": 864, "name": "SENTINEL_MODULES", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 772, - "src": "1558:16:8", + "referencedDeclaration": 784, + "src": "1702:16:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1447,26 +1535,26 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1550:25:8", + "src": "1694:25:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "1532:43:8", + "src": "1676:43:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 851, + "id": 867, "nodeType": "ExpressionStatement", - "src": "1532:43:8" + "src": "1676:43:8" }, { "expression": { "argumentTypes": null, - "id": 856, + "id": 872, "isConstant": false, "isLValue": false, "isPure": false, @@ -1475,26 +1563,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 852, + "id": 868, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 776, - "src": "1585:7:8", + "referencedDeclaration": 788, + "src": "1729:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 854, + "id": 870, "indexExpression": { "argumentTypes": null, - "id": 853, + "id": 869, "name": "SENTINEL_MODULES", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 772, - "src": "1593:16:8", + "referencedDeclaration": 784, + "src": "1737:16:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1505,7 +1593,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1585:25:8", + "src": "1729:25:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1515,83 +1603,83 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 855, + "id": 871, "name": "module", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 817, - "src": "1613:6:8", + "referencedDeclaration": 831, + "src": "1757:6:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$750", + "typeIdentifier": "t_contract$_Module_$762", "typeString": "contract Module" } }, - "src": "1585:34:8", + "src": "1729:34:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 857, + "id": 873, "nodeType": "ExpressionStatement", - "src": "1585:34:8" + "src": "1729:34:8" } ] }, "documentation": "@dev Allows to add a module to the whitelist.\n This can only be done via a Safe transaction.\n @param module Module to be whitelisted.", - "id": 859, + "id": 875, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 820, + "id": 834, "modifierName": { "argumentTypes": null, - "id": 819, + "id": 833, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1618, - "src": "1295:10:8", + "referencedDeclaration": 1653, + "src": "1371:10:8", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "1295:10:8" + "src": "1371:10:8" } ], "name": "enableModule", "nodeType": "FunctionDefinition", "parameters": { - "id": 818, + "id": 832, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 817, + "id": 831, "name": "module", "nodeType": "VariableDeclaration", - "scope": 859, - "src": "1257:13:8", + "scope": 875, + "src": "1333:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$750", + "typeIdentifier": "t_contract$_Module_$762", "typeString": "contract Module" }, "typeName": { "contractScope": null, - "id": 816, + "id": 830, "name": "Module", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 750, - "src": "1257:6:8", + "referencedDeclaration": 762, + "src": "1333:6:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$750", + "typeIdentifier": "t_contract$_Module_$762", "typeString": "contract Module" } }, @@ -1599,26 +1687,26 @@ "visibility": "internal" } ], - "src": "1256:15:8" + "src": "1332:15:8" }, "payable": false, "returnParameters": { - "id": 821, + "id": 835, "nodeType": "ParameterList", "parameters": [], - "src": "1310:0:8" + "src": "1386:0:8" }, - "scope": 1100, - "src": "1235:391:8", + "scope": 1118, + "src": "1311:459:8", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 892, + "id": 909, "nodeType": "Block", - "src": "1982:204:8", + "src": "2126:248:8", "statements": [ { "expression": { @@ -1630,7 +1718,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 875, + "id": 891, "isConstant": false, "isLValue": false, "isPure": false, @@ -1639,28 +1727,28 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 869, + "id": 885, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 776, - "src": "2064:7:8", + "referencedDeclaration": 788, + "src": "2208:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 871, + "id": 887, "indexExpression": { "argumentTypes": null, - "id": 870, + "id": 886, "name": "prevModule", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 861, - "src": "2072:10:8", + "referencedDeclaration": 877, + "src": "2216:10:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$750", + "typeIdentifier": "t_contract$_Module_$762", "typeString": "contract Module" } }, @@ -1669,7 +1757,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2064:19:8", + "src": "2208:19:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1682,14 +1770,14 @@ "arguments": [ { "argumentTypes": null, - "id": 873, + "id": 889, "name": "module", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 863, - "src": "2095:6:8", + "referencedDeclaration": 879, + "src": "2239:6:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$750", + "typeIdentifier": "t_contract$_Module_$762", "typeString": "contract Module" } } @@ -1697,24 +1785,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_Module_$750", + "typeIdentifier": "t_contract$_Module_$762", "typeString": "contract Module" } ], - "id": 872, + "id": 888, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2087:7:8", + "src": "2231:7:8", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 874, + "id": 890, "isConstant": false, "isLValue": false, "isPure": false, @@ -1722,17 +1810,35 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2087:15:8", + "src": "2231:15:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2064:38:8", + "src": "2208:38:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "496e76616c696420707265764d6f64756c652c206d6f64756c6520706169722070726f7669646564", + "id": 892, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2248:42:8", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_5caa315f9c5cf61be71c182eef2dc9ef7b6ce6b42c320d36694e1d23e09c287e", + "typeString": "literal_string \"Invalid prevModule, module pair provided\"" + }, + "value": "Invalid prevModule, module pair provided" } ], "expression": { @@ -1740,23 +1846,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_5caa315f9c5cf61be71c182eef2dc9ef7b6ce6b42c320d36694e1d23e09c287e", + "typeString": "literal_string \"Invalid prevModule, module pair provided\"" } ], - "id": 868, + "id": 884, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "2056:7:8", + "referencedDeclaration": 2658, + "src": "2200:7:8", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 876, + "id": 893, "isConstant": false, "isLValue": false, "isPure": false, @@ -1764,20 +1874,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2056:47:8", + "src": "2200:91:8", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 877, + "id": 894, "nodeType": "ExpressionStatement", - "src": "2056:47:8" + "src": "2200:91:8" }, { "expression": { "argumentTypes": null, - "id": 884, + "id": 901, "isConstant": false, "isLValue": false, "isPure": false, @@ -1786,28 +1896,28 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 878, + "id": 895, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 776, - "src": "2113:7:8", + "referencedDeclaration": 788, + "src": "2301:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 880, + "id": 897, "indexExpression": { "argumentTypes": null, - "id": 879, + "id": 896, "name": "prevModule", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 861, - "src": "2121:10:8", + "referencedDeclaration": 877, + "src": "2309:10:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$750", + "typeIdentifier": "t_contract$_Module_$762", "typeString": "contract Module" } }, @@ -1816,7 +1926,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "2113:19:8", + "src": "2301:19:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1828,28 +1938,28 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 881, + "id": 898, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 776, - "src": "2135:7:8", + "referencedDeclaration": 788, + "src": "2323:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 883, + "id": 900, "indexExpression": { "argumentTypes": null, - "id": 882, + "id": 899, "name": "module", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 863, - "src": "2143:6:8", + "referencedDeclaration": 879, + "src": "2331:6:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$750", + "typeIdentifier": "t_contract$_Module_$762", "typeString": "contract Module" } }, @@ -1858,26 +1968,26 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2135:15:8", + "src": "2323:15:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2113:37:8", + "src": "2301:37:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 885, + "id": 902, "nodeType": "ExpressionStatement", - "src": "2113:37:8" + "src": "2301:37:8" }, { "expression": { "argumentTypes": null, - "id": 890, + "id": 907, "isConstant": false, "isLValue": false, "isPure": false, @@ -1886,28 +1996,28 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 886, + "id": 903, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 776, - "src": "2160:7:8", + "referencedDeclaration": 788, + "src": "2348:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 888, + "id": 905, "indexExpression": { "argumentTypes": null, - "id": 887, + "id": 904, "name": "module", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 863, - "src": "2168:6:8", + "referencedDeclaration": 879, + "src": "2356:6:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$750", + "typeIdentifier": "t_contract$_Module_$762", "typeString": "contract Module" } }, @@ -1916,7 +2026,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "2160:15:8", + "src": "2348:15:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1927,14 +2037,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "30", - "id": 889, + "id": 906, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2178:1:8", + "src": "2366:1:8", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -1942,72 +2052,72 @@ }, "value": "0" }, - "src": "2160:19:8", + "src": "2348:19:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 891, + "id": 908, "nodeType": "ExpressionStatement", - "src": "2160:19:8" + "src": "2348:19:8" } ] }, "documentation": "@dev Allows to remove a module from the whitelist.\n This can only be done via a Safe transaction.\n @param prevModule Module that pointed to the module to be removed in the linked list\n @param module Module to be removed.", - "id": 893, + "id": 910, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 866, + "id": 882, "modifierName": { "argumentTypes": null, - "id": 865, + "id": 881, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1618, - "src": "1967:10:8", + "referencedDeclaration": 1653, + "src": "2111:10:8", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "1967:10:8" + "src": "2111:10:8" } ], "name": "disableModule", "nodeType": "FunctionDefinition", "parameters": { - "id": 864, + "id": 880, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 861, + "id": 877, "name": "prevModule", "nodeType": "VariableDeclaration", - "scope": 893, - "src": "1910:17:8", + "scope": 910, + "src": "2054:17:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$750", + "typeIdentifier": "t_contract$_Module_$762", "typeString": "contract Module" }, "typeName": { "contractScope": null, - "id": 860, + "id": 876, "name": "Module", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 750, - "src": "1910:6:8", + "referencedDeclaration": 762, + "src": "2054:6:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$750", + "typeIdentifier": "t_contract$_Module_$762", "typeString": "contract Module" } }, @@ -2016,26 +2126,26 @@ }, { "constant": false, - "id": 863, + "id": 879, "name": "module", "nodeType": "VariableDeclaration", - "scope": 893, - "src": "1929:13:8", + "scope": 910, + "src": "2073:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$750", + "typeIdentifier": "t_contract$_Module_$762", "typeString": "contract Module" }, "typeName": { "contractScope": null, - "id": 862, + "id": 878, "name": "Module", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 750, - "src": "1929:6:8", + "referencedDeclaration": 762, + "src": "2073:6:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$750", + "typeIdentifier": "t_contract$_Module_$762", "typeString": "contract Module" } }, @@ -2043,26 +2153,26 @@ "visibility": "internal" } ], - "src": "1909:34:8" + "src": "2053:34:8" }, "payable": false, "returnParameters": { - "id": 867, + "id": 883, "nodeType": "ParameterList", "parameters": [], - "src": "1982:0:8" + "src": "2126:0:8" }, - "scope": 1100, - "src": "1887:299:8", + "scope": 1118, + "src": "2031:343:8", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 926, + "id": 944, "nodeType": "Block", - "src": "2672:227:8", + "src": "2860:279:8", "statements": [ { "expression": { @@ -2074,7 +2184,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 912, + "id": 929, "isConstant": false, "isLValue": false, "isPure": false, @@ -2083,34 +2193,34 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 907, + "id": 924, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 776, - "src": "2739:7:8", + "referencedDeclaration": 788, + "src": "2927:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 910, + "id": 927, "indexExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 908, + "id": 925, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2598, - "src": "2747:3:8", + "referencedDeclaration": 2654, + "src": "2935:3:8", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 909, + "id": 926, "isConstant": false, "isLValue": false, "isPure": false, @@ -2118,7 +2228,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2747:10:8", + "src": "2935:10:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2129,7 +2239,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2739:19:8", + "src": "2927:19:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2140,14 +2250,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 911, + "id": 928, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2762:1:8", + "src": "2950:1:8", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -2155,11 +2265,29 @@ }, "value": "0" }, - "src": "2739:24:8", + "src": "2927:24:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d20616e20656e61626c6564206d6f64756c65", + "id": 930, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2953:50:8", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_cd36462b17a97c5a3df33333c859d5933a4fb7f5e1a0750f5def8eb51f3272e4", + "typeString": "literal_string \"Method can only be called from an enabled module\"" + }, + "value": "Method can only be called from an enabled module" } ], "expression": { @@ -2167,23 +2295,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_cd36462b17a97c5a3df33333c859d5933a4fb7f5e1a0750f5def8eb51f3272e4", + "typeString": "literal_string \"Method can only be called from an enabled module\"" } ], - "id": 906, + "id": 923, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "2731:7:8", + "referencedDeclaration": 2658, + "src": "2919:7:8", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 913, + "id": 931, "isConstant": false, "isLValue": false, "isPure": false, @@ -2191,32 +2323,32 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2731:33:8", + "src": "2919:85:8", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 914, + "id": 932, "nodeType": "ExpressionStatement", - "src": "2731:33:8" + "src": "2919:85:8" }, { "expression": { "argumentTypes": null, - "id": 924, + "id": 942, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 915, + "id": 933, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 904, - "src": "2836:7:8", + "referencedDeclaration": 921, + "src": "3076:7:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2229,12 +2361,12 @@ "arguments": [ { "argumentTypes": null, - "id": 917, + "id": 935, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 895, - "src": "2854:2:8", + "referencedDeclaration": 912, + "src": "3094:2:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2242,12 +2374,12 @@ }, { "argumentTypes": null, - "id": 918, + "id": 936, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 897, - "src": "2858:5:8", + "referencedDeclaration": 914, + "src": "3098:5:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2255,12 +2387,12 @@ }, { "argumentTypes": null, - "id": 919, + "id": 937, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 899, - "src": "2865:4:8", + "referencedDeclaration": 916, + "src": "3105:4:8", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -2268,12 +2400,12 @@ }, { "argumentTypes": null, - "id": 920, + "id": 938, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 901, - "src": "2871:9:8", + "referencedDeclaration": 918, + "src": "3111:9:8", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" @@ -2284,18 +2416,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 921, + "id": 939, "name": "gasleft", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2591, - "src": "2882:7:8", + "referencedDeclaration": 2647, + "src": "3122:7:8", "typeDescriptions": { "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, - "id": 922, + "id": 940, "isConstant": false, "isLValue": false, "isPure": false, @@ -2303,7 +2435,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2882:9:8", + "src": "3122:9:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2333,18 +2465,18 @@ "typeString": "uint256" } ], - "id": 916, + "id": 934, "name": "execute", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 989, - "src": "2846:7:8", + "referencedDeclaration": 1007, + "src": "3086:7:8", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256) returns (bool)" } }, - "id": 923, + "id": 941, "isConstant": false, "isLValue": false, "isPure": false, @@ -2352,26 +2484,26 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2846:46:8", + "src": "3086:46:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "2836:56:8", + "src": "3076:56:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 925, + "id": 943, "nodeType": "ExpressionStatement", - "src": "2836:56:8" + "src": "3076:56:8" } ] }, "documentation": "@dev Allows a Module to execute a Safe transaction without any further confirmations.\n @param to Destination address of module transaction.\n @param value Ether value of module transaction.\n @param data Data payload of module transaction.\n @param operation Operation type of module transaction.", - "id": 927, + "id": 945, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -2379,16 +2511,16 @@ "name": "execTransactionFromModule", "nodeType": "FunctionDefinition", "parameters": { - "id": 902, + "id": 919, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 895, + "id": 912, "name": "to", "nodeType": "VariableDeclaration", - "scope": 927, - "src": "2557:10:8", + "scope": 945, + "src": "2745:10:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2396,10 +2528,10 @@ "typeString": "address" }, "typeName": { - "id": 894, + "id": 911, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2557:7:8", + "src": "2745:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2410,11 +2542,11 @@ }, { "constant": false, - "id": 897, + "id": 914, "name": "value", "nodeType": "VariableDeclaration", - "scope": 927, - "src": "2569:13:8", + "scope": 945, + "src": "2757:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2422,10 +2554,10 @@ "typeString": "uint256" }, "typeName": { - "id": 896, + "id": 913, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2569:7:8", + "src": "2757:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2436,11 +2568,11 @@ }, { "constant": false, - "id": 899, + "id": 916, "name": "data", "nodeType": "VariableDeclaration", - "scope": 927, - "src": "2584:10:8", + "scope": 945, + "src": "2772:10:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2448,10 +2580,10 @@ "typeString": "bytes" }, "typeName": { - "id": 898, + "id": 915, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "2584:5:8", + "src": "2772:5:8", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -2462,11 +2594,11 @@ }, { "constant": false, - "id": 901, + "id": 918, "name": "operation", "nodeType": "VariableDeclaration", - "scope": 927, - "src": "2596:24:8", + "scope": 945, + "src": "2784:24:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2475,11 +2607,11 @@ }, "typeName": { "contractScope": null, - "id": 900, + "id": 917, "name": "Enum.Operation", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 29, - "src": "2596:14:8", + "src": "2784:14:8", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" @@ -2489,20 +2621,20 @@ "visibility": "internal" } ], - "src": "2556:65:8" + "src": "2744:65:8" }, "payable": false, "returnParameters": { - "id": 905, + "id": 922, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 904, + "id": 921, "name": "success", "nodeType": "VariableDeclaration", - "scope": 927, - "src": "2654:12:8", + "scope": 945, + "src": "2842:12:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2510,10 +2642,10 @@ "typeString": "bool" }, "typeName": { - "id": 903, + "id": 920, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "2654:4:8", + "src": "2842:4:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2523,19 +2655,19 @@ "visibility": "internal" } ], - "src": "2653:14:8" + "src": "2841:14:8" }, - "scope": 1100, - "src": "2522:377:8", + "scope": 1118, + "src": "2710:429:8", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 988, + "id": 1006, "nodeType": "Block", - "src": "3054:399:8", + "src": "3294:399:8", "statements": [ { "condition": { @@ -2544,19 +2676,19 @@ "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, - "id": 946, + "id": 964, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 942, + "id": 960, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 935, - "src": "3068:9:8", + "referencedDeclaration": 953, + "src": "3308:9:8", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" @@ -2570,18 +2702,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 943, + "id": 961, "name": "Enum", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 30, - "src": "3081:4:8", + "src": "3321:4:8", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_Enum_$30_$", "typeString": "type(contract Enum)" } }, - "id": 944, + "id": 962, "isConstant": false, "isLValue": false, "isPure": false, @@ -2589,13 +2721,13 @@ "memberName": "Operation", "nodeType": "MemberAccess", "referencedDeclaration": 29, - "src": "3081:14:8", + "src": "3321:14:8", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_Operation_$29_$", "typeString": "type(enum Enum.Operation)" } }, - "id": 945, + "id": 963, "isConstant": false, "isLValue": false, "isPure": true, @@ -2603,13 +2735,13 @@ "memberName": "Call", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "3081:19:8", + "src": "3321:19:8", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, - "src": "3068:32:8", + "src": "3308:32:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2622,19 +2754,19 @@ "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, - "id": 960, + "id": 978, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 956, + "id": 974, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 935, - "src": "3178:9:8", + "referencedDeclaration": 953, + "src": "3418:9:8", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" @@ -2648,18 +2780,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 957, + "id": 975, "name": "Enum", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 30, - "src": "3191:4:8", + "src": "3431:4:8", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_Enum_$30_$", "typeString": "type(contract Enum)" } }, - "id": 958, + "id": 976, "isConstant": false, "isLValue": false, "isPure": false, @@ -2667,13 +2799,13 @@ "memberName": "Operation", "nodeType": "MemberAccess", "referencedDeclaration": 29, - "src": "3191:14:8", + "src": "3431:14:8", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_Operation_$29_$", "typeString": "type(enum Enum.Operation)" } }, - "id": 959, + "id": 977, "isConstant": false, "isLValue": false, "isPure": true, @@ -2681,35 +2813,35 @@ "memberName": "DelegateCall", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "3191:27:8", + "src": "3431:27:8", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, - "src": "3178:40:8", + "src": "3418:40:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": { - "id": 985, + "id": 1003, "nodeType": "Block", - "src": "3293:154:8", + "src": "3533:154:8", "statements": [ { "assignments": [ - 970 + 988 ], "declarations": [ { "constant": false, - "id": 970, + "id": 988, "name": "newContract", "nodeType": "VariableDeclaration", - "scope": 989, - "src": "3307:19:8", + "scope": 1007, + "src": "3547:19:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2717,10 +2849,10 @@ "typeString": "address" }, "typeName": { - "id": 969, + "id": 987, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3307:7:8", + "src": "3547:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2730,18 +2862,18 @@ "visibility": "internal" } ], - "id": 974, + "id": 992, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 972, + "id": 990, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 933, - "src": "3343:4:8", + "referencedDeclaration": 951, + "src": "3583:4:8", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -2755,18 +2887,18 @@ "typeString": "bytes memory" } ], - "id": 971, + "id": 989, "name": "executeCreate", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1026, - "src": "3329:13:8", + "referencedDeclaration": 1044, + "src": "3569:13:8", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$_t_address_$", "typeString": "function (bytes memory) returns (address)" } }, - "id": 973, + "id": 991, "isConstant": false, "isLValue": false, "isPure": false, @@ -2774,31 +2906,31 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3329:19:8", + "src": "3569:19:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", - "src": "3307:41:8" + "src": "3547:41:8" }, { "expression": { "argumentTypes": null, - "id": 979, + "id": 997, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 975, + "id": 993, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 940, - "src": "3362:7:8", + "referencedDeclaration": 958, + "src": "3602:7:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2812,19 +2944,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 978, + "id": 996, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 976, + "id": 994, "name": "newContract", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 970, - "src": "3372:11:8", + "referencedDeclaration": 988, + "src": "3612:11:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2835,14 +2967,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 977, + "id": 995, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3387:1:8", + "src": "3627:1:8", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -2850,21 +2982,21 @@ }, "value": "0" }, - "src": "3372:16:8", + "src": "3612:16:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "3362:26:8", + "src": "3602:26:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 980, + "id": 998, "nodeType": "ExpressionStatement", - "src": "3362:26:8" + "src": "3602:26:8" }, { "eventCall": { @@ -2872,12 +3004,12 @@ "arguments": [ { "argumentTypes": null, - "id": 982, + "id": 1000, "name": "newContract", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 970, - "src": "3424:11:8", + "referencedDeclaration": 988, + "src": "3664:11:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2891,18 +3023,18 @@ "typeString": "address" } ], - "id": 981, + "id": 999, "name": "ContractCreation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 761, - "src": "3407:16:8", + "referencedDeclaration": 773, + "src": "3647:16:8", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" } }, - "id": 983, + "id": 1001, "isConstant": false, "isLValue": false, "isPure": false, @@ -2910,37 +3042,37 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3407:29:8", + "src": "3647:29:8", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 984, + "id": 1002, "nodeType": "EmitStatement", - "src": "3402:34:8" + "src": "3642:34:8" } ] }, - "id": 986, + "id": 1004, "nodeType": "IfStatement", - "src": "3174:273:8", + "src": "3414:273:8", "trueBody": { "expression": { "argumentTypes": null, - "id": 967, + "id": 985, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 961, + "id": 979, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 940, - "src": "3232:7:8", + "referencedDeclaration": 958, + "src": "3472:7:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2953,12 +3085,12 @@ "arguments": [ { "argumentTypes": null, - "id": 963, + "id": 981, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 929, - "src": "3262:2:8", + "referencedDeclaration": 947, + "src": "3502:2:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2966,12 +3098,12 @@ }, { "argumentTypes": null, - "id": 964, + "id": 982, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 933, - "src": "3266:4:8", + "referencedDeclaration": 951, + "src": "3506:4:8", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -2979,12 +3111,12 @@ }, { "argumentTypes": null, - "id": 965, + "id": 983, "name": "txGas", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 937, - "src": "3272:5:8", + "referencedDeclaration": 955, + "src": "3512:5:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3006,18 +3138,18 @@ "typeString": "uint256" } ], - "id": 962, + "id": 980, "name": "executeDelegateCall", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1017, - "src": "3242:19:8", + "referencedDeclaration": 1035, + "src": "3482:19:8", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,bytes memory,uint256) returns (bool)" } }, - "id": 966, + "id": 984, "isConstant": false, "isLValue": false, "isPure": false, @@ -3025,42 +3157,42 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3242:36:8", + "src": "3482:36:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "3232:46:8", + "src": "3472:46:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 968, + "id": 986, "nodeType": "ExpressionStatement", - "src": "3232:46:8" + "src": "3472:46:8" } }, - "id": 987, + "id": 1005, "nodeType": "IfStatement", - "src": "3064:383:8", + "src": "3304:383:8", "trueBody": { "expression": { "argumentTypes": null, - "id": 954, + "id": 972, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 947, + "id": 965, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 940, - "src": "3114:7:8", + "referencedDeclaration": 958, + "src": "3354:7:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3073,12 +3205,12 @@ "arguments": [ { "argumentTypes": null, - "id": 949, + "id": 967, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 929, - "src": "3136:2:8", + "referencedDeclaration": 947, + "src": "3376:2:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3086,12 +3218,12 @@ }, { "argumentTypes": null, - "id": 950, + "id": 968, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 931, - "src": "3140:5:8", + "referencedDeclaration": 949, + "src": "3380:5:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3099,12 +3231,12 @@ }, { "argumentTypes": null, - "id": 951, + "id": 969, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 933, - "src": "3147:4:8", + "referencedDeclaration": 951, + "src": "3387:4:8", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -3112,12 +3244,12 @@ }, { "argumentTypes": null, - "id": 952, + "id": 970, "name": "txGas", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 937, - "src": "3153:5:8", + "referencedDeclaration": 955, + "src": "3393:5:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3143,18 +3275,18 @@ "typeString": "uint256" } ], - "id": 948, + "id": 966, "name": "executeCall", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1004, - "src": "3124:11:8", + "referencedDeclaration": 1022, + "src": "3364:11:8", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256,bytes memory,uint256) returns (bool)" } }, - "id": 953, + "id": 971, "isConstant": false, "isLValue": false, "isPure": false, @@ -3162,27 +3294,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3124:35:8", + "src": "3364:35:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "3114:45:8", + "src": "3354:45:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 955, + "id": 973, "nodeType": "ExpressionStatement", - "src": "3114:45:8" + "src": "3354:45:8" } } ] }, "documentation": null, - "id": 989, + "id": 1007, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -3190,16 +3322,16 @@ "name": "execute", "nodeType": "FunctionDefinition", "parameters": { - "id": 938, + "id": 956, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 929, + "id": 947, "name": "to", "nodeType": "VariableDeclaration", - "scope": 989, - "src": "2922:10:8", + "scope": 1007, + "src": "3162:10:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3207,10 +3339,10 @@ "typeString": "address" }, "typeName": { - "id": 928, + "id": 946, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2922:7:8", + "src": "3162:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3221,11 +3353,11 @@ }, { "constant": false, - "id": 931, + "id": 949, "name": "value", "nodeType": "VariableDeclaration", - "scope": 989, - "src": "2934:13:8", + "scope": 1007, + "src": "3174:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3233,10 +3365,10 @@ "typeString": "uint256" }, "typeName": { - "id": 930, + "id": 948, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2934:7:8", + "src": "3174:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3247,11 +3379,11 @@ }, { "constant": false, - "id": 933, + "id": 951, "name": "data", "nodeType": "VariableDeclaration", - "scope": 989, - "src": "2949:10:8", + "scope": 1007, + "src": "3189:10:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3259,10 +3391,10 @@ "typeString": "bytes" }, "typeName": { - "id": 932, + "id": 950, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "2949:5:8", + "src": "3189:5:8", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -3273,11 +3405,11 @@ }, { "constant": false, - "id": 935, + "id": 953, "name": "operation", "nodeType": "VariableDeclaration", - "scope": 989, - "src": "2961:24:8", + "scope": 1007, + "src": "3201:24:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3286,11 +3418,11 @@ }, "typeName": { "contractScope": null, - "id": 934, + "id": 952, "name": "Enum.Operation", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 29, - "src": "2961:14:8", + "src": "3201:14:8", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" @@ -3301,11 +3433,11 @@ }, { "constant": false, - "id": 937, + "id": 955, "name": "txGas", "nodeType": "VariableDeclaration", - "scope": 989, - "src": "2987:13:8", + "scope": 1007, + "src": "3227:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3313,10 +3445,10 @@ "typeString": "uint256" }, "typeName": { - "id": 936, + "id": 954, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2987:7:8", + "src": "3227:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3326,20 +3458,20 @@ "visibility": "internal" } ], - "src": "2921:80:8" + "src": "3161:80:8" }, "payable": false, "returnParameters": { - "id": 941, + "id": 959, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 940, + "id": 958, "name": "success", "nodeType": "VariableDeclaration", - "scope": 989, - "src": "3036:12:8", + "scope": 1007, + "src": "3276:12:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3347,10 +3479,10 @@ "typeString": "bool" }, "typeName": { - "id": 939, + "id": 957, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "3036:4:8", + "src": "3276:4:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3360,86 +3492,86 @@ "visibility": "internal" } ], - "src": "3035:14:8" + "src": "3275:14:8" }, - "scope": 1100, - "src": "2905:548:8", + "scope": 1118, + "src": "3145:548:8", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 1003, + "id": 1021, "nodeType": "Block", - "src": "3586:182:8", + "src": "3826:182:8", "statements": [ { "externalReferences": [ { "data": { - "declaration": 995, + "declaration": 1013, "isOffset": false, "isSlot": false, - "src": "3740:4:8", + "src": "3980:4:8", "valueSize": 1 } }, { "data": { - "declaration": 995, + "declaration": 1013, "isOffset": false, "isSlot": false, - "src": "3721:4:8", + "src": "3961:4:8", "valueSize": 1 } }, { "success": { - "declaration": 1000, + "declaration": 1018, "isOffset": false, "isSlot": false, - "src": "3683:7:8", + "src": "3923:7:8", "valueSize": 1 } }, { "txGas": { - "declaration": 997, + "declaration": 1015, "isOffset": false, "isSlot": false, - "src": "3699:5:8", + "src": "3939:5:8", "valueSize": 1 } }, { "to": { - "declaration": 991, + "declaration": 1009, "isOffset": false, "isSlot": false, - "src": "3706:2:8", + "src": "3946:2:8", "valueSize": 1 } }, { "value": { - "declaration": 993, + "declaration": 1011, "isOffset": false, "isSlot": false, - "src": "3710:5:8", + "src": "3950:5:8", "valueSize": 1 } } ], - "id": 1002, + "id": 1020, "nodeType": "InlineAssembly", "operations": "{\n success := call(txGas, to, value, add(data, 0x20), mload(data), 0, 0)\n}", - "src": "3660:108:8" + "src": "3900:108:8" } ] }, "documentation": null, - "id": 1004, + "id": 1022, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -3447,16 +3579,16 @@ "name": "executeCall", "nodeType": "FunctionDefinition", "parameters": { - "id": 998, + "id": 1016, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 991, + "id": 1009, "name": "to", "nodeType": "VariableDeclaration", - "scope": 1004, - "src": "3480:10:8", + "scope": 1022, + "src": "3720:10:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3464,10 +3596,10 @@ "typeString": "address" }, "typeName": { - "id": 990, + "id": 1008, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3480:7:8", + "src": "3720:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3478,11 +3610,11 @@ }, { "constant": false, - "id": 993, + "id": 1011, "name": "value", "nodeType": "VariableDeclaration", - "scope": 1004, - "src": "3492:13:8", + "scope": 1022, + "src": "3732:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3490,10 +3622,10 @@ "typeString": "uint256" }, "typeName": { - "id": 992, + "id": 1010, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3492:7:8", + "src": "3732:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3504,11 +3636,11 @@ }, { "constant": false, - "id": 995, + "id": 1013, "name": "data", "nodeType": "VariableDeclaration", - "scope": 1004, - "src": "3507:10:8", + "scope": 1022, + "src": "3747:10:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3516,10 +3648,10 @@ "typeString": "bytes" }, "typeName": { - "id": 994, + "id": 1012, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "3507:5:8", + "src": "3747:5:8", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -3530,11 +3662,11 @@ }, { "constant": false, - "id": 997, + "id": 1015, "name": "txGas", "nodeType": "VariableDeclaration", - "scope": 1004, - "src": "3519:13:8", + "scope": 1022, + "src": "3759:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3542,10 +3674,10 @@ "typeString": "uint256" }, "typeName": { - "id": 996, + "id": 1014, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3519:7:8", + "src": "3759:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3555,20 +3687,20 @@ "visibility": "internal" } ], - "src": "3479:54:8" + "src": "3719:54:8" }, "payable": false, "returnParameters": { - "id": 1001, + "id": 1019, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1000, + "id": 1018, "name": "success", "nodeType": "VariableDeclaration", - "scope": 1004, - "src": "3568:12:8", + "scope": 1022, + "src": "3808:12:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3576,10 +3708,10 @@ "typeString": "bool" }, "typeName": { - "id": 999, + "id": 1017, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "3568:4:8", + "src": "3808:4:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3589,77 +3721,77 @@ "visibility": "internal" } ], - "src": "3567:14:8" + "src": "3807:14:8" }, - "scope": 1100, - "src": "3459:309:8", + "scope": 1118, + "src": "3699:309:8", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 1016, + "id": 1034, "nodeType": "Block", - "src": "3894:183:8", + "src": "4134:183:8", "statements": [ { "externalReferences": [ { "data": { - "declaration": 1008, + "declaration": 1026, "isOffset": false, "isSlot": false, - "src": "4049:4:8", + "src": "4289:4:8", "valueSize": 1 } }, { "data": { - "declaration": 1008, + "declaration": 1026, "isOffset": false, "isSlot": false, - "src": "4030:4:8", + "src": "4270:4:8", "valueSize": 1 } }, { "success": { - "declaration": 1013, + "declaration": 1031, "isOffset": false, "isSlot": false, - "src": "3991:7:8", + "src": "4231:7:8", "valueSize": 1 } }, { "txGas": { - "declaration": 1010, + "declaration": 1028, "isOffset": false, "isSlot": false, - "src": "4015:5:8", + "src": "4255:5:8", "valueSize": 1 } }, { "to": { - "declaration": 1006, + "declaration": 1024, "isOffset": false, "isSlot": false, - "src": "4022:2:8", + "src": "4262:2:8", "valueSize": 1 } } ], - "id": 1015, + "id": 1033, "nodeType": "InlineAssembly", "operations": "{\n success := delegatecall(txGas, to, add(data, 0x20), mload(data), 0, 0)\n}", - "src": "3968:109:8" + "src": "4208:109:8" } ] }, "documentation": null, - "id": 1017, + "id": 1035, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -3667,16 +3799,16 @@ "name": "executeDelegateCall", "nodeType": "FunctionDefinition", "parameters": { - "id": 1011, + "id": 1029, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1006, + "id": 1024, "name": "to", "nodeType": "VariableDeclaration", - "scope": 1017, - "src": "3803:10:8", + "scope": 1035, + "src": "4043:10:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3684,10 +3816,10 @@ "typeString": "address" }, "typeName": { - "id": 1005, + "id": 1023, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3803:7:8", + "src": "4043:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3698,11 +3830,11 @@ }, { "constant": false, - "id": 1008, + "id": 1026, "name": "data", "nodeType": "VariableDeclaration", - "scope": 1017, - "src": "3815:10:8", + "scope": 1035, + "src": "4055:10:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3710,10 +3842,10 @@ "typeString": "bytes" }, "typeName": { - "id": 1007, + "id": 1025, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "3815:5:8", + "src": "4055:5:8", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -3724,11 +3856,11 @@ }, { "constant": false, - "id": 1010, + "id": 1028, "name": "txGas", "nodeType": "VariableDeclaration", - "scope": 1017, - "src": "3827:13:8", + "scope": 1035, + "src": "4067:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3736,10 +3868,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1009, + "id": 1027, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3827:7:8", + "src": "4067:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3749,20 +3881,20 @@ "visibility": "internal" } ], - "src": "3802:39:8" + "src": "4042:39:8" }, "payable": false, "returnParameters": { - "id": 1014, + "id": 1032, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1013, + "id": 1031, "name": "success", "nodeType": "VariableDeclaration", - "scope": 1017, - "src": "3876:12:8", + "scope": 1035, + "src": "4116:12:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3770,10 +3902,10 @@ "typeString": "bool" }, "typeName": { - "id": 1012, + "id": 1030, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "3876:4:8", + "src": "4116:4:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3783,59 +3915,59 @@ "visibility": "internal" } ], - "src": "3875:14:8" + "src": "4115:14:8" }, - "scope": 1100, - "src": "3774:303:8", + "scope": 1118, + "src": "4014:303:8", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 1025, + "id": 1043, "nodeType": "Block", - "src": "4177:167:8", + "src": "4417:167:8", "statements": [ { "externalReferences": [ { "newContract": { - "declaration": 1022, + "declaration": 1040, "isOffset": false, "isSlot": false, - "src": "4274:11:8", + "src": "4514:11:8", "valueSize": 1 } }, { "data": { - "declaration": 1019, + "declaration": 1037, "isOffset": false, "isSlot": false, - "src": "4303:4:8", + "src": "4543:4:8", "valueSize": 1 } }, { "data": { - "declaration": 1019, + "declaration": 1037, "isOffset": false, "isSlot": false, - "src": "4322:4:8", + "src": "4562:4:8", "valueSize": 1 } } ], - "id": 1024, + "id": 1042, "nodeType": "InlineAssembly", "operations": "{\n newContract := create(0, add(data, 0x20), mload(data))\n}", - "src": "4251:93:8" + "src": "4491:93:8" } ] }, "documentation": null, - "id": 1026, + "id": 1044, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -3843,16 +3975,16 @@ "name": "executeCreate", "nodeType": "FunctionDefinition", "parameters": { - "id": 1020, + "id": 1038, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1019, + "id": 1037, "name": "data", "nodeType": "VariableDeclaration", - "scope": 1026, - "src": "4106:10:8", + "scope": 1044, + "src": "4346:10:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3860,10 +3992,10 @@ "typeString": "bytes" }, "typeName": { - "id": 1018, + "id": 1036, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "4106:5:8", + "src": "4346:5:8", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -3873,20 +4005,20 @@ "visibility": "internal" } ], - "src": "4105:12:8" + "src": "4345:12:8" }, "payable": false, "returnParameters": { - "id": 1023, + "id": 1041, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1022, + "id": 1040, "name": "newContract", "nodeType": "VariableDeclaration", - "scope": 1026, - "src": "4152:19:8", + "scope": 1044, + "src": "4392:19:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3894,10 +4026,10 @@ "typeString": "address" }, "typeName": { - "id": 1021, + "id": 1039, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4152:7:8", + "src": "4392:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3907,32 +4039,32 @@ "visibility": "internal" } ], - "src": "4151:21:8" + "src": "4391:21:8" }, - "scope": 1100, - "src": "4083:261:8", + "scope": 1118, + "src": "4323:261:8", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 1098, + "id": 1116, "nodeType": "Block", - "src": "4505:656:8", + "src": "4745:656:8", "statements": [ { "assignments": [ - 1033 + 1051 ], "declarations": [ { "constant": false, - "id": 1033, + "id": 1051, "name": "moduleCount", "nodeType": "VariableDeclaration", - "scope": 1099, - "src": "4549:19:8", + "scope": 1117, + "src": "4789:19:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3940,10 +4072,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1032, + "id": 1050, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4549:7:8", + "src": "4789:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3953,18 +4085,18 @@ "visibility": "internal" } ], - "id": 1035, + "id": 1053, "initialValue": { "argumentTypes": null, "hexValue": "30", - "id": 1034, + "id": 1052, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4571:1:8", + "src": "4811:1:8", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -3973,20 +4105,20 @@ "value": "0" }, "nodeType": "VariableDeclarationStatement", - "src": "4549:23:8" + "src": "4789:23:8" }, { "assignments": [ - 1037 + 1055 ], "declarations": [ { "constant": false, - "id": 1037, + "id": 1055, "name": "currentModule", "nodeType": "VariableDeclaration", - "scope": 1099, - "src": "4582:21:8", + "scope": 1117, + "src": "4822:21:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3994,10 +4126,10 @@ "typeString": "address" }, "typeName": { - "id": 1036, + "id": 1054, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4582:7:8", + "src": "4822:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4007,31 +4139,31 @@ "visibility": "internal" } ], - "id": 1041, + "id": 1059, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1038, + "id": 1056, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 776, - "src": "4606:7:8", + "referencedDeclaration": 788, + "src": "4846:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1040, + "id": 1058, "indexExpression": { "argumentTypes": null, - "id": 1039, + "id": 1057, "name": "SENTINEL_MODULES", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 772, - "src": "4614:16:8", + "referencedDeclaration": 784, + "src": "4854:16:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4042,37 +4174,37 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4606:25:8", + "src": "4846:25:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", - "src": "4582:49:8" + "src": "4822:49:8" }, { "body": { - "id": 1054, + "id": 1072, "nodeType": "Block", - "src": "4682:91:8", + "src": "4922:91:8", "statements": [ { "expression": { "argumentTypes": null, - "id": 1049, + "id": 1067, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1045, + "id": 1063, "name": "currentModule", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1037, - "src": "4696:13:8", + "referencedDeclaration": 1055, + "src": "4936:13:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4084,26 +4216,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1046, + "id": 1064, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 776, - "src": "4712:7:8", + "referencedDeclaration": 788, + "src": "4952:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1048, + "id": 1066, "indexExpression": { "argumentTypes": null, - "id": 1047, + "id": 1065, "name": "currentModule", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1037, - "src": "4720:13:8", + "referencedDeclaration": 1055, + "src": "4960:13:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4114,26 +4246,26 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4712:22:8", + "src": "4952:22:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "4696:38:8", + "src": "4936:38:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1050, + "id": 1068, "nodeType": "ExpressionStatement", - "src": "4696:38:8" + "src": "4936:38:8" }, { "expression": { "argumentTypes": null, - "id": 1052, + "id": 1070, "isConstant": false, "isLValue": false, "isPure": false, @@ -4141,15 +4273,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "4748:14:8", + "src": "4988:14:8", "subExpression": { "argumentTypes": null, - "id": 1051, + "id": 1069, "name": "moduleCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1033, - "src": "4748:11:8", + "referencedDeclaration": 1051, + "src": "4988:11:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4160,9 +4292,9 @@ "typeString": "uint256" } }, - "id": 1053, + "id": 1071, "nodeType": "ExpressionStatement", - "src": "4748:14:8" + "src": "4988:14:8" } ] }, @@ -4172,19 +4304,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1044, + "id": 1062, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1042, + "id": 1060, "name": "currentModule", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1037, - "src": "4647:13:8", + "referencedDeclaration": 1055, + "src": "4887:13:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4194,39 +4326,39 @@ "operator": "!=", "rightExpression": { "argumentTypes": null, - "id": 1043, + "id": 1061, "name": "SENTINEL_MODULES", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 772, - "src": "4664:16:8", + "referencedDeclaration": 784, + "src": "4904:16:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "4647:33:8", + "src": "4887:33:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 1055, + "id": 1073, "nodeType": "WhileStatement", - "src": "4641:132:8" + "src": "4881:132:8" }, { "assignments": [ - 1059 + 1077 ], "declarations": [ { "constant": false, - "id": 1059, + "id": 1077, "name": "array", "nodeType": "VariableDeclaration", - "scope": 1099, - "src": "4782:22:8", + "scope": 1117, + "src": "5022:22:8", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -4235,19 +4367,19 @@ }, "typeName": { "baseType": { - "id": 1057, + "id": 1075, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4782:7:8", + "src": "5022:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1058, + "id": 1076, "length": null, "nodeType": "ArrayTypeName", - "src": "4782:9:8", + "src": "5022:9:8", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" @@ -4257,18 +4389,18 @@ "visibility": "internal" } ], - "id": 1065, + "id": 1083, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 1063, + "id": 1081, "name": "moduleCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1033, - "src": "4821:11:8", + "referencedDeclaration": 1051, + "src": "5061:11:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4282,39 +4414,39 @@ "typeString": "uint256" } ], - "id": 1062, + "id": 1080, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "NewExpression", - "src": "4807:13:8", + "src": "5047:13:8", "typeDescriptions": { "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_$", "typeString": "function (uint256) pure returns (address[] memory)" }, "typeName": { "baseType": { - "id": 1060, + "id": 1078, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4811:7:8", + "src": "5051:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1061, + "id": 1079, "length": null, "nodeType": "ArrayTypeName", - "src": "4811:9:8", + "src": "5051:9:8", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" } } }, - "id": 1064, + "id": 1082, "isConstant": false, "isLValue": false, "isPure": false, @@ -4322,31 +4454,31 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4807:26:8", + "src": "5047:26:8", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory", "typeString": "address[] memory" } }, "nodeType": "VariableDeclarationStatement", - "src": "4782:51:8" + "src": "5022:51:8" }, { "expression": { "argumentTypes": null, - "id": 1068, + "id": 1086, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1066, + "id": 1084, "name": "moduleCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1033, - "src": "4877:11:8", + "referencedDeclaration": 1051, + "src": "5117:11:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4357,14 +4489,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "30", - "id": 1067, + "id": 1085, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4891:1:8", + "src": "5131:1:8", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -4372,32 +4504,32 @@ }, "value": "0" }, - "src": "4877:15:8", + "src": "5117:15:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 1069, + "id": 1087, "nodeType": "ExpressionStatement", - "src": "4877:15:8" + "src": "5117:15:8" }, { "expression": { "argumentTypes": null, - "id": 1074, + "id": 1092, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1070, + "id": 1088, "name": "currentModule", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1037, - "src": "4902:13:8", + "referencedDeclaration": 1055, + "src": "5142:13:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4409,26 +4541,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1071, + "id": 1089, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 776, - "src": "4918:7:8", + "referencedDeclaration": 788, + "src": "5158:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1073, + "id": 1091, "indexExpression": { "argumentTypes": null, - "id": 1072, + "id": 1090, "name": "SENTINEL_MODULES", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 772, - "src": "4926:16:8", + "referencedDeclaration": 784, + "src": "5166:16:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4439,32 +4571,32 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4918:25:8", + "src": "5158:25:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "4902:41:8", + "src": "5142:41:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1075, + "id": 1093, "nodeType": "ExpressionStatement", - "src": "4902:41:8" + "src": "5142:41:8" }, { "body": { - "id": 1094, + "id": 1112, "nodeType": "Block", - "src": "4994:139:8", + "src": "5234:139:8", "statements": [ { "expression": { "argumentTypes": null, - "id": 1083, + "id": 1101, "isConstant": false, "isLValue": false, "isPure": false, @@ -4473,26 +4605,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1079, + "id": 1097, "name": "array", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1059, - "src": "5008:5:8", + "referencedDeclaration": 1077, + "src": "5248:5:8", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 1081, + "id": 1099, "indexExpression": { "argumentTypes": null, - "id": 1080, + "id": 1098, "name": "moduleCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1033, - "src": "5014:11:8", + "referencedDeclaration": 1051, + "src": "5254:11:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4503,7 +4635,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "5008:18:8", + "src": "5248:18:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4513,43 +4645,43 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1082, + "id": 1100, "name": "currentModule", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1037, - "src": "5029:13:8", + "referencedDeclaration": 1055, + "src": "5269:13:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "5008:34:8", + "src": "5248:34:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1084, + "id": 1102, "nodeType": "ExpressionStatement", - "src": "5008:34:8" + "src": "5248:34:8" }, { "expression": { "argumentTypes": null, - "id": 1089, + "id": 1107, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1085, + "id": 1103, "name": "currentModule", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1037, - "src": "5056:13:8", + "referencedDeclaration": 1055, + "src": "5296:13:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4561,26 +4693,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1086, + "id": 1104, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 776, - "src": "5072:7:8", + "referencedDeclaration": 788, + "src": "5312:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1088, + "id": 1106, "indexExpression": { "argumentTypes": null, - "id": 1087, + "id": 1105, "name": "currentModule", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1037, - "src": "5080:13:8", + "referencedDeclaration": 1055, + "src": "5320:13:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4591,26 +4723,26 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "5072:22:8", + "src": "5312:22:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "5056:38:8", + "src": "5296:38:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1090, + "id": 1108, "nodeType": "ExpressionStatement", - "src": "5056:38:8" + "src": "5296:38:8" }, { "expression": { "argumentTypes": null, - "id": 1092, + "id": 1110, "isConstant": false, "isLValue": false, "isPure": false, @@ -4618,15 +4750,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "5108:14:8", + "src": "5348:14:8", "subExpression": { "argumentTypes": null, - "id": 1091, + "id": 1109, "name": "moduleCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1033, - "src": "5108:11:8", + "referencedDeclaration": 1051, + "src": "5348:11:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4637,9 +4769,9 @@ "typeString": "uint256" } }, - "id": 1093, + "id": 1111, "nodeType": "ExpressionStatement", - "src": "5108:14:8" + "src": "5348:14:8" } ] }, @@ -4649,19 +4781,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1078, + "id": 1096, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1076, + "id": 1094, "name": "currentModule", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1037, - "src": "4959:13:8", + "referencedDeclaration": 1055, + "src": "5199:13:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4671,50 +4803,50 @@ "operator": "!=", "rightExpression": { "argumentTypes": null, - "id": 1077, + "id": 1095, "name": "SENTINEL_MODULES", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 772, - "src": "4976:16:8", + "referencedDeclaration": 784, + "src": "5216:16:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "4959:33:8", + "src": "5199:33:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 1095, + "id": 1113, "nodeType": "WhileStatement", - "src": "4953:180:8" + "src": "5193:180:8" }, { "expression": { "argumentTypes": null, - "id": 1096, + "id": 1114, "name": "array", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1059, - "src": "5149:5:8", + "referencedDeclaration": 1077, + "src": "5389:5:8", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "functionReturnParameters": 1031, - "id": 1097, + "functionReturnParameters": 1049, + "id": 1115, "nodeType": "Return", - "src": "5142:12:8" + "src": "5382:12:8" } ] }, "documentation": "@dev Returns array of modules.\n @return Array of modules.", - "id": 1099, + "id": 1117, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -4722,23 +4854,23 @@ "name": "getModules", "nodeType": "FunctionDefinition", "parameters": { - "id": 1027, + "id": 1045, "nodeType": "ParameterList", "parameters": [], - "src": "4442:2:8" + "src": "4682:2:8" }, "payable": false, "returnParameters": { - "id": 1031, + "id": 1049, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1030, + "id": 1048, "name": "", "nodeType": "VariableDeclaration", - "scope": 1099, - "src": "4490:9:8", + "scope": 1117, + "src": "4730:9:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4747,19 +4879,19 @@ }, "typeName": { "baseType": { - "id": 1028, + "id": 1046, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4490:7:8", + "src": "4730:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1029, + "id": 1047, "length": null, "nodeType": "ArrayTypeName", - "src": "4490:9:8", + "src": "4730:9:8", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" @@ -4769,33 +4901,33 @@ "visibility": "internal" } ], - "src": "4489:11:8" + "src": "4729:11:8" }, - "scope": 1100, - "src": "4423:738:8", + "scope": 1118, + "src": "4663:738:8", "stateMutability": "view", "superFunction": null, "visibility": "public" } ], - "scope": 1101, - "src": "303:4860:8" + "scope": 1119, + "src": "303:5100:8" } ], - "src": "0:5164:8" + "src": "0:5404:8" }, "legacyAST": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/ModuleManager.sol", "exportedSymbols": { "ModuleManager": [ - 1100 + 1118 ] }, - "id": 1101, + "id": 1119, "nodeType": "SourceUnit", "nodes": [ { - "id": 752, + "id": 764, "literals": [ "solidity", "0.4", @@ -4807,10 +4939,10 @@ { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Module.sol", "file": "./Module.sol", - "id": 753, + "id": 765, "nodeType": "ImportDirective", - "scope": 1101, - "sourceUnit": 751, + "scope": 1119, + "sourceUnit": 763, "src": "24:22:8", "symbolAliases": [], "unitAlias": "" @@ -4818,10 +4950,10 @@ { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/MasterCopy.sol", "file": "./MasterCopy.sol", - "id": 754, + "id": 766, "nodeType": "ImportDirective", - "scope": 1101, - "sourceUnit": 653, + "scope": 1119, + "sourceUnit": 663, "src": "47:26:8", "symbolAliases": [], "unitAlias": "" @@ -4829,9 +4961,9 @@ { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Enum.sol", "file": "./Enum.sol", - "id": 755, + "id": 767, "nodeType": "ImportDirective", - "scope": 1101, + "scope": 1119, "sourceUnit": 31, "src": "74:20:8", "symbolAliases": [], @@ -4843,31 +4975,31 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 756, + "id": 768, "name": "SelfAuthorized", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1619, + "referencedDeclaration": 1654, "src": "329:14:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_SelfAuthorized_$1619", + "typeIdentifier": "t_contract$_SelfAuthorized_$1654", "typeString": "contract SelfAuthorized" } }, - "id": 757, + "id": 769, "nodeType": "InheritanceSpecifier", "src": "329:14:8" } ], "contractDependencies": [ - 1619 + 1654 ], "contractKind": "contract", "documentation": "@title Module Manager - A contract that manages modules that can execute transactions via this contract\n @author Stefan George - \n @author Richard Meissner - ", "fullyImplemented": true, - "id": 1100, + "id": 1118, "linearizedBaseContracts": [ - 1100, - 1619 + 1118, + 1654 ], "name": "ModuleManager", "nodeType": "ContractDefinition", @@ -4875,20 +5007,20 @@ { "anonymous": false, "documentation": null, - "id": 761, + "id": 773, "name": "ContractCreation", "nodeType": "EventDefinition", "parameters": { - "id": 760, + "id": 772, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 759, + "id": 771, "indexed": false, "name": "newContract", "nodeType": "VariableDeclaration", - "scope": 761, + "scope": 773, "src": "374:19:8", "stateVariable": false, "storageLocation": "default", @@ -4897,7 +5029,7 @@ "typeString": "address" }, "typeName": { - "id": 758, + "id": 770, "name": "address", "nodeType": "ElementaryTypeName", "src": "374:7:8", @@ -4916,10 +5048,10 @@ }, { "constant": true, - "id": 764, + "id": 776, "name": "NAME", "nodeType": "VariableDeclaration", - "scope": 1100, + "scope": 1118, "src": "401:46:8", "stateVariable": true, "storageLocation": "default", @@ -4928,7 +5060,7 @@ "typeString": "string" }, "typeName": { - "id": 762, + "id": 774, "name": "string", "nodeType": "ElementaryTypeName", "src": "401:6:8", @@ -4940,7 +5072,7 @@ "value": { "argumentTypes": null, "hexValue": "4d6f64756c65204d616e61676572", - "id": 763, + "id": 775, "isConstant": false, "isLValue": false, "isPure": true, @@ -4959,10 +5091,10 @@ }, { "constant": true, - "id": 767, + "id": 779, "name": "VERSION", "nodeType": "VariableDeclaration", - "scope": 1100, + "scope": 1118, "src": "453:40:8", "stateVariable": true, "storageLocation": "default", @@ -4971,7 +5103,7 @@ "typeString": "string" }, "typeName": { - "id": 765, + "id": 777, "name": "string", "nodeType": "ElementaryTypeName", "src": "453:6:8", @@ -4983,7 +5115,7 @@ "value": { "argumentTypes": null, "hexValue": "302e302e31", - "id": 766, + "id": 778, "isConstant": false, "isLValue": false, "isPure": true, @@ -5002,10 +5134,10 @@ }, { "constant": true, - "id": 772, + "id": 784, "name": "SENTINEL_MODULES", "nodeType": "VariableDeclaration", - "scope": 1100, + "scope": 1118, "src": "499:55:8", "stateVariable": true, "storageLocation": "default", @@ -5014,7 +5146,7 @@ "typeString": "address" }, "typeName": { - "id": 768, + "id": 780, "name": "address", "nodeType": "ElementaryTypeName", "src": "499:7:8", @@ -5029,7 +5161,7 @@ { "argumentTypes": null, "hexValue": "307831", - "id": 770, + "id": 782, "isConstant": false, "isLValue": false, "isPure": true, @@ -5052,7 +5184,7 @@ "typeString": "int_const 1" } ], - "id": 769, + "id": 781, "isConstant": false, "isLValue": false, "isPure": true, @@ -5065,7 +5197,7 @@ }, "typeName": "address" }, - "id": 771, + "id": 783, "isConstant": false, "isLValue": false, "isPure": true, @@ -5083,10 +5215,10 @@ }, { "constant": false, - "id": 776, + "id": 788, "name": "modules", "nodeType": "VariableDeclaration", - "scope": 1100, + "scope": 1118, "src": "561:45:8", "stateVariable": true, "storageLocation": "default", @@ -5095,9 +5227,9 @@ "typeString": "mapping(address => address)" }, "typeName": { - "id": 775, + "id": 787, "keyType": { - "id": 773, + "id": 785, "name": "address", "nodeType": "ElementaryTypeName", "src": "570:7:8", @@ -5113,7 +5245,7 @@ "typeString": "mapping(address => address)" }, "valueType": { - "id": 774, + "id": 786, "name": "address", "nodeType": "ElementaryTypeName", "src": "581:7:8", @@ -5128,13 +5260,13 @@ }, { "body": { - "id": 779, + "id": 791, "nodeType": "Block", "src": "721:8:8", "statements": [] }, "documentation": "@dev Fallback function accepts Ether transactions.", - "id": 780, + "id": 792, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -5142,19 +5274,19 @@ "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 777, + "id": 789, "nodeType": "ParameterList", "parameters": [], "src": "681:2:8" }, "payable": true, "returnParameters": { - "id": 778, + "id": 790, "nodeType": "ParameterList", "parameters": [], "src": "721:0:8" }, - "scope": 1100, + "scope": 1118, "src": "672:57:8", "stateMutability": "payable", "superFunction": null, @@ -5162,9 +5294,9 @@ }, { "body": { - "id": 814, + "id": 828, "nodeType": "Block", - "src": "802:266:8", + "src": "802:342:8", "statements": [ { "expression": { @@ -5176,7 +5308,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 792, + "id": 804, "isConstant": false, "isLValue": false, "isPure": false, @@ -5185,25 +5317,25 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 788, + "id": 800, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 776, + "referencedDeclaration": 788, "src": "820:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 790, + "id": 802, "indexExpression": { "argumentTypes": null, - "id": 789, + "id": 801, "name": "SENTINEL_MODULES", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 772, + "referencedDeclaration": 784, "src": "828:16:8", "typeDescriptions": { "typeIdentifier": "t_address", @@ -5226,7 +5358,7 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 791, + "id": 803, "isConstant": false, "isLValue": false, "isPure": true, @@ -5246,6 +5378,24 @@ "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "4d6f64756c6573206861766520616c7265616479206265656e20696e697469616c697a6564", + "id": 805, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "852:39:8", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_1e0428ffa69bff65645154a36d5017c238f946ddaf89430d30eec813f30bdd77", + "typeString": "literal_string \"Modules have already been initialized\"" + }, + "value": "Modules have already been initialized" } ], "expression": { @@ -5253,23 +5403,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_1e0428ffa69bff65645154a36d5017c238f946ddaf89430d30eec813f30bdd77", + "typeString": "literal_string \"Modules have already been initialized\"" } ], - "id": 787, + "id": 799, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, + "referencedDeclaration": 2658, "src": "812:7:8", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 793, + "id": 806, "isConstant": false, "isLValue": false, "isPure": false, @@ -5277,20 +5431,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "812:39:8", + "src": "812:80:8", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 794, + "id": 807, "nodeType": "ExpressionStatement", - "src": "812:39:8" + "src": "812:80:8" }, { "expression": { "argumentTypes": null, - "id": 799, + "id": 812, "isConstant": false, "isLValue": false, "isPure": false, @@ -5299,26 +5453,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 795, + "id": 808, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 776, - "src": "861:7:8", + "referencedDeclaration": 788, + "src": "902:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 797, + "id": 810, "indexExpression": { "argumentTypes": null, - "id": 796, + "id": 809, "name": "SENTINEL_MODULES", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 772, - "src": "869:16:8", + "referencedDeclaration": 784, + "src": "910:16:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5329,7 +5483,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "861:25:8", + "src": "902:25:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5339,26 +5493,26 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 798, + "id": 811, "name": "SENTINEL_MODULES", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 772, - "src": "889:16:8", + "referencedDeclaration": 784, + "src": "930:16:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "861:44:8", + "src": "902:44:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 800, + "id": 813, "nodeType": "ExpressionStatement", - "src": "861:44:8" + "src": "902:44:8" }, { "condition": { @@ -5367,19 +5521,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 803, + "id": 816, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 801, + "id": 814, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 782, - "src": "919:2:8", + "referencedDeclaration": 794, + "src": "960:2:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5390,14 +5544,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 802, + "id": 815, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "925:1:8", + "src": "966:1:8", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -5405,16 +5559,16 @@ }, "value": "0" }, - "src": "919:7:8", + "src": "960:7:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 813, + "id": 827, "nodeType": "IfStatement", - "src": "915:146:8", + "src": "956:181:8", "trueBody": { "expression": { "argumentTypes": null, @@ -5424,12 +5578,12 @@ "arguments": [ { "argumentTypes": null, - "id": 806, + "id": 819, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 782, - "src": "1040:2:8", + "referencedDeclaration": 794, + "src": "1081:2:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5437,12 +5591,12 @@ }, { "argumentTypes": null, - "id": 807, + "id": 820, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 784, - "src": "1044:4:8", + "referencedDeclaration": 796, + "src": "1085:4:8", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -5453,18 +5607,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 808, + "id": 821, "name": "gasleft", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2591, - "src": "1050:7:8", + "referencedDeclaration": 2647, + "src": "1091:7:8", "typeDescriptions": { "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, - "id": 809, + "id": 822, "isConstant": false, "isLValue": false, "isPure": false, @@ -5472,7 +5626,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1050:9:8", + "src": "1091:9:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5494,18 +5648,18 @@ "typeString": "uint256" } ], - "id": 805, + "id": 818, "name": "executeDelegateCall", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1017, - "src": "1020:19:8", + "referencedDeclaration": 1035, + "src": "1061:19:8", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,bytes memory,uint256) returns (bool)" } }, - "id": 810, + "id": 823, "isConstant": false, "isLValue": false, "isPure": false, @@ -5513,11 +5667,29 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1020:40:8", + "src": "1061:40:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "436f756c64206e6f742066696e69736820696e697469616c697a6174696f6e", + "id": 824, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1103:33:8", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_7913a3f9168bf3e458e3f42eb08db5c4b33f44228d345660887090b75e24c6aa", + "typeString": "literal_string \"Could not finish initialization\"" + }, + "value": "Could not finish initialization" } ], "expression": { @@ -5525,23 +5697,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_7913a3f9168bf3e458e3f42eb08db5c4b33f44228d345660887090b75e24c6aa", + "typeString": "literal_string \"Could not finish initialization\"" } ], - "id": 804, + "id": 817, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "1012:7:8", + "referencedDeclaration": 2658, + "src": "1053:7:8", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 811, + "id": 825, "isConstant": false, "isLValue": false, "isPure": false, @@ -5549,21 +5725,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1012:49:8", + "src": "1053:84:8", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 812, + "id": 826, "nodeType": "ExpressionStatement", - "src": "1012:49:8" + "src": "1053:84:8" } } ] }, "documentation": null, - "id": 815, + "id": 829, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -5571,15 +5747,15 @@ "name": "setupModules", "nodeType": "FunctionDefinition", "parameters": { - "id": 785, + "id": 797, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 782, + "id": 794, "name": "to", "nodeType": "VariableDeclaration", - "scope": 815, + "scope": 829, "src": "757:10:8", "stateVariable": false, "storageLocation": "default", @@ -5588,7 +5764,7 @@ "typeString": "address" }, "typeName": { - "id": 781, + "id": 793, "name": "address", "nodeType": "ElementaryTypeName", "src": "757:7:8", @@ -5602,10 +5778,10 @@ }, { "constant": false, - "id": 784, + "id": 796, "name": "data", "nodeType": "VariableDeclaration", - "scope": 815, + "scope": 829, "src": "769:10:8", "stateVariable": false, "storageLocation": "default", @@ -5614,7 +5790,7 @@ "typeString": "bytes" }, "typeName": { - "id": 783, + "id": 795, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "769:5:8", @@ -5631,22 +5807,22 @@ }, "payable": false, "returnParameters": { - "id": 786, + "id": 798, "nodeType": "ParameterList", "parameters": [], "src": "802:0:8" }, - "scope": 1100, - "src": "735:333:8", + "scope": 1118, + "src": "735:409:8", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 858, + "id": 874, "nodeType": "Block", - "src": "1310:316:8", + "src": "1386:384:8", "statements": [ { "expression": { @@ -5658,7 +5834,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 833, + "id": 847, "isConstant": false, "isLValue": false, "isPure": false, @@ -5669,7 +5845,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 827, + "id": 841, "isConstant": false, "isLValue": false, "isPure": false, @@ -5679,14 +5855,14 @@ "arguments": [ { "argumentTypes": null, - "id": 824, + "id": 838, "name": "module", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 817, - "src": "1390:6:8", + "referencedDeclaration": 831, + "src": "1466:6:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$750", + "typeIdentifier": "t_contract$_Module_$762", "typeString": "contract Module" } } @@ -5694,24 +5870,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_Module_$750", + "typeIdentifier": "t_contract$_Module_$762", "typeString": "contract Module" } ], - "id": 823, + "id": 837, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1382:7:8", + "src": "1458:7:8", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 825, + "id": 839, "isConstant": false, "isLValue": false, "isPure": false, @@ -5719,7 +5895,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1382:15:8", + "src": "1458:15:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5730,14 +5906,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 826, + "id": 840, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1401:1:8", + "src": "1477:1:8", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -5745,7 +5921,7 @@ }, "value": "0" }, - "src": "1382:20:8", + "src": "1458:20:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5759,7 +5935,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 832, + "id": 846, "isConstant": false, "isLValue": false, "isPure": false, @@ -5769,14 +5945,14 @@ "arguments": [ { "argumentTypes": null, - "id": 829, + "id": 843, "name": "module", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 817, - "src": "1414:6:8", + "referencedDeclaration": 831, + "src": "1490:6:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$750", + "typeIdentifier": "t_contract$_Module_$762", "typeString": "contract Module" } } @@ -5784,24 +5960,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_Module_$750", + "typeIdentifier": "t_contract$_Module_$762", "typeString": "contract Module" } ], - "id": 828, + "id": 842, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1406:7:8", + "src": "1482:7:8", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 830, + "id": 844, "isConstant": false, "isLValue": false, "isPure": false, @@ -5809,7 +5985,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1406:15:8", + "src": "1482:15:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5819,28 +5995,46 @@ "operator": "!=", "rightExpression": { "argumentTypes": null, - "id": 831, + "id": 845, "name": "SENTINEL_MODULES", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 772, - "src": "1425:16:8", + "referencedDeclaration": 784, + "src": "1501:16:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "1406:35:8", + "src": "1482:35:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "1382:59:8", + "src": "1458:59:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "496e76616c6964206d6f64756c6520616464726573732070726f7669646564", + "id": 848, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1519:33:8", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_8c2199b479423c52a835dfe8b0f2e9eb4c1ec1069ba198ccc38077a4a88a5c00", + "typeString": "literal_string \"Invalid module address provided\"" + }, + "value": "Invalid module address provided" } ], "expression": { @@ -5848,23 +6042,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_8c2199b479423c52a835dfe8b0f2e9eb4c1ec1069ba198ccc38077a4a88a5c00", + "typeString": "literal_string \"Invalid module address provided\"" } ], - "id": 822, + "id": 836, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "1374:7:8", + "referencedDeclaration": 2658, + "src": "1450:7:8", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 834, + "id": 849, "isConstant": false, "isLValue": false, "isPure": false, @@ -5872,15 +6070,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1374:68:8", + "src": "1450:103:8", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 835, + "id": 850, "nodeType": "ExpressionStatement", - "src": "1374:68:8" + "src": "1450:103:8" }, { "expression": { @@ -5892,7 +6090,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 841, + "id": 856, "isConstant": false, "isLValue": false, "isPure": false, @@ -5901,28 +6099,28 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 837, + "id": 852, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 776, - "src": "1501:7:8", + "referencedDeclaration": 788, + "src": "1612:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 839, + "id": 854, "indexExpression": { "argumentTypes": null, - "id": 838, + "id": 853, "name": "module", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 817, - "src": "1509:6:8", + "referencedDeclaration": 831, + "src": "1620:6:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$750", + "typeIdentifier": "t_contract$_Module_$762", "typeString": "contract Module" } }, @@ -5931,7 +6129,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1501:15:8", + "src": "1612:15:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5942,14 +6140,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 840, + "id": 855, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1520:1:8", + "src": "1631:1:8", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -5957,11 +6155,29 @@ }, "value": "0" }, - "src": "1501:20:8", + "src": "1612:20:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "4d6f64756c652068617320616c7265616479206265656e206164646564", + "id": 857, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1634:31:8", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ae2b4ea52eaf6de3fb2d8a64b7555be2dfd285b837a62821bf24e7dc6f329450", + "typeString": "literal_string \"Module has already been added\"" + }, + "value": "Module has already been added" } ], "expression": { @@ -5969,23 +6185,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_ae2b4ea52eaf6de3fb2d8a64b7555be2dfd285b837a62821bf24e7dc6f329450", + "typeString": "literal_string \"Module has already been added\"" } ], - "id": 836, + "id": 851, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "1493:7:8", + "referencedDeclaration": 2658, + "src": "1604:7:8", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 842, + "id": 858, "isConstant": false, "isLValue": false, "isPure": false, @@ -5993,20 +6213,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1493:29:8", + "src": "1604:62:8", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 843, + "id": 859, "nodeType": "ExpressionStatement", - "src": "1493:29:8" + "src": "1604:62:8" }, { "expression": { "argumentTypes": null, - "id": 850, + "id": 866, "isConstant": false, "isLValue": false, "isPure": false, @@ -6015,28 +6235,28 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 844, + "id": 860, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 776, - "src": "1532:7:8", + "referencedDeclaration": 788, + "src": "1676:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 846, + "id": 862, "indexExpression": { "argumentTypes": null, - "id": 845, + "id": 861, "name": "module", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 817, - "src": "1540:6:8", + "referencedDeclaration": 831, + "src": "1684:6:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$750", + "typeIdentifier": "t_contract$_Module_$762", "typeString": "contract Module" } }, @@ -6045,7 +6265,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1532:15:8", + "src": "1676:15:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6057,26 +6277,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 847, + "id": 863, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 776, - "src": "1550:7:8", + "referencedDeclaration": 788, + "src": "1694:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 849, + "id": 865, "indexExpression": { "argumentTypes": null, - "id": 848, + "id": 864, "name": "SENTINEL_MODULES", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 772, - "src": "1558:16:8", + "referencedDeclaration": 784, + "src": "1702:16:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6087,26 +6307,26 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1550:25:8", + "src": "1694:25:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "1532:43:8", + "src": "1676:43:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 851, + "id": 867, "nodeType": "ExpressionStatement", - "src": "1532:43:8" + "src": "1676:43:8" }, { "expression": { "argumentTypes": null, - "id": 856, + "id": 872, "isConstant": false, "isLValue": false, "isPure": false, @@ -6115,26 +6335,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 852, + "id": 868, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 776, - "src": "1585:7:8", + "referencedDeclaration": 788, + "src": "1729:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 854, + "id": 870, "indexExpression": { "argumentTypes": null, - "id": 853, + "id": 869, "name": "SENTINEL_MODULES", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 772, - "src": "1593:16:8", + "referencedDeclaration": 784, + "src": "1737:16:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6145,7 +6365,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1585:25:8", + "src": "1729:25:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6155,83 +6375,83 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 855, + "id": 871, "name": "module", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 817, - "src": "1613:6:8", + "referencedDeclaration": 831, + "src": "1757:6:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$750", + "typeIdentifier": "t_contract$_Module_$762", "typeString": "contract Module" } }, - "src": "1585:34:8", + "src": "1729:34:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 857, + "id": 873, "nodeType": "ExpressionStatement", - "src": "1585:34:8" + "src": "1729:34:8" } ] }, "documentation": "@dev Allows to add a module to the whitelist.\n This can only be done via a Safe transaction.\n @param module Module to be whitelisted.", - "id": 859, + "id": 875, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 820, + "id": 834, "modifierName": { "argumentTypes": null, - "id": 819, + "id": 833, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1618, - "src": "1295:10:8", + "referencedDeclaration": 1653, + "src": "1371:10:8", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "1295:10:8" + "src": "1371:10:8" } ], "name": "enableModule", "nodeType": "FunctionDefinition", "parameters": { - "id": 818, + "id": 832, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 817, + "id": 831, "name": "module", "nodeType": "VariableDeclaration", - "scope": 859, - "src": "1257:13:8", + "scope": 875, + "src": "1333:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$750", + "typeIdentifier": "t_contract$_Module_$762", "typeString": "contract Module" }, "typeName": { "contractScope": null, - "id": 816, + "id": 830, "name": "Module", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 750, - "src": "1257:6:8", + "referencedDeclaration": 762, + "src": "1333:6:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$750", + "typeIdentifier": "t_contract$_Module_$762", "typeString": "contract Module" } }, @@ -6239,26 +6459,26 @@ "visibility": "internal" } ], - "src": "1256:15:8" + "src": "1332:15:8" }, "payable": false, "returnParameters": { - "id": 821, + "id": 835, "nodeType": "ParameterList", "parameters": [], - "src": "1310:0:8" + "src": "1386:0:8" }, - "scope": 1100, - "src": "1235:391:8", + "scope": 1118, + "src": "1311:459:8", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 892, + "id": 909, "nodeType": "Block", - "src": "1982:204:8", + "src": "2126:248:8", "statements": [ { "expression": { @@ -6270,7 +6490,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 875, + "id": 891, "isConstant": false, "isLValue": false, "isPure": false, @@ -6279,28 +6499,28 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 869, + "id": 885, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 776, - "src": "2064:7:8", + "referencedDeclaration": 788, + "src": "2208:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 871, + "id": 887, "indexExpression": { "argumentTypes": null, - "id": 870, + "id": 886, "name": "prevModule", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 861, - "src": "2072:10:8", + "referencedDeclaration": 877, + "src": "2216:10:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$750", + "typeIdentifier": "t_contract$_Module_$762", "typeString": "contract Module" } }, @@ -6309,7 +6529,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2064:19:8", + "src": "2208:19:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6322,14 +6542,14 @@ "arguments": [ { "argumentTypes": null, - "id": 873, + "id": 889, "name": "module", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 863, - "src": "2095:6:8", + "referencedDeclaration": 879, + "src": "2239:6:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$750", + "typeIdentifier": "t_contract$_Module_$762", "typeString": "contract Module" } } @@ -6337,24 +6557,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_Module_$750", + "typeIdentifier": "t_contract$_Module_$762", "typeString": "contract Module" } ], - "id": 872, + "id": 888, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2087:7:8", + "src": "2231:7:8", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 874, + "id": 890, "isConstant": false, "isLValue": false, "isPure": false, @@ -6362,17 +6582,35 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2087:15:8", + "src": "2231:15:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2064:38:8", + "src": "2208:38:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "496e76616c696420707265764d6f64756c652c206d6f64756c6520706169722070726f7669646564", + "id": 892, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2248:42:8", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_5caa315f9c5cf61be71c182eef2dc9ef7b6ce6b42c320d36694e1d23e09c287e", + "typeString": "literal_string \"Invalid prevModule, module pair provided\"" + }, + "value": "Invalid prevModule, module pair provided" } ], "expression": { @@ -6380,23 +6618,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_5caa315f9c5cf61be71c182eef2dc9ef7b6ce6b42c320d36694e1d23e09c287e", + "typeString": "literal_string \"Invalid prevModule, module pair provided\"" } ], - "id": 868, + "id": 884, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "2056:7:8", + "referencedDeclaration": 2658, + "src": "2200:7:8", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 876, + "id": 893, "isConstant": false, "isLValue": false, "isPure": false, @@ -6404,20 +6646,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2056:47:8", + "src": "2200:91:8", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 877, + "id": 894, "nodeType": "ExpressionStatement", - "src": "2056:47:8" + "src": "2200:91:8" }, { "expression": { "argumentTypes": null, - "id": 884, + "id": 901, "isConstant": false, "isLValue": false, "isPure": false, @@ -6426,28 +6668,28 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 878, + "id": 895, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 776, - "src": "2113:7:8", + "referencedDeclaration": 788, + "src": "2301:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 880, + "id": 897, "indexExpression": { "argumentTypes": null, - "id": 879, + "id": 896, "name": "prevModule", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 861, - "src": "2121:10:8", + "referencedDeclaration": 877, + "src": "2309:10:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$750", + "typeIdentifier": "t_contract$_Module_$762", "typeString": "contract Module" } }, @@ -6456,7 +6698,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "2113:19:8", + "src": "2301:19:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6468,28 +6710,28 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 881, + "id": 898, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 776, - "src": "2135:7:8", + "referencedDeclaration": 788, + "src": "2323:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 883, + "id": 900, "indexExpression": { "argumentTypes": null, - "id": 882, + "id": 899, "name": "module", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 863, - "src": "2143:6:8", + "referencedDeclaration": 879, + "src": "2331:6:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$750", + "typeIdentifier": "t_contract$_Module_$762", "typeString": "contract Module" } }, @@ -6498,26 +6740,26 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2135:15:8", + "src": "2323:15:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2113:37:8", + "src": "2301:37:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 885, + "id": 902, "nodeType": "ExpressionStatement", - "src": "2113:37:8" + "src": "2301:37:8" }, { "expression": { "argumentTypes": null, - "id": 890, + "id": 907, "isConstant": false, "isLValue": false, "isPure": false, @@ -6526,28 +6768,28 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 886, + "id": 903, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 776, - "src": "2160:7:8", + "referencedDeclaration": 788, + "src": "2348:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 888, + "id": 905, "indexExpression": { "argumentTypes": null, - "id": 887, + "id": 904, "name": "module", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 863, - "src": "2168:6:8", + "referencedDeclaration": 879, + "src": "2356:6:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$750", + "typeIdentifier": "t_contract$_Module_$762", "typeString": "contract Module" } }, @@ -6556,7 +6798,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "2160:15:8", + "src": "2348:15:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6567,14 +6809,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "30", - "id": 889, + "id": 906, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2178:1:8", + "src": "2366:1:8", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -6582,72 +6824,72 @@ }, "value": "0" }, - "src": "2160:19:8", + "src": "2348:19:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 891, + "id": 908, "nodeType": "ExpressionStatement", - "src": "2160:19:8" + "src": "2348:19:8" } ] }, "documentation": "@dev Allows to remove a module from the whitelist.\n This can only be done via a Safe transaction.\n @param prevModule Module that pointed to the module to be removed in the linked list\n @param module Module to be removed.", - "id": 893, + "id": 910, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 866, + "id": 882, "modifierName": { "argumentTypes": null, - "id": 865, + "id": 881, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1618, - "src": "1967:10:8", + "referencedDeclaration": 1653, + "src": "2111:10:8", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "1967:10:8" + "src": "2111:10:8" } ], "name": "disableModule", "nodeType": "FunctionDefinition", "parameters": { - "id": 864, + "id": 880, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 861, + "id": 877, "name": "prevModule", "nodeType": "VariableDeclaration", - "scope": 893, - "src": "1910:17:8", + "scope": 910, + "src": "2054:17:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$750", + "typeIdentifier": "t_contract$_Module_$762", "typeString": "contract Module" }, "typeName": { "contractScope": null, - "id": 860, + "id": 876, "name": "Module", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 750, - "src": "1910:6:8", + "referencedDeclaration": 762, + "src": "2054:6:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$750", + "typeIdentifier": "t_contract$_Module_$762", "typeString": "contract Module" } }, @@ -6656,26 +6898,26 @@ }, { "constant": false, - "id": 863, + "id": 879, "name": "module", "nodeType": "VariableDeclaration", - "scope": 893, - "src": "1929:13:8", + "scope": 910, + "src": "2073:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$750", + "typeIdentifier": "t_contract$_Module_$762", "typeString": "contract Module" }, "typeName": { "contractScope": null, - "id": 862, + "id": 878, "name": "Module", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 750, - "src": "1929:6:8", + "referencedDeclaration": 762, + "src": "2073:6:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$750", + "typeIdentifier": "t_contract$_Module_$762", "typeString": "contract Module" } }, @@ -6683,26 +6925,26 @@ "visibility": "internal" } ], - "src": "1909:34:8" + "src": "2053:34:8" }, "payable": false, "returnParameters": { - "id": 867, + "id": 883, "nodeType": "ParameterList", "parameters": [], - "src": "1982:0:8" + "src": "2126:0:8" }, - "scope": 1100, - "src": "1887:299:8", + "scope": 1118, + "src": "2031:343:8", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 926, + "id": 944, "nodeType": "Block", - "src": "2672:227:8", + "src": "2860:279:8", "statements": [ { "expression": { @@ -6714,7 +6956,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 912, + "id": 929, "isConstant": false, "isLValue": false, "isPure": false, @@ -6723,34 +6965,34 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 907, + "id": 924, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 776, - "src": "2739:7:8", + "referencedDeclaration": 788, + "src": "2927:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 910, + "id": 927, "indexExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 908, + "id": 925, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2598, - "src": "2747:3:8", + "referencedDeclaration": 2654, + "src": "2935:3:8", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 909, + "id": 926, "isConstant": false, "isLValue": false, "isPure": false, @@ -6758,7 +7000,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2747:10:8", + "src": "2935:10:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6769,7 +7011,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2739:19:8", + "src": "2927:19:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6780,14 +7022,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 911, + "id": 928, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2762:1:8", + "src": "2950:1:8", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -6795,11 +7037,29 @@ }, "value": "0" }, - "src": "2739:24:8", + "src": "2927:24:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d20616e20656e61626c6564206d6f64756c65", + "id": 930, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2953:50:8", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_cd36462b17a97c5a3df33333c859d5933a4fb7f5e1a0750f5def8eb51f3272e4", + "typeString": "literal_string \"Method can only be called from an enabled module\"" + }, + "value": "Method can only be called from an enabled module" } ], "expression": { @@ -6807,23 +7067,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_cd36462b17a97c5a3df33333c859d5933a4fb7f5e1a0750f5def8eb51f3272e4", + "typeString": "literal_string \"Method can only be called from an enabled module\"" } ], - "id": 906, + "id": 923, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "2731:7:8", + "referencedDeclaration": 2658, + "src": "2919:7:8", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 913, + "id": 931, "isConstant": false, "isLValue": false, "isPure": false, @@ -6831,32 +7095,32 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2731:33:8", + "src": "2919:85:8", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 914, + "id": 932, "nodeType": "ExpressionStatement", - "src": "2731:33:8" + "src": "2919:85:8" }, { "expression": { "argumentTypes": null, - "id": 924, + "id": 942, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 915, + "id": 933, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 904, - "src": "2836:7:8", + "referencedDeclaration": 921, + "src": "3076:7:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6869,12 +7133,12 @@ "arguments": [ { "argumentTypes": null, - "id": 917, + "id": 935, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 895, - "src": "2854:2:8", + "referencedDeclaration": 912, + "src": "3094:2:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6882,12 +7146,12 @@ }, { "argumentTypes": null, - "id": 918, + "id": 936, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 897, - "src": "2858:5:8", + "referencedDeclaration": 914, + "src": "3098:5:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6895,12 +7159,12 @@ }, { "argumentTypes": null, - "id": 919, + "id": 937, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 899, - "src": "2865:4:8", + "referencedDeclaration": 916, + "src": "3105:4:8", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -6908,12 +7172,12 @@ }, { "argumentTypes": null, - "id": 920, + "id": 938, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 901, - "src": "2871:9:8", + "referencedDeclaration": 918, + "src": "3111:9:8", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" @@ -6924,18 +7188,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 921, + "id": 939, "name": "gasleft", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2591, - "src": "2882:7:8", + "referencedDeclaration": 2647, + "src": "3122:7:8", "typeDescriptions": { "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, - "id": 922, + "id": 940, "isConstant": false, "isLValue": false, "isPure": false, @@ -6943,7 +7207,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2882:9:8", + "src": "3122:9:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6973,18 +7237,18 @@ "typeString": "uint256" } ], - "id": 916, + "id": 934, "name": "execute", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 989, - "src": "2846:7:8", + "referencedDeclaration": 1007, + "src": "3086:7:8", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256) returns (bool)" } }, - "id": 923, + "id": 941, "isConstant": false, "isLValue": false, "isPure": false, @@ -6992,26 +7256,26 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2846:46:8", + "src": "3086:46:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "2836:56:8", + "src": "3076:56:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 925, + "id": 943, "nodeType": "ExpressionStatement", - "src": "2836:56:8" + "src": "3076:56:8" } ] }, "documentation": "@dev Allows a Module to execute a Safe transaction without any further confirmations.\n @param to Destination address of module transaction.\n @param value Ether value of module transaction.\n @param data Data payload of module transaction.\n @param operation Operation type of module transaction.", - "id": 927, + "id": 945, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -7019,16 +7283,16 @@ "name": "execTransactionFromModule", "nodeType": "FunctionDefinition", "parameters": { - "id": 902, + "id": 919, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 895, + "id": 912, "name": "to", "nodeType": "VariableDeclaration", - "scope": 927, - "src": "2557:10:8", + "scope": 945, + "src": "2745:10:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7036,10 +7300,10 @@ "typeString": "address" }, "typeName": { - "id": 894, + "id": 911, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2557:7:8", + "src": "2745:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7050,11 +7314,11 @@ }, { "constant": false, - "id": 897, + "id": 914, "name": "value", "nodeType": "VariableDeclaration", - "scope": 927, - "src": "2569:13:8", + "scope": 945, + "src": "2757:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7062,10 +7326,10 @@ "typeString": "uint256" }, "typeName": { - "id": 896, + "id": 913, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2569:7:8", + "src": "2757:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7076,11 +7340,11 @@ }, { "constant": false, - "id": 899, + "id": 916, "name": "data", "nodeType": "VariableDeclaration", - "scope": 927, - "src": "2584:10:8", + "scope": 945, + "src": "2772:10:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7088,10 +7352,10 @@ "typeString": "bytes" }, "typeName": { - "id": 898, + "id": 915, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "2584:5:8", + "src": "2772:5:8", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -7102,11 +7366,11 @@ }, { "constant": false, - "id": 901, + "id": 918, "name": "operation", "nodeType": "VariableDeclaration", - "scope": 927, - "src": "2596:24:8", + "scope": 945, + "src": "2784:24:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7115,11 +7379,11 @@ }, "typeName": { "contractScope": null, - "id": 900, + "id": 917, "name": "Enum.Operation", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 29, - "src": "2596:14:8", + "src": "2784:14:8", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" @@ -7129,20 +7393,20 @@ "visibility": "internal" } ], - "src": "2556:65:8" + "src": "2744:65:8" }, "payable": false, "returnParameters": { - "id": 905, + "id": 922, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 904, + "id": 921, "name": "success", "nodeType": "VariableDeclaration", - "scope": 927, - "src": "2654:12:8", + "scope": 945, + "src": "2842:12:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7150,10 +7414,10 @@ "typeString": "bool" }, "typeName": { - "id": 903, + "id": 920, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "2654:4:8", + "src": "2842:4:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -7163,19 +7427,19 @@ "visibility": "internal" } ], - "src": "2653:14:8" + "src": "2841:14:8" }, - "scope": 1100, - "src": "2522:377:8", + "scope": 1118, + "src": "2710:429:8", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 988, + "id": 1006, "nodeType": "Block", - "src": "3054:399:8", + "src": "3294:399:8", "statements": [ { "condition": { @@ -7184,19 +7448,19 @@ "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, - "id": 946, + "id": 964, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 942, + "id": 960, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 935, - "src": "3068:9:8", + "referencedDeclaration": 953, + "src": "3308:9:8", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" @@ -7210,18 +7474,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 943, + "id": 961, "name": "Enum", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 30, - "src": "3081:4:8", + "src": "3321:4:8", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_Enum_$30_$", "typeString": "type(contract Enum)" } }, - "id": 944, + "id": 962, "isConstant": false, "isLValue": false, "isPure": false, @@ -7229,13 +7493,13 @@ "memberName": "Operation", "nodeType": "MemberAccess", "referencedDeclaration": 29, - "src": "3081:14:8", + "src": "3321:14:8", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_Operation_$29_$", "typeString": "type(enum Enum.Operation)" } }, - "id": 945, + "id": 963, "isConstant": false, "isLValue": false, "isPure": true, @@ -7243,13 +7507,13 @@ "memberName": "Call", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "3081:19:8", + "src": "3321:19:8", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, - "src": "3068:32:8", + "src": "3308:32:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -7262,19 +7526,19 @@ "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, - "id": 960, + "id": 978, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 956, + "id": 974, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 935, - "src": "3178:9:8", + "referencedDeclaration": 953, + "src": "3418:9:8", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" @@ -7288,18 +7552,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 957, + "id": 975, "name": "Enum", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 30, - "src": "3191:4:8", + "src": "3431:4:8", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_Enum_$30_$", "typeString": "type(contract Enum)" } }, - "id": 958, + "id": 976, "isConstant": false, "isLValue": false, "isPure": false, @@ -7307,13 +7571,13 @@ "memberName": "Operation", "nodeType": "MemberAccess", "referencedDeclaration": 29, - "src": "3191:14:8", + "src": "3431:14:8", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_Operation_$29_$", "typeString": "type(enum Enum.Operation)" } }, - "id": 959, + "id": 977, "isConstant": false, "isLValue": false, "isPure": true, @@ -7321,35 +7585,35 @@ "memberName": "DelegateCall", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "3191:27:8", + "src": "3431:27:8", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, - "src": "3178:40:8", + "src": "3418:40:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": { - "id": 985, + "id": 1003, "nodeType": "Block", - "src": "3293:154:8", + "src": "3533:154:8", "statements": [ { "assignments": [ - 970 + 988 ], "declarations": [ { "constant": false, - "id": 970, + "id": 988, "name": "newContract", "nodeType": "VariableDeclaration", - "scope": 989, - "src": "3307:19:8", + "scope": 1007, + "src": "3547:19:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7357,10 +7621,10 @@ "typeString": "address" }, "typeName": { - "id": 969, + "id": 987, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3307:7:8", + "src": "3547:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7370,18 +7634,18 @@ "visibility": "internal" } ], - "id": 974, + "id": 992, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 972, + "id": 990, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 933, - "src": "3343:4:8", + "referencedDeclaration": 951, + "src": "3583:4:8", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -7395,18 +7659,18 @@ "typeString": "bytes memory" } ], - "id": 971, + "id": 989, "name": "executeCreate", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1026, - "src": "3329:13:8", + "referencedDeclaration": 1044, + "src": "3569:13:8", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$_t_address_$", "typeString": "function (bytes memory) returns (address)" } }, - "id": 973, + "id": 991, "isConstant": false, "isLValue": false, "isPure": false, @@ -7414,31 +7678,31 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3329:19:8", + "src": "3569:19:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", - "src": "3307:41:8" + "src": "3547:41:8" }, { "expression": { "argumentTypes": null, - "id": 979, + "id": 997, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 975, + "id": 993, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 940, - "src": "3362:7:8", + "referencedDeclaration": 958, + "src": "3602:7:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -7452,19 +7716,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 978, + "id": 996, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 976, + "id": 994, "name": "newContract", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 970, - "src": "3372:11:8", + "referencedDeclaration": 988, + "src": "3612:11:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7475,14 +7739,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 977, + "id": 995, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3387:1:8", + "src": "3627:1:8", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -7490,21 +7754,21 @@ }, "value": "0" }, - "src": "3372:16:8", + "src": "3612:16:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "3362:26:8", + "src": "3602:26:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 980, + "id": 998, "nodeType": "ExpressionStatement", - "src": "3362:26:8" + "src": "3602:26:8" }, { "eventCall": { @@ -7512,12 +7776,12 @@ "arguments": [ { "argumentTypes": null, - "id": 982, + "id": 1000, "name": "newContract", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 970, - "src": "3424:11:8", + "referencedDeclaration": 988, + "src": "3664:11:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7531,18 +7795,18 @@ "typeString": "address" } ], - "id": 981, + "id": 999, "name": "ContractCreation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 761, - "src": "3407:16:8", + "referencedDeclaration": 773, + "src": "3647:16:8", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" } }, - "id": 983, + "id": 1001, "isConstant": false, "isLValue": false, "isPure": false, @@ -7550,37 +7814,37 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3407:29:8", + "src": "3647:29:8", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 984, + "id": 1002, "nodeType": "EmitStatement", - "src": "3402:34:8" + "src": "3642:34:8" } ] }, - "id": 986, + "id": 1004, "nodeType": "IfStatement", - "src": "3174:273:8", + "src": "3414:273:8", "trueBody": { "expression": { "argumentTypes": null, - "id": 967, + "id": 985, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 961, + "id": 979, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 940, - "src": "3232:7:8", + "referencedDeclaration": 958, + "src": "3472:7:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -7593,12 +7857,12 @@ "arguments": [ { "argumentTypes": null, - "id": 963, + "id": 981, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 929, - "src": "3262:2:8", + "referencedDeclaration": 947, + "src": "3502:2:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7606,12 +7870,12 @@ }, { "argumentTypes": null, - "id": 964, + "id": 982, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 933, - "src": "3266:4:8", + "referencedDeclaration": 951, + "src": "3506:4:8", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -7619,12 +7883,12 @@ }, { "argumentTypes": null, - "id": 965, + "id": 983, "name": "txGas", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 937, - "src": "3272:5:8", + "referencedDeclaration": 955, + "src": "3512:5:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7646,18 +7910,18 @@ "typeString": "uint256" } ], - "id": 962, + "id": 980, "name": "executeDelegateCall", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1017, - "src": "3242:19:8", + "referencedDeclaration": 1035, + "src": "3482:19:8", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,bytes memory,uint256) returns (bool)" } }, - "id": 966, + "id": 984, "isConstant": false, "isLValue": false, "isPure": false, @@ -7665,42 +7929,42 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3242:36:8", + "src": "3482:36:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "3232:46:8", + "src": "3472:46:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 968, + "id": 986, "nodeType": "ExpressionStatement", - "src": "3232:46:8" + "src": "3472:46:8" } }, - "id": 987, + "id": 1005, "nodeType": "IfStatement", - "src": "3064:383:8", + "src": "3304:383:8", "trueBody": { "expression": { "argumentTypes": null, - "id": 954, + "id": 972, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 947, + "id": 965, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 940, - "src": "3114:7:8", + "referencedDeclaration": 958, + "src": "3354:7:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -7713,12 +7977,12 @@ "arguments": [ { "argumentTypes": null, - "id": 949, + "id": 967, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 929, - "src": "3136:2:8", + "referencedDeclaration": 947, + "src": "3376:2:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7726,12 +7990,12 @@ }, { "argumentTypes": null, - "id": 950, + "id": 968, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 931, - "src": "3140:5:8", + "referencedDeclaration": 949, + "src": "3380:5:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7739,12 +8003,12 @@ }, { "argumentTypes": null, - "id": 951, + "id": 969, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 933, - "src": "3147:4:8", + "referencedDeclaration": 951, + "src": "3387:4:8", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -7752,12 +8016,12 @@ }, { "argumentTypes": null, - "id": 952, + "id": 970, "name": "txGas", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 937, - "src": "3153:5:8", + "referencedDeclaration": 955, + "src": "3393:5:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7783,18 +8047,18 @@ "typeString": "uint256" } ], - "id": 948, + "id": 966, "name": "executeCall", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1004, - "src": "3124:11:8", + "referencedDeclaration": 1022, + "src": "3364:11:8", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256,bytes memory,uint256) returns (bool)" } }, - "id": 953, + "id": 971, "isConstant": false, "isLValue": false, "isPure": false, @@ -7802,27 +8066,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3124:35:8", + "src": "3364:35:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "3114:45:8", + "src": "3354:45:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 955, + "id": 973, "nodeType": "ExpressionStatement", - "src": "3114:45:8" + "src": "3354:45:8" } } ] }, "documentation": null, - "id": 989, + "id": 1007, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -7830,16 +8094,16 @@ "name": "execute", "nodeType": "FunctionDefinition", "parameters": { - "id": 938, + "id": 956, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 929, + "id": 947, "name": "to", "nodeType": "VariableDeclaration", - "scope": 989, - "src": "2922:10:8", + "scope": 1007, + "src": "3162:10:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7847,10 +8111,10 @@ "typeString": "address" }, "typeName": { - "id": 928, + "id": 946, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2922:7:8", + "src": "3162:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7861,11 +8125,11 @@ }, { "constant": false, - "id": 931, + "id": 949, "name": "value", "nodeType": "VariableDeclaration", - "scope": 989, - "src": "2934:13:8", + "scope": 1007, + "src": "3174:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7873,10 +8137,10 @@ "typeString": "uint256" }, "typeName": { - "id": 930, + "id": 948, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2934:7:8", + "src": "3174:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7887,11 +8151,11 @@ }, { "constant": false, - "id": 933, + "id": 951, "name": "data", "nodeType": "VariableDeclaration", - "scope": 989, - "src": "2949:10:8", + "scope": 1007, + "src": "3189:10:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7899,10 +8163,10 @@ "typeString": "bytes" }, "typeName": { - "id": 932, + "id": 950, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "2949:5:8", + "src": "3189:5:8", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -7913,11 +8177,11 @@ }, { "constant": false, - "id": 935, + "id": 953, "name": "operation", "nodeType": "VariableDeclaration", - "scope": 989, - "src": "2961:24:8", + "scope": 1007, + "src": "3201:24:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7926,11 +8190,11 @@ }, "typeName": { "contractScope": null, - "id": 934, + "id": 952, "name": "Enum.Operation", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 29, - "src": "2961:14:8", + "src": "3201:14:8", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" @@ -7941,11 +8205,11 @@ }, { "constant": false, - "id": 937, + "id": 955, "name": "txGas", "nodeType": "VariableDeclaration", - "scope": 989, - "src": "2987:13:8", + "scope": 1007, + "src": "3227:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7953,10 +8217,10 @@ "typeString": "uint256" }, "typeName": { - "id": 936, + "id": 954, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2987:7:8", + "src": "3227:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7966,20 +8230,20 @@ "visibility": "internal" } ], - "src": "2921:80:8" + "src": "3161:80:8" }, "payable": false, "returnParameters": { - "id": 941, + "id": 959, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 940, + "id": 958, "name": "success", "nodeType": "VariableDeclaration", - "scope": 989, - "src": "3036:12:8", + "scope": 1007, + "src": "3276:12:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7987,10 +8251,10 @@ "typeString": "bool" }, "typeName": { - "id": 939, + "id": 957, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "3036:4:8", + "src": "3276:4:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -8000,86 +8264,86 @@ "visibility": "internal" } ], - "src": "3035:14:8" + "src": "3275:14:8" }, - "scope": 1100, - "src": "2905:548:8", + "scope": 1118, + "src": "3145:548:8", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 1003, + "id": 1021, "nodeType": "Block", - "src": "3586:182:8", + "src": "3826:182:8", "statements": [ { "externalReferences": [ { "data": { - "declaration": 995, + "declaration": 1013, "isOffset": false, "isSlot": false, - "src": "3740:4:8", + "src": "3980:4:8", "valueSize": 1 } }, { "data": { - "declaration": 995, + "declaration": 1013, "isOffset": false, "isSlot": false, - "src": "3721:4:8", + "src": "3961:4:8", "valueSize": 1 } }, { "success": { - "declaration": 1000, + "declaration": 1018, "isOffset": false, "isSlot": false, - "src": "3683:7:8", + "src": "3923:7:8", "valueSize": 1 } }, { "txGas": { - "declaration": 997, + "declaration": 1015, "isOffset": false, "isSlot": false, - "src": "3699:5:8", + "src": "3939:5:8", "valueSize": 1 } }, { "to": { - "declaration": 991, + "declaration": 1009, "isOffset": false, "isSlot": false, - "src": "3706:2:8", + "src": "3946:2:8", "valueSize": 1 } }, { "value": { - "declaration": 993, + "declaration": 1011, "isOffset": false, "isSlot": false, - "src": "3710:5:8", + "src": "3950:5:8", "valueSize": 1 } } ], - "id": 1002, + "id": 1020, "nodeType": "InlineAssembly", "operations": "{\n success := call(txGas, to, value, add(data, 0x20), mload(data), 0, 0)\n}", - "src": "3660:108:8" + "src": "3900:108:8" } ] }, "documentation": null, - "id": 1004, + "id": 1022, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -8087,16 +8351,16 @@ "name": "executeCall", "nodeType": "FunctionDefinition", "parameters": { - "id": 998, + "id": 1016, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 991, + "id": 1009, "name": "to", "nodeType": "VariableDeclaration", - "scope": 1004, - "src": "3480:10:8", + "scope": 1022, + "src": "3720:10:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8104,10 +8368,10 @@ "typeString": "address" }, "typeName": { - "id": 990, + "id": 1008, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3480:7:8", + "src": "3720:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8118,11 +8382,11 @@ }, { "constant": false, - "id": 993, + "id": 1011, "name": "value", "nodeType": "VariableDeclaration", - "scope": 1004, - "src": "3492:13:8", + "scope": 1022, + "src": "3732:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8130,10 +8394,10 @@ "typeString": "uint256" }, "typeName": { - "id": 992, + "id": 1010, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3492:7:8", + "src": "3732:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8144,11 +8408,11 @@ }, { "constant": false, - "id": 995, + "id": 1013, "name": "data", "nodeType": "VariableDeclaration", - "scope": 1004, - "src": "3507:10:8", + "scope": 1022, + "src": "3747:10:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8156,10 +8420,10 @@ "typeString": "bytes" }, "typeName": { - "id": 994, + "id": 1012, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "3507:5:8", + "src": "3747:5:8", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -8170,11 +8434,11 @@ }, { "constant": false, - "id": 997, + "id": 1015, "name": "txGas", "nodeType": "VariableDeclaration", - "scope": 1004, - "src": "3519:13:8", + "scope": 1022, + "src": "3759:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8182,10 +8446,10 @@ "typeString": "uint256" }, "typeName": { - "id": 996, + "id": 1014, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3519:7:8", + "src": "3759:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8195,20 +8459,20 @@ "visibility": "internal" } ], - "src": "3479:54:8" + "src": "3719:54:8" }, "payable": false, "returnParameters": { - "id": 1001, + "id": 1019, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1000, + "id": 1018, "name": "success", "nodeType": "VariableDeclaration", - "scope": 1004, - "src": "3568:12:8", + "scope": 1022, + "src": "3808:12:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8216,10 +8480,10 @@ "typeString": "bool" }, "typeName": { - "id": 999, + "id": 1017, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "3568:4:8", + "src": "3808:4:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -8229,77 +8493,77 @@ "visibility": "internal" } ], - "src": "3567:14:8" + "src": "3807:14:8" }, - "scope": 1100, - "src": "3459:309:8", + "scope": 1118, + "src": "3699:309:8", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 1016, + "id": 1034, "nodeType": "Block", - "src": "3894:183:8", + "src": "4134:183:8", "statements": [ { "externalReferences": [ { "data": { - "declaration": 1008, + "declaration": 1026, "isOffset": false, "isSlot": false, - "src": "4049:4:8", + "src": "4289:4:8", "valueSize": 1 } }, { "data": { - "declaration": 1008, + "declaration": 1026, "isOffset": false, "isSlot": false, - "src": "4030:4:8", + "src": "4270:4:8", "valueSize": 1 } }, { "success": { - "declaration": 1013, + "declaration": 1031, "isOffset": false, "isSlot": false, - "src": "3991:7:8", + "src": "4231:7:8", "valueSize": 1 } }, { "txGas": { - "declaration": 1010, + "declaration": 1028, "isOffset": false, "isSlot": false, - "src": "4015:5:8", + "src": "4255:5:8", "valueSize": 1 } }, { "to": { - "declaration": 1006, + "declaration": 1024, "isOffset": false, "isSlot": false, - "src": "4022:2:8", + "src": "4262:2:8", "valueSize": 1 } } ], - "id": 1015, + "id": 1033, "nodeType": "InlineAssembly", "operations": "{\n success := delegatecall(txGas, to, add(data, 0x20), mload(data), 0, 0)\n}", - "src": "3968:109:8" + "src": "4208:109:8" } ] }, "documentation": null, - "id": 1017, + "id": 1035, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -8307,16 +8571,16 @@ "name": "executeDelegateCall", "nodeType": "FunctionDefinition", "parameters": { - "id": 1011, + "id": 1029, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1006, + "id": 1024, "name": "to", "nodeType": "VariableDeclaration", - "scope": 1017, - "src": "3803:10:8", + "scope": 1035, + "src": "4043:10:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8324,10 +8588,10 @@ "typeString": "address" }, "typeName": { - "id": 1005, + "id": 1023, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3803:7:8", + "src": "4043:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8338,11 +8602,11 @@ }, { "constant": false, - "id": 1008, + "id": 1026, "name": "data", "nodeType": "VariableDeclaration", - "scope": 1017, - "src": "3815:10:8", + "scope": 1035, + "src": "4055:10:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8350,10 +8614,10 @@ "typeString": "bytes" }, "typeName": { - "id": 1007, + "id": 1025, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "3815:5:8", + "src": "4055:5:8", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -8364,11 +8628,11 @@ }, { "constant": false, - "id": 1010, + "id": 1028, "name": "txGas", "nodeType": "VariableDeclaration", - "scope": 1017, - "src": "3827:13:8", + "scope": 1035, + "src": "4067:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8376,10 +8640,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1009, + "id": 1027, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3827:7:8", + "src": "4067:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8389,20 +8653,20 @@ "visibility": "internal" } ], - "src": "3802:39:8" + "src": "4042:39:8" }, "payable": false, "returnParameters": { - "id": 1014, + "id": 1032, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1013, + "id": 1031, "name": "success", "nodeType": "VariableDeclaration", - "scope": 1017, - "src": "3876:12:8", + "scope": 1035, + "src": "4116:12:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8410,10 +8674,10 @@ "typeString": "bool" }, "typeName": { - "id": 1012, + "id": 1030, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "3876:4:8", + "src": "4116:4:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -8423,59 +8687,59 @@ "visibility": "internal" } ], - "src": "3875:14:8" + "src": "4115:14:8" }, - "scope": 1100, - "src": "3774:303:8", + "scope": 1118, + "src": "4014:303:8", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 1025, + "id": 1043, "nodeType": "Block", - "src": "4177:167:8", + "src": "4417:167:8", "statements": [ { "externalReferences": [ { "newContract": { - "declaration": 1022, + "declaration": 1040, "isOffset": false, "isSlot": false, - "src": "4274:11:8", + "src": "4514:11:8", "valueSize": 1 } }, { "data": { - "declaration": 1019, + "declaration": 1037, "isOffset": false, "isSlot": false, - "src": "4303:4:8", + "src": "4543:4:8", "valueSize": 1 } }, { "data": { - "declaration": 1019, + "declaration": 1037, "isOffset": false, "isSlot": false, - "src": "4322:4:8", + "src": "4562:4:8", "valueSize": 1 } } ], - "id": 1024, + "id": 1042, "nodeType": "InlineAssembly", "operations": "{\n newContract := create(0, add(data, 0x20), mload(data))\n}", - "src": "4251:93:8" + "src": "4491:93:8" } ] }, "documentation": null, - "id": 1026, + "id": 1044, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -8483,16 +8747,16 @@ "name": "executeCreate", "nodeType": "FunctionDefinition", "parameters": { - "id": 1020, + "id": 1038, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1019, + "id": 1037, "name": "data", "nodeType": "VariableDeclaration", - "scope": 1026, - "src": "4106:10:8", + "scope": 1044, + "src": "4346:10:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8500,10 +8764,10 @@ "typeString": "bytes" }, "typeName": { - "id": 1018, + "id": 1036, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "4106:5:8", + "src": "4346:5:8", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -8513,20 +8777,20 @@ "visibility": "internal" } ], - "src": "4105:12:8" + "src": "4345:12:8" }, "payable": false, "returnParameters": { - "id": 1023, + "id": 1041, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1022, + "id": 1040, "name": "newContract", "nodeType": "VariableDeclaration", - "scope": 1026, - "src": "4152:19:8", + "scope": 1044, + "src": "4392:19:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8534,10 +8798,10 @@ "typeString": "address" }, "typeName": { - "id": 1021, + "id": 1039, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4152:7:8", + "src": "4392:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8547,32 +8811,32 @@ "visibility": "internal" } ], - "src": "4151:21:8" + "src": "4391:21:8" }, - "scope": 1100, - "src": "4083:261:8", + "scope": 1118, + "src": "4323:261:8", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 1098, + "id": 1116, "nodeType": "Block", - "src": "4505:656:8", + "src": "4745:656:8", "statements": [ { "assignments": [ - 1033 + 1051 ], "declarations": [ { "constant": false, - "id": 1033, + "id": 1051, "name": "moduleCount", "nodeType": "VariableDeclaration", - "scope": 1099, - "src": "4549:19:8", + "scope": 1117, + "src": "4789:19:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8580,10 +8844,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1032, + "id": 1050, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4549:7:8", + "src": "4789:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8593,18 +8857,18 @@ "visibility": "internal" } ], - "id": 1035, + "id": 1053, "initialValue": { "argumentTypes": null, "hexValue": "30", - "id": 1034, + "id": 1052, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4571:1:8", + "src": "4811:1:8", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -8613,20 +8877,20 @@ "value": "0" }, "nodeType": "VariableDeclarationStatement", - "src": "4549:23:8" + "src": "4789:23:8" }, { "assignments": [ - 1037 + 1055 ], "declarations": [ { "constant": false, - "id": 1037, + "id": 1055, "name": "currentModule", "nodeType": "VariableDeclaration", - "scope": 1099, - "src": "4582:21:8", + "scope": 1117, + "src": "4822:21:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8634,10 +8898,10 @@ "typeString": "address" }, "typeName": { - "id": 1036, + "id": 1054, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4582:7:8", + "src": "4822:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8647,31 +8911,31 @@ "visibility": "internal" } ], - "id": 1041, + "id": 1059, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1038, + "id": 1056, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 776, - "src": "4606:7:8", + "referencedDeclaration": 788, + "src": "4846:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1040, + "id": 1058, "indexExpression": { "argumentTypes": null, - "id": 1039, + "id": 1057, "name": "SENTINEL_MODULES", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 772, - "src": "4614:16:8", + "referencedDeclaration": 784, + "src": "4854:16:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8682,37 +8946,37 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4606:25:8", + "src": "4846:25:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", - "src": "4582:49:8" + "src": "4822:49:8" }, { "body": { - "id": 1054, + "id": 1072, "nodeType": "Block", - "src": "4682:91:8", + "src": "4922:91:8", "statements": [ { "expression": { "argumentTypes": null, - "id": 1049, + "id": 1067, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1045, + "id": 1063, "name": "currentModule", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1037, - "src": "4696:13:8", + "referencedDeclaration": 1055, + "src": "4936:13:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8724,26 +8988,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1046, + "id": 1064, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 776, - "src": "4712:7:8", + "referencedDeclaration": 788, + "src": "4952:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1048, + "id": 1066, "indexExpression": { "argumentTypes": null, - "id": 1047, + "id": 1065, "name": "currentModule", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1037, - "src": "4720:13:8", + "referencedDeclaration": 1055, + "src": "4960:13:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8754,26 +9018,26 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4712:22:8", + "src": "4952:22:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "4696:38:8", + "src": "4936:38:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1050, + "id": 1068, "nodeType": "ExpressionStatement", - "src": "4696:38:8" + "src": "4936:38:8" }, { "expression": { "argumentTypes": null, - "id": 1052, + "id": 1070, "isConstant": false, "isLValue": false, "isPure": false, @@ -8781,15 +9045,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "4748:14:8", + "src": "4988:14:8", "subExpression": { "argumentTypes": null, - "id": 1051, + "id": 1069, "name": "moduleCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1033, - "src": "4748:11:8", + "referencedDeclaration": 1051, + "src": "4988:11:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8800,9 +9064,9 @@ "typeString": "uint256" } }, - "id": 1053, + "id": 1071, "nodeType": "ExpressionStatement", - "src": "4748:14:8" + "src": "4988:14:8" } ] }, @@ -8812,19 +9076,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1044, + "id": 1062, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1042, + "id": 1060, "name": "currentModule", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1037, - "src": "4647:13:8", + "referencedDeclaration": 1055, + "src": "4887:13:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8834,39 +9098,39 @@ "operator": "!=", "rightExpression": { "argumentTypes": null, - "id": 1043, + "id": 1061, "name": "SENTINEL_MODULES", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 772, - "src": "4664:16:8", + "referencedDeclaration": 784, + "src": "4904:16:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "4647:33:8", + "src": "4887:33:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 1055, + "id": 1073, "nodeType": "WhileStatement", - "src": "4641:132:8" + "src": "4881:132:8" }, { "assignments": [ - 1059 + 1077 ], "declarations": [ { "constant": false, - "id": 1059, + "id": 1077, "name": "array", "nodeType": "VariableDeclaration", - "scope": 1099, - "src": "4782:22:8", + "scope": 1117, + "src": "5022:22:8", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -8875,19 +9139,19 @@ }, "typeName": { "baseType": { - "id": 1057, + "id": 1075, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4782:7:8", + "src": "5022:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1058, + "id": 1076, "length": null, "nodeType": "ArrayTypeName", - "src": "4782:9:8", + "src": "5022:9:8", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" @@ -8897,18 +9161,18 @@ "visibility": "internal" } ], - "id": 1065, + "id": 1083, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 1063, + "id": 1081, "name": "moduleCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1033, - "src": "4821:11:8", + "referencedDeclaration": 1051, + "src": "5061:11:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8922,39 +9186,39 @@ "typeString": "uint256" } ], - "id": 1062, + "id": 1080, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "NewExpression", - "src": "4807:13:8", + "src": "5047:13:8", "typeDescriptions": { "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_$", "typeString": "function (uint256) pure returns (address[] memory)" }, "typeName": { "baseType": { - "id": 1060, + "id": 1078, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4811:7:8", + "src": "5051:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1061, + "id": 1079, "length": null, "nodeType": "ArrayTypeName", - "src": "4811:9:8", + "src": "5051:9:8", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" } } }, - "id": 1064, + "id": 1082, "isConstant": false, "isLValue": false, "isPure": false, @@ -8962,31 +9226,31 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4807:26:8", + "src": "5047:26:8", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory", "typeString": "address[] memory" } }, "nodeType": "VariableDeclarationStatement", - "src": "4782:51:8" + "src": "5022:51:8" }, { "expression": { "argumentTypes": null, - "id": 1068, + "id": 1086, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1066, + "id": 1084, "name": "moduleCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1033, - "src": "4877:11:8", + "referencedDeclaration": 1051, + "src": "5117:11:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8997,14 +9261,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "30", - "id": 1067, + "id": 1085, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4891:1:8", + "src": "5131:1:8", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -9012,32 +9276,32 @@ }, "value": "0" }, - "src": "4877:15:8", + "src": "5117:15:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 1069, + "id": 1087, "nodeType": "ExpressionStatement", - "src": "4877:15:8" + "src": "5117:15:8" }, { "expression": { "argumentTypes": null, - "id": 1074, + "id": 1092, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1070, + "id": 1088, "name": "currentModule", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1037, - "src": "4902:13:8", + "referencedDeclaration": 1055, + "src": "5142:13:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9049,26 +9313,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1071, + "id": 1089, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 776, - "src": "4918:7:8", + "referencedDeclaration": 788, + "src": "5158:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1073, + "id": 1091, "indexExpression": { "argumentTypes": null, - "id": 1072, + "id": 1090, "name": "SENTINEL_MODULES", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 772, - "src": "4926:16:8", + "referencedDeclaration": 784, + "src": "5166:16:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9079,32 +9343,32 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4918:25:8", + "src": "5158:25:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "4902:41:8", + "src": "5142:41:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1075, + "id": 1093, "nodeType": "ExpressionStatement", - "src": "4902:41:8" + "src": "5142:41:8" }, { "body": { - "id": 1094, + "id": 1112, "nodeType": "Block", - "src": "4994:139:8", + "src": "5234:139:8", "statements": [ { "expression": { "argumentTypes": null, - "id": 1083, + "id": 1101, "isConstant": false, "isLValue": false, "isPure": false, @@ -9113,26 +9377,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1079, + "id": 1097, "name": "array", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1059, - "src": "5008:5:8", + "referencedDeclaration": 1077, + "src": "5248:5:8", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 1081, + "id": 1099, "indexExpression": { "argumentTypes": null, - "id": 1080, + "id": 1098, "name": "moduleCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1033, - "src": "5014:11:8", + "referencedDeclaration": 1051, + "src": "5254:11:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9143,7 +9407,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "5008:18:8", + "src": "5248:18:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9153,43 +9417,43 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1082, + "id": 1100, "name": "currentModule", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1037, - "src": "5029:13:8", + "referencedDeclaration": 1055, + "src": "5269:13:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "5008:34:8", + "src": "5248:34:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1084, + "id": 1102, "nodeType": "ExpressionStatement", - "src": "5008:34:8" + "src": "5248:34:8" }, { "expression": { "argumentTypes": null, - "id": 1089, + "id": 1107, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1085, + "id": 1103, "name": "currentModule", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1037, - "src": "5056:13:8", + "referencedDeclaration": 1055, + "src": "5296:13:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9201,26 +9465,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1086, + "id": 1104, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 776, - "src": "5072:7:8", + "referencedDeclaration": 788, + "src": "5312:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1088, + "id": 1106, "indexExpression": { "argumentTypes": null, - "id": 1087, + "id": 1105, "name": "currentModule", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1037, - "src": "5080:13:8", + "referencedDeclaration": 1055, + "src": "5320:13:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9231,26 +9495,26 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "5072:22:8", + "src": "5312:22:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "5056:38:8", + "src": "5296:38:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1090, + "id": 1108, "nodeType": "ExpressionStatement", - "src": "5056:38:8" + "src": "5296:38:8" }, { "expression": { "argumentTypes": null, - "id": 1092, + "id": 1110, "isConstant": false, "isLValue": false, "isPure": false, @@ -9258,15 +9522,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "5108:14:8", + "src": "5348:14:8", "subExpression": { "argumentTypes": null, - "id": 1091, + "id": 1109, "name": "moduleCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1033, - "src": "5108:11:8", + "referencedDeclaration": 1051, + "src": "5348:11:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9277,9 +9541,9 @@ "typeString": "uint256" } }, - "id": 1093, + "id": 1111, "nodeType": "ExpressionStatement", - "src": "5108:14:8" + "src": "5348:14:8" } ] }, @@ -9289,19 +9553,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1078, + "id": 1096, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1076, + "id": 1094, "name": "currentModule", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1037, - "src": "4959:13:8", + "referencedDeclaration": 1055, + "src": "5199:13:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9311,50 +9575,50 @@ "operator": "!=", "rightExpression": { "argumentTypes": null, - "id": 1077, + "id": 1095, "name": "SENTINEL_MODULES", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 772, - "src": "4976:16:8", + "referencedDeclaration": 784, + "src": "5216:16:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "4959:33:8", + "src": "5199:33:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 1095, + "id": 1113, "nodeType": "WhileStatement", - "src": "4953:180:8" + "src": "5193:180:8" }, { "expression": { "argumentTypes": null, - "id": 1096, + "id": 1114, "name": "array", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1059, - "src": "5149:5:8", + "referencedDeclaration": 1077, + "src": "5389:5:8", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "functionReturnParameters": 1031, - "id": 1097, + "functionReturnParameters": 1049, + "id": 1115, "nodeType": "Return", - "src": "5142:12:8" + "src": "5382:12:8" } ] }, "documentation": "@dev Returns array of modules.\n @return Array of modules.", - "id": 1099, + "id": 1117, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -9362,23 +9626,23 @@ "name": "getModules", "nodeType": "FunctionDefinition", "parameters": { - "id": 1027, + "id": 1045, "nodeType": "ParameterList", "parameters": [], - "src": "4442:2:8" + "src": "4682:2:8" }, "payable": false, "returnParameters": { - "id": 1031, + "id": 1049, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1030, + "id": 1048, "name": "", "nodeType": "VariableDeclaration", - "scope": 1099, - "src": "4490:9:8", + "scope": 1117, + "src": "4730:9:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9387,19 +9651,19 @@ }, "typeName": { "baseType": { - "id": 1028, + "id": 1046, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4490:7:8", + "src": "4730:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1029, + "id": 1047, "length": null, "nodeType": "ArrayTypeName", - "src": "4490:9:8", + "src": "4730:9:8", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" @@ -9409,20 +9673,20 @@ "visibility": "internal" } ], - "src": "4489:11:8" + "src": "4729:11:8" }, - "scope": 1100, - "src": "4423:738:8", + "scope": 1118, + "src": "4663:738:8", "stateMutability": "view", "superFunction": null, "visibility": "public" } ], - "scope": 1101, - "src": "303:4860:8" + "scope": 1119, + "src": "303:5100:8" } ], - "src": "0:5164:8" + "src": "0:5404:8" }, "compiler": { "name": "solc", @@ -9430,5 +9694,5 @@ }, "networks": {}, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-27T11:12:45.579Z" + "updatedAt": "2018-05-28T05:59:52.702Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/MultiSend.json b/safe-contracts/build/contracts/MultiSend.json index 7e13b411..6dae7109 100644 --- a/safe-contracts/build/contracts/MultiSend.json +++ b/safe-contracts/build/contracts/MultiSend.json @@ -26,14 +26,14 @@ "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/libraries/MultiSend.sol", "exportedSymbols": { "MultiSend": [ - 1740 + 1775 ] }, - "id": 1741, + "id": 1776, "nodeType": "SourceUnit", "nodes": [ { - "id": 1732, + "id": 1767, "literals": [ "solidity", "0.4", @@ -48,16 +48,16 @@ "contractKind": "contract", "documentation": "@title Multi Send - Allows to batch multiple transactions into one.\n @author Nick Dodson - \n @author Gonçalo Sá - \n @author Stefan George - ", "fullyImplemented": true, - "id": 1740, + "id": 1775, "linearizedBaseContracts": [ - 1740 + 1775 ], "name": "MultiSend", "nodeType": "ContractDefinition", "nodes": [ { "body": { - "id": 1738, + "id": 1773, "nodeType": "Block", "src": "651:673:16", "statements": [ @@ -65,7 +65,7 @@ "externalReferences": [ { "transactions": { - "declaration": 1734, + "declaration": 1769, "isOffset": false, "isSlot": false, "src": "768:12:16", @@ -74,7 +74,7 @@ }, { "transactions": { - "declaration": 1734, + "declaration": 1769, "isOffset": false, "isSlot": false, "src": "884:12:16", @@ -83,7 +83,7 @@ }, { "transactions": { - "declaration": 1734, + "declaration": 1769, "isOffset": false, "isSlot": false, "src": "941:12:16", @@ -92,7 +92,7 @@ }, { "transactions": { - "declaration": 1734, + "declaration": 1769, "isOffset": false, "isSlot": false, "src": "1014:12:16", @@ -101,7 +101,7 @@ }, { "transactions": { - "declaration": 1734, + "declaration": 1769, "isOffset": false, "isSlot": false, "src": "1075:12:16", @@ -109,7 +109,7 @@ } } ], - "id": 1737, + "id": 1772, "nodeType": "InlineAssembly", "operations": "{\n let length := mload(transactions)\n let i := 0x20\n for {\n }\n lt(i, length)\n {\n }\n {\n let to := mload(add(transactions, i))\n let value := mload(add(transactions, add(i, 0x20)))\n let dataLength := mload(add(transactions, add(i, 0x60)))\n let data := add(transactions, add(i, 0x80))\n switch call(gas(), to, value, data, dataLength, 0, 0)\n case 0 {\n revert(0, 0)\n }\n i := add(i, add(0x80, mul(div(add(dataLength, 0x1f), 0x20), 0x20)))\n }\n}", "src": "725:599:16" @@ -117,7 +117,7 @@ ] }, "documentation": "@dev Sends multiple transactions and reverts all if one fails.\n @param transactions Encoded transactions. Each transaction is encoded as\n a tuple(address,uint256,bytes). The bytes of all\n encoded transactions are concatenated to form the input.", - "id": 1739, + "id": 1774, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -125,15 +125,15 @@ "name": "multiSend", "nodeType": "FunctionDefinition", "parameters": { - "id": 1735, + "id": 1770, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1734, + "id": 1769, "name": "transactions", "nodeType": "VariableDeclaration", - "scope": 1739, + "scope": 1774, "src": "612:18:16", "stateVariable": false, "storageLocation": "default", @@ -142,7 +142,7 @@ "typeString": "bytes" }, "typeName": { - "id": 1733, + "id": 1768, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "612:5:16", @@ -159,19 +159,19 @@ }, "payable": false, "returnParameters": { - "id": 1736, + "id": 1771, "nodeType": "ParameterList", "parameters": [], "src": "651:0:16" }, - "scope": 1740, + "scope": 1775, "src": "593:731:16", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" } ], - "scope": 1741, + "scope": 1776, "src": "253:1073:16" } ], @@ -181,14 +181,14 @@ "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/libraries/MultiSend.sol", "exportedSymbols": { "MultiSend": [ - 1740 + 1775 ] }, - "id": 1741, + "id": 1776, "nodeType": "SourceUnit", "nodes": [ { - "id": 1732, + "id": 1767, "literals": [ "solidity", "0.4", @@ -203,16 +203,16 @@ "contractKind": "contract", "documentation": "@title Multi Send - Allows to batch multiple transactions into one.\n @author Nick Dodson - \n @author Gonçalo Sá - \n @author Stefan George - ", "fullyImplemented": true, - "id": 1740, + "id": 1775, "linearizedBaseContracts": [ - 1740 + 1775 ], "name": "MultiSend", "nodeType": "ContractDefinition", "nodes": [ { "body": { - "id": 1738, + "id": 1773, "nodeType": "Block", "src": "651:673:16", "statements": [ @@ -220,7 +220,7 @@ "externalReferences": [ { "transactions": { - "declaration": 1734, + "declaration": 1769, "isOffset": false, "isSlot": false, "src": "768:12:16", @@ -229,7 +229,7 @@ }, { "transactions": { - "declaration": 1734, + "declaration": 1769, "isOffset": false, "isSlot": false, "src": "884:12:16", @@ -238,7 +238,7 @@ }, { "transactions": { - "declaration": 1734, + "declaration": 1769, "isOffset": false, "isSlot": false, "src": "941:12:16", @@ -247,7 +247,7 @@ }, { "transactions": { - "declaration": 1734, + "declaration": 1769, "isOffset": false, "isSlot": false, "src": "1014:12:16", @@ -256,7 +256,7 @@ }, { "transactions": { - "declaration": 1734, + "declaration": 1769, "isOffset": false, "isSlot": false, "src": "1075:12:16", @@ -264,7 +264,7 @@ } } ], - "id": 1737, + "id": 1772, "nodeType": "InlineAssembly", "operations": "{\n let length := mload(transactions)\n let i := 0x20\n for {\n }\n lt(i, length)\n {\n }\n {\n let to := mload(add(transactions, i))\n let value := mload(add(transactions, add(i, 0x20)))\n let dataLength := mload(add(transactions, add(i, 0x60)))\n let data := add(transactions, add(i, 0x80))\n switch call(gas(), to, value, data, dataLength, 0, 0)\n case 0 {\n revert(0, 0)\n }\n i := add(i, add(0x80, mul(div(add(dataLength, 0x1f), 0x20), 0x20)))\n }\n}", "src": "725:599:16" @@ -272,7 +272,7 @@ ] }, "documentation": "@dev Sends multiple transactions and reverts all if one fails.\n @param transactions Encoded transactions. Each transaction is encoded as\n a tuple(address,uint256,bytes). The bytes of all\n encoded transactions are concatenated to form the input.", - "id": 1739, + "id": 1774, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -280,15 +280,15 @@ "name": "multiSend", "nodeType": "FunctionDefinition", "parameters": { - "id": 1735, + "id": 1770, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1734, + "id": 1769, "name": "transactions", "nodeType": "VariableDeclaration", - "scope": 1739, + "scope": 1774, "src": "612:18:16", "stateVariable": false, "storageLocation": "default", @@ -297,7 +297,7 @@ "typeString": "bytes" }, "typeName": { - "id": 1733, + "id": 1768, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "612:5:16", @@ -314,19 +314,19 @@ }, "payable": false, "returnParameters": { - "id": 1736, + "id": 1771, "nodeType": "ParameterList", "parameters": [], "src": "651:0:16" }, - "scope": 1740, + "scope": 1775, "src": "593:731:16", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" } ], - "scope": 1741, + "scope": 1776, "src": "253:1073:16" } ], @@ -340,22 +340,16 @@ "4": { "events": {}, "links": {}, - "address": "0x46ba31fce67f6e0cfdf767b2b24c8cfa56015334", - "transactionHash": "0x4d190832f77421880276d21d750264b5a465b1c38d09d44667ce6617a8dd6a2f" - }, - "1527316019334": { - "events": {}, - "links": {}, - "address": "0xb0945dc5aa1de7306033fe26a1bba93292ccf9b8", - "transactionHash": "0x09e43d5e80b83dd623f34456dac3db1c4a8610a5734a9b8bb210e0e97dfab47e" + "address": "0xa95bcb648df34c679b070cd7f5992ec4aa4e5275", + "transactionHash": "0x7260ac1ca4cdf29c28bc941de22f64e7dd24bc928841bebee1f2b4d5d84037c8" }, "1527420696956": { "events": {}, "links": {}, - "address": "0xf76104e6bd2085f236594bf61a3d818aa6eb6d8a", - "transactionHash": "0xd044f1662e339061a8cabf2b06ac94a9f86fcccf3f5d80ebd1bea2a7542d4021" + "address": "0xdcf4ea4891d890a882fbeb6bab32192bac5b54e7", + "transactionHash": "0x172dfa14dab8d0f5c74e8a33b1bcecd25b4dd2a8a71a9e361889a5944d4c5b86" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-27T11:31:46.257Z" + "updatedAt": "2018-05-28T06:08:59.482Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/OwnerManager.json b/safe-contracts/build/contracts/OwnerManager.json index e929f63a..dca7815b 100644 --- a/safe-contracts/build/contracts/OwnerManager.json +++ b/safe-contracts/build/contracts/OwnerManager.json @@ -139,24 +139,24 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50610efa806100206000396000f30060806040526004361061008e576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632f54bf6e1461009357806386040aa9146100ee5780638cff63551461015e578063a0e67e2b146101b5578063b7f3358d14610221578063b91a667f14610251578063e318b52b146102a1578063e75235b814610324575b600080fd5b34801561009f57600080fd5b506100d4600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610355565b604051808215151515815260200191505060405180910390f35b3480156100fa57600080fd5b5061015c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff1690602001909291905050506103d6565b005b34801561016a57600080fd5b50610173610657565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101c157600080fd5b506101ca61065c565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561020d5780820151818401526020810190506101f2565b505050509050019250505060405180910390f35b34801561022d57600080fd5b5061024f600480360381019080803560ff1690602001909291905050506107f5565b005b34801561025d57600080fd5b5061029f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050610874565b005b3480156102ad57600080fd5b50610322600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b28565b005b34801561033057600080fd5b50610339610eb7565b604051808260ff1660ff16815260200191505060405180910390f35b6000806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561041057600080fd5b8060ff1660018054031015151561042657600080fd5b8173ffffffffffffffffffffffffffffffffffffffff166000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156104be57600080fd5b6000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160008154809291906001900391905055508060ff16600260009054906101000a900460ff1660ff1614151561065257610651816107f5565b5b505050565b600181565b6060806000806001546040519080825280602002602001820160405280156106935781602001602082028038833980820191505090505b50925060009150600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415156107ec5780838381518110151561074257fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081806001019250506106fd565b82935050505090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561082f57600080fd5b6001548160ff161115151561084357600080fd5b60018160ff161015151561085657600080fd5b80600260006101000a81548160ff021916908360ff16021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156108ae57600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff16141580156109025750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b151561090d57600080fd5b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561099057600080fd5b600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600081548092919060010191905055508060ff16600260009054906101000a900460ff1660ff16141515610b2457610b23816107f5565b5b5050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610b6257600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614158015610bb65750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1515610bc157600080fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610c4457600080fd5b8173ffffffffffffffffffffffffffffffffffffffff166000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610cdc57600080fd5b6000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b6000600260009054906101000a900460ff169050905600a165627a7a723058207162ce7887c437c5aff253c6ee66707c5dd406c4fefdd37babe3c37d937512df0029", - "deployedBytecode": "0x60806040526004361061008e576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632f54bf6e1461009357806386040aa9146100ee5780638cff63551461015e578063a0e67e2b146101b5578063b7f3358d14610221578063b91a667f14610251578063e318b52b146102a1578063e75235b814610324575b600080fd5b34801561009f57600080fd5b506100d4600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610355565b604051808215151515815260200191505060405180910390f35b3480156100fa57600080fd5b5061015c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff1690602001909291905050506103d6565b005b34801561016a57600080fd5b50610173610657565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101c157600080fd5b506101ca61065c565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561020d5780820151818401526020810190506101f2565b505050509050019250505060405180910390f35b34801561022d57600080fd5b5061024f600480360381019080803560ff1690602001909291905050506107f5565b005b34801561025d57600080fd5b5061029f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050610874565b005b3480156102ad57600080fd5b50610322600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b28565b005b34801561033057600080fd5b50610339610eb7565b604051808260ff1660ff16815260200191505060405180910390f35b6000806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561041057600080fd5b8060ff1660018054031015151561042657600080fd5b8173ffffffffffffffffffffffffffffffffffffffff166000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156104be57600080fd5b6000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160008154809291906001900391905055508060ff16600260009054906101000a900460ff1660ff1614151561065257610651816107f5565b5b505050565b600181565b6060806000806001546040519080825280602002602001820160405280156106935781602001602082028038833980820191505090505b50925060009150600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415156107ec5780838381518110151561074257fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081806001019250506106fd565b82935050505090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561082f57600080fd5b6001548160ff161115151561084357600080fd5b60018160ff161015151561085657600080fd5b80600260006101000a81548160ff021916908360ff16021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156108ae57600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff16141580156109025750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b151561090d57600080fd5b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561099057600080fd5b600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600081548092919060010191905055508060ff16600260009054906101000a900460ff1660ff16141515610b2457610b23816107f5565b5b5050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610b6257600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614158015610bb65750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1515610bc157600080fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610c4457600080fd5b8173ffffffffffffffffffffffffffffffffffffffff166000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610cdc57600080fd5b6000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b6000600260009054906101000a900460ff169050905600a165627a7a723058207162ce7887c437c5aff253c6ee66707c5dd406c4fefdd37babe3c37d937512df0029", - "sourceMap": "240:5272:9:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;240:5272:9;;;;;;;", - "deployedSourceMap": "240:5272:9:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4841:129;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4841:129:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2776:573;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2776:573:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;287:54;;8:9:-1;5:2;;;30:1;27;20:12;5:2;287:54:9;;;;;;;;;;;;;;;;;;;;;;;;;;;5052:458;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5052:458:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;5052:458:9;;;;;;;;;;;;;;;;;4398:318;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4398:318:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;1906:528;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1906:528:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3683:526;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3683:526:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4722:113;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4722:113:9;;;;;;;;;;;;;;;;;;;;;;;;;;;4841:129;4918:4;4962:1;4945:6;:13;4952:5;4945:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;;4938:25;;4841:129;;;:::o;2776:573::-;244:4:13;222:27;;:10;:27;;;214:36;;;;;;;;3000:10:9;2982:28;;2995:1;2982:10;;:14;:28;;2974:37;;;;;;;;3112:5;3091:26;;:6;:17;3098:9;3091:17;;;;;;;;;;;;;;;;;;;;;;;;;:26;;;3083:35;;;;;;;;3148:6;:13;3155:5;3148:13;;;;;;;;;;;;;;;;;;;;;;;;;3128:6;:17;3135:9;3128:17;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;3187:1;3171:6;:13;3178:5;3171:13;;;;;;;;;;;;;;;;:17;;;;;;;;;;;;;;;;;;3198:10;;:12;;;;;;;;;;;;;;3291:10;3278:23;;:9;;;;;;;;;;;:23;;;;3274:68;;;3315:27;3331:10;3315:15;:27::i;:::-;3274:68;2776:573;;;:::o;287:54::-;337:3;287:54;:::o;5052:458::-;5118:9;5143:22;5237:13;5264:20;5182:10;;5168:25;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;5168:25:9;;;;5143:50;;5253:1;5237:17;;5287:6;:23;337:3;5287:23;;;;;;;;;;;;;;;;;;;;;;;;;5264:46;;5320:162;337:3;5326:31;;:12;:31;;;;5320:162;;;5388:12;5373:5;5379;5373:12;;;;;;;;;;;;;;;;;:27;;;;;;;;;;;5429:6;:20;5436:12;5429:20;;;;;;;;;;;;;;;;;;;;;;;;;5414:35;;5463:8;;;;;;;5320:162;;;5498:5;5491:12;;5052:458;;;;:::o;4398:318::-;244:4:13;222:27;;:10;:27;;;214:36;;;;;;;;4580:10:9;;4566;:24;;;;4558:33;;;;;;;;4675:1;4661:10;:15;;;;4653:24;;;;;;;;4699:10;4687:9;;:22;;;;;;;;;;;;;;;;;;4398:318;:::o;1906:528::-;244:4:13;222:27;;:10;:27;;;214:36;;;;;;;;2076:1:9;2067:5;:10;;;;:38;;;;;337:3;2081:24;;:5;:24;;;;2067:38;2059:47;;;;;;;;2181:1;2164:6;:13;2171:5;2164:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;2156:27;;;;;;;;2209:6;:23;337:3;2209:23;;;;;;;;;;;;;;;;;;;;;;;;;2193:6;:13;2200:5;2193:13;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;2268:5;2242:6;:23;337:3;2242:23;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;2283:10;;:12;;;;;;;;;;;;;2376:10;2363:23;;:9;;;;;;;;;;;:23;;;;2359:68;;;2400:27;2416:10;2400:15;:27::i;:::-;2359:68;1906:528;;:::o;3683:526::-;244:4:13;222:27;;:10;:27;;;214:36;;;;;;;;3866:1:9;3854:8;:13;;;;:44;;;;;337:3;3871:27;;:8;:27;;;;3854:44;3846:53;;;;;;;;3977:1;3957:6;:16;3964:8;3957:16;;;;;;;;;;;;;;;;;;;;;;;;;:21;;;3949:30;;;;;;;;4080:8;4059:29;;:6;:17;4066:9;4059:17;;;;;;;;;;;;;;;;;;;;;;;;;:29;;;4051:38;;;;;;;;4118:6;:16;4125:8;4118:16;;;;;;;;;;;;;;;;;;;;;;;;;4099:6;:16;4106:8;4099:16;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;4164:8;4144:6;:17;4151:9;4144:17;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;4201:1;4182:6;:16;4189:8;4182:16;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;3683:526;;;:::o;4722:113::-;4791:5;4819:9;;;;;;;;;;;4812:16;;4722:113;:::o", - "source": "pragma solidity 0.4.24;\nimport \"./SelfAuthorized.sol\";\n\n/// @title OwnerManager - Manages a set of owners and a threshold to perform actions.\n/// @author Stefan George - \n/// @author Richard Meissner - \ncontract OwnerManager is SelfAuthorized {\n\n address public constant SENTINEL_OWNERS = address(0x1);\n\n mapping(address => address) internal owners;\n uint256 ownerCount;\n uint8 internal threshold;\n\n /// @dev Setup function sets initial storage of contract.\n /// @param _owners List of Safe owners.\n /// @param _threshold Number of required confirmations for a Safe transaction.\n function setupOwners(address[] _owners, uint8 _threshold)\n internal\n {\n // Threshold can only be 0 at initialization.\n // Check ensures that setup function can only be called once.\n require(threshold == 0);\n // Validate that threshold is smaller than number of added owners.\n require(_threshold <= _owners.length);\n // There has to be at least one Safe owner.\n require(_threshold >= 1);\n // Initializing Safe owners.\n address currentOwner = SENTINEL_OWNERS;\n for (uint256 i = 0; i < _owners.length; i++) {\n // Owner address cannot be null.\n address owner = _owners[i];\n require(owner != 0 && owner != SENTINEL_OWNERS);\n // No duplicate owners allowed.\n require(owners[owner] == 0);\n owners[currentOwner] = owner;\n currentOwner = owner;\n }\n owners[currentOwner] = SENTINEL_OWNERS;\n ownerCount = _owners.length;\n threshold = _threshold;\n }\n\n /// @dev Allows to add a new owner to the Safe and update the threshold at the same time.\n /// This can only be done via a Safe transaction.\n /// @param owner New owner address.\n /// @param _threshold New threshold.\n function addOwnerWithThreshold(address owner, uint8 _threshold)\n public\n authorized\n {\n // Owner address cannot be null.\n require(owner != 0 && owner != SENTINEL_OWNERS);\n // No duplicate owners allowed.\n require(owners[owner] == 0);\n owners[owner] = owners[SENTINEL_OWNERS];\n owners[SENTINEL_OWNERS] = owner;\n ownerCount++;\n // Change threshold if threshold was changed.\n if (threshold != _threshold)\n changeThreshold(_threshold);\n }\n\n /// @dev Allows to remove an owner from the Safe and update the threshold at the same time.\n /// This can only be done via a Safe transaction.\n /// @param prevOwner Owner that pointed to the owner to be removed in the linked list\n /// @param owner Owner address to be removed.\n /// @param _threshold New threshold.\n function removeOwner(address prevOwner, address owner, uint8 _threshold)\n public\n authorized\n {\n // Only allow to remove an owner, if threshold can still be reached.\n require(ownerCount - 1 >= _threshold);\n // Validate owner address corresponds to owner index.\n require(owners[prevOwner] == owner);\n owners[prevOwner] = owners[owner];\n owners[owner] = 0;\n ownerCount--;\n // Change threshold if threshold was changed.\n if (threshold != _threshold)\n changeThreshold(_threshold);\n }\n\n /// @dev Allows to swap/replace an owner from the Safe with another address.\n /// This can only be done via a Safe transaction.\n /// @param prevOwner Owner that pointed to the owner to be replaced in the linked list\n /// @param oldOwner Owner address to be replaced.\n /// @param newOwner New owner address.\n function swapOwner(address prevOwner, address oldOwner, address newOwner)\n public\n authorized\n {\n // Owner address cannot be null.\n require(newOwner != 0 && newOwner != SENTINEL_OWNERS);\n // No duplicate owners allowed.\n require(owners[newOwner] == 0);\n // Validate owner address corresponds to owner index.\n require(owners[prevOwner] == oldOwner);\n owners[newOwner] = owners[oldOwner];\n owners[prevOwner] = newOwner;\n owners[oldOwner] = 0;\n }\n\n /// @dev Allows to update the number of required confirmations by Safe owners.\n /// This can only be done via a Safe transaction.\n /// @param _threshold New threshold.\n function changeThreshold(uint8 _threshold)\n public\n authorized\n {\n // Validate that threshold is smaller than number of owners.\n require(_threshold <= ownerCount);\n // There has to be at least one Safe owner.\n require(_threshold >= 1);\n threshold = _threshold;\n }\n\n function getThreshold()\n public\n view\n returns (uint8)\n {\n return threshold;\n }\n\n function isOwner(address owner)\n public\n view\n returns (bool)\n {\n return owners[owner] != 0;\n }\n\n /// @dev Returns array of owners.\n /// @return Array of Safe owners.\n function getOwners()\n public\n view\n returns (address[])\n {\n address[] memory array = new address[](ownerCount);\n\n // populate return array\n uint256 index = 0;\n address currentOwner = owners[SENTINEL_OWNERS];\n while(currentOwner != SENTINEL_OWNERS) {\n array[index] = currentOwner;\n currentOwner = owners[currentOwner];\n index ++;\n }\n return array;\n }\n}\n", + "bytecode": "0x608060405234801561001057600080fd5b506115a5806100206000396000f30060806040526004361061008e576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632f54bf6e1461009357806386040aa9146100ee5780638cff63551461015e578063a0e67e2b146101b5578063b7f3358d14610221578063b91a667f14610251578063e318b52b146102a1578063e75235b814610324575b600080fd5b34801561009f57600080fd5b506100d4600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610355565b604051808215151515815260200191505060405180910390f35b3480156100fa57600080fd5b5061015c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff1690602001909291905050506103d6565b005b34801561016a57600080fd5b50610173610804565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101c157600080fd5b506101ca610809565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561020d5780820151818401526020810190506101f2565b505050509050019250505060405180910390f35b34801561022d57600080fd5b5061024f600480360381019080803560ff1690602001909291905050506109a2565b005b34801561025d57600080fd5b5061029f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050610bce565b005b3480156102ad57600080fd5b50610322600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610fe3565b005b34801561033057600080fd5b50610339611562565b604051808260ff1660ff16815260200191505060405180910390f35b6000806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561049f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b8060ff16600180540310151515610544576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260358152602001807f4e6577206f776e657220636f756e74206e6565647320746f206265206c61726781526020017f6572207468616e206e6577207468726573686f6c64000000000000000000000081525060400191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff166000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561066b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f496e76616c696420707265764f776e65722c206f776e6572207061697220707281526020017f6f7669646564000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160008154809291906001900391905055508060ff16600260009054906101000a900460ff1660ff161415156107ff576107fe816109a2565b5b505050565b600181565b6060806000806001546040519080825280602002602001820160405280156108405781602001602082028038833980820191505090505b50925060009150600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515610999578083838151811015156108ef57fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081806001019250506108aa565b82935050505090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610a6b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b6001548160ff1611151515610b0e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f5468726573686f6c642063616e6e6f7420657863656564206f776e657220636f81526020017f756e74000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60018160ff1610151515610bb0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f5468726573686f6c64206e6565647320746f206265206772656174657220746881526020017f616e20300000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b80600260006101000a81548160ff021916908360ff16021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610c97576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1614158015610ceb5750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1515610d5f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610e4b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4164647265737320697320616c726561647920616e206f776e6572000000000081525060200191505060405180910390fd5b600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600081548092919060010191905055508060ff16600260009054906101000a900460ff1660ff16141515610fdf57610fde816109a2565b5b5050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156110ac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141580156111005750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1515611174576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611260576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4164647265737320697320616c726561647920616e206f776e6572000000000081525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff166000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611387576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f496e76616c696420707265764f776e65722c206f776e6572207061697220707281526020017f6f7669646564000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b6000600260009054906101000a900460ff169050905600a165627a7a72305820145a82b2318755012cb2cf26f6d98b07c1169f4a27a0c876ef51e47ddf3a5b3b0029", + "deployedBytecode": "0x60806040526004361061008e576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632f54bf6e1461009357806386040aa9146100ee5780638cff63551461015e578063a0e67e2b146101b5578063b7f3358d14610221578063b91a667f14610251578063e318b52b146102a1578063e75235b814610324575b600080fd5b34801561009f57600080fd5b506100d4600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610355565b604051808215151515815260200191505060405180910390f35b3480156100fa57600080fd5b5061015c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff1690602001909291905050506103d6565b005b34801561016a57600080fd5b50610173610804565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101c157600080fd5b506101ca610809565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561020d5780820151818401526020810190506101f2565b505050509050019250505060405180910390f35b34801561022d57600080fd5b5061024f600480360381019080803560ff1690602001909291905050506109a2565b005b34801561025d57600080fd5b5061029f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050610bce565b005b3480156102ad57600080fd5b50610322600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610fe3565b005b34801561033057600080fd5b50610339611562565b604051808260ff1660ff16815260200191505060405180910390f35b6000806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561049f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b8060ff16600180540310151515610544576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260358152602001807f4e6577206f776e657220636f756e74206e6565647320746f206265206c61726781526020017f6572207468616e206e6577207468726573686f6c64000000000000000000000081525060400191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff166000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561066b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f496e76616c696420707265764f776e65722c206f776e6572207061697220707281526020017f6f7669646564000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160008154809291906001900391905055508060ff16600260009054906101000a900460ff1660ff161415156107ff576107fe816109a2565b5b505050565b600181565b6060806000806001546040519080825280602002602001820160405280156108405781602001602082028038833980820191505090505b50925060009150600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515610999578083838151811015156108ef57fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081806001019250506108aa565b82935050505090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610a6b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b6001548160ff1611151515610b0e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f5468726573686f6c642063616e6e6f7420657863656564206f776e657220636f81526020017f756e74000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60018160ff1610151515610bb0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f5468726573686f6c64206e6565647320746f206265206772656174657220746881526020017f616e20300000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b80600260006101000a81548160ff021916908360ff16021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610c97576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1614158015610ceb5750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1515610d5f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610e4b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4164647265737320697320616c726561647920616e206f776e6572000000000081525060200191505060405180910390fd5b600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600081548092919060010191905055508060ff16600260009054906101000a900460ff1660ff16141515610fdf57610fde816109a2565b5b5050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156110ac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141580156111005750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1515611174576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611260576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4164647265737320697320616c726561647920616e206f776e6572000000000081525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff166000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611387576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f496e76616c696420707265764f776e65722c206f776e6572207061697220707281526020017f6f7669646564000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b6000600260009054906101000a900460ff169050905600a165627a7a72305820145a82b2318755012cb2cf26f6d98b07c1169f4a27a0c876ef51e47ddf3a5b3b0029", + "sourceMap": "240:5805:9:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;240:5805:9;;;;;;;", + "deployedSourceMap": "240:5805:9:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5374:129;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5374:129:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3024:672;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3024:672:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;287:54;;8:9:-1;5:2;;;30:1;27;20:12;5:2;287:54:9;;;;;;;;;;;;;;;;;;;;;;;;;;;5585:458;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5585:458:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;5585:458:9;;;;;;;;;;;;;;;;;4852:397;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4852:397:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;2089:593;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2089:593:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4030:633;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4030:633:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5255:113;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5255:113:9;;;;;;;;;;;;;;;;;;;;;;;;;;;5374:129;5451:4;5495:1;5478:6;:13;5485:5;5478:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;;5471:25;;5374:129;;;:::o;3024:672::-;244:4:13;222:27;;:10;:27;;;214:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3248:10:9;3230:28;;3243:1;3230:10;;:14;:28;;3222:94;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3417:5;3396:26;;:6;:17;3403:9;3396:17;;;;;;;;;;;;;;;;;;;;;;;;;:26;;;3388:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3495:6;:13;3502:5;3495:13;;;;;;;;;;;;;;;;;;;;;;;;;3475:6;:17;3482:9;3475:17;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;3534:1;3518:6;:13;3525:5;3518:13;;;;;;;;;;;;;;;;:17;;;;;;;;;;;;;;;;;;3545:10;;:12;;;;;;;;;;;;;;3638:10;3625:23;;:9;;;;;;;;;;;:23;;;;3621:68;;;3662:27;3678:10;3662:15;:27::i;:::-;3621:68;3024:672;;;:::o;287:54::-;337:3;287:54;:::o;5585:458::-;5651:9;5676:22;5770:13;5797:20;5715:10;;5701:25;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;5701:25:9;;;;5676:50;;5786:1;5770:17;;5820:6;:23;337:3;5820:23;;;;;;;;;;;;;;;;;;;;;;;;;5797:46;;5853:162;337:3;5859:31;;:12;:31;;;;5853:162;;;5921:12;5906:5;5912;5906:12;;;;;;;;;;;;;;;;;:27;;;;;;;;;;;5962:6;:20;5969:12;5962:20;;;;;;;;;;;;;;;;;;;;;;;;;5947:35;;5996:8;;;;;;;5853:162;;;6031:5;6024:12;;5585:458;;;;:::o;4852:397::-;244:4:13;222:27;;:10;:27;;;214:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5034:10:9;;5020;:24;;;;5012:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5168:1;5154:10;:15;;;;5146:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5232:10;5220:9;;:22;;;;;;;;;;;;;;;;;;4852:397;:::o;2089:593::-;244:4:13;222:27;;:10;:27;;;214:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2259:1:9;2250:5;:10;;;;:38;;;;;337:3;2264:24;;:5;:24;;;;2250:38;2242:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2398:1;2381:6;:13;2388:5;2381:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;2373:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2457:6;:23;337:3;2457:23;;;;;;;;;;;;;;;;;;;;;;;;;2441:6;:13;2448:5;2441:13;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;2516:5;2490:6;:23;337:3;2490:23;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;2531:10;;:12;;;;;;;;;;;;;2624:10;2611:23;;:9;;;;;;;;;;;:23;;;;2607:68;;;2648:27;2664:10;2648:15;:27::i;:::-;2607:68;2089:593;;:::o;4030:633::-;244:4:13;222:27;;:10;:27;;;214:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4213:1:9;4201:8;:13;;;;:44;;;;;337:3;4218:27;;:8;:27;;;;4201:44;4193:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4358:1;4338:6;:16;4345:8;4338:16;;;;;;;;;;;;;;;;;;;;;;;;;:21;;;4330:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4492:8;4471:29;;:6;:17;4478:9;4471:17;;;;;;;;;;;;;;;;;;;;;;;;;:29;;;4463:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4572:6;:16;4579:8;4572:16;;;;;;;;;;;;;;;;;;;;;;;;;4553:6;:16;4560:8;4553:16;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;4618:8;4598:6;:17;4605:9;4598:17;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;4655:1;4636:6;:16;4643:8;4636:16;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;4030:633;;;:::o;5255:113::-;5324:5;5352:9;;;;;;;;;;;5345:16;;5255:113;:::o", + "source": "pragma solidity 0.4.24;\nimport \"./SelfAuthorized.sol\";\n\n/// @title OwnerManager - Manages a set of owners and a threshold to perform actions.\n/// @author Stefan George - \n/// @author Richard Meissner - \ncontract OwnerManager is SelfAuthorized {\n\n address public constant SENTINEL_OWNERS = address(0x1);\n\n mapping(address => address) internal owners;\n uint256 ownerCount;\n uint8 internal threshold;\n\n /// @dev Setup function sets initial storage of contract.\n /// @param _owners List of Safe owners.\n /// @param _threshold Number of required confirmations for a Safe transaction.\n function setupOwners(address[] _owners, uint8 _threshold)\n internal\n {\n // Threshold can only be 0 at initialization.\n // Check ensures that setup function can only be called once.\n require(threshold == 0, \"Owners have already been setup\");\n // Validate that threshold is smaller than number of added owners.\n require(_threshold <= _owners.length, \"Threshold cannot exceed owner count\");\n // There has to be at least one Safe owner.\n require(_threshold >= 1, \"Threshold needs to be greater than 0\");\n // Initializing Safe owners.\n address currentOwner = SENTINEL_OWNERS;\n for (uint256 i = 0; i < _owners.length; i++) {\n // Owner address cannot be null.\n address owner = _owners[i];\n require(owner != 0 && owner != SENTINEL_OWNERS, \"Invalid owner address provided\");\n // No duplicate owners allowed.\n require(owners[owner] == 0, \"Duplicate owner address provided\");\n owners[currentOwner] = owner;\n currentOwner = owner;\n }\n owners[currentOwner] = SENTINEL_OWNERS;\n ownerCount = _owners.length;\n threshold = _threshold;\n }\n\n /// @dev Allows to add a new owner to the Safe and update the threshold at the same time.\n /// This can only be done via a Safe transaction.\n /// @param owner New owner address.\n /// @param _threshold New threshold.\n function addOwnerWithThreshold(address owner, uint8 _threshold)\n public\n authorized\n {\n // Owner address cannot be null.\n require(owner != 0 && owner != SENTINEL_OWNERS, \"Invalid owner address provided\");\n // No duplicate owners allowed.\n require(owners[owner] == 0, \"Address is already an owner\");\n owners[owner] = owners[SENTINEL_OWNERS];\n owners[SENTINEL_OWNERS] = owner;\n ownerCount++;\n // Change threshold if threshold was changed.\n if (threshold != _threshold)\n changeThreshold(_threshold);\n }\n\n /// @dev Allows to remove an owner from the Safe and update the threshold at the same time.\n /// This can only be done via a Safe transaction.\n /// @param prevOwner Owner that pointed to the owner to be removed in the linked list\n /// @param owner Owner address to be removed.\n /// @param _threshold New threshold.\n function removeOwner(address prevOwner, address owner, uint8 _threshold)\n public\n authorized\n {\n // Only allow to remove an owner, if threshold can still be reached.\n require(ownerCount - 1 >= _threshold, \"New owner count needs to be larger than new threshold\");\n // Validate owner address corresponds to owner index.\n require(owners[prevOwner] == owner, \"Invalid prevOwner, owner pair provided\");\n owners[prevOwner] = owners[owner];\n owners[owner] = 0;\n ownerCount--;\n // Change threshold if threshold was changed.\n if (threshold != _threshold)\n changeThreshold(_threshold);\n }\n\n /// @dev Allows to swap/replace an owner from the Safe with another address.\n /// This can only be done via a Safe transaction.\n /// @param prevOwner Owner that pointed to the owner to be replaced in the linked list\n /// @param oldOwner Owner address to be replaced.\n /// @param newOwner New owner address.\n function swapOwner(address prevOwner, address oldOwner, address newOwner)\n public\n authorized\n {\n // Owner address cannot be null.\n require(newOwner != 0 && newOwner != SENTINEL_OWNERS, \"Invalid owner address provided\");\n // No duplicate owners allowed.\n require(owners[newOwner] == 0, \"Address is already an owner\");\n // Validate owner address corresponds to owner index.\n require(owners[prevOwner] == oldOwner, \"Invalid prevOwner, owner pair provided\");\n owners[newOwner] = owners[oldOwner];\n owners[prevOwner] = newOwner;\n owners[oldOwner] = 0;\n }\n\n /// @dev Allows to update the number of required confirmations by Safe owners.\n /// This can only be done via a Safe transaction.\n /// @param _threshold New threshold.\n function changeThreshold(uint8 _threshold)\n public\n authorized\n {\n // Validate that threshold is smaller than number of owners.\n require(_threshold <= ownerCount, \"Threshold cannot exceed owner count\");\n // There has to be at least one Safe owner.\n require(_threshold >= 1, \"Threshold needs to be greater than 0\");\n threshold = _threshold;\n }\n\n function getThreshold()\n public\n view\n returns (uint8)\n {\n return threshold;\n }\n\n function isOwner(address owner)\n public\n view\n returns (bool)\n {\n return owners[owner] != 0;\n }\n\n /// @dev Returns array of owners.\n /// @return Array of Safe owners.\n function getOwners()\n public\n view\n returns (address[])\n {\n address[] memory array = new address[](ownerCount);\n\n // populate return array\n uint256 index = 0;\n address currentOwner = owners[SENTINEL_OWNERS];\n while(currentOwner != SENTINEL_OWNERS) {\n array[index] = currentOwner;\n currentOwner = owners[currentOwner];\n index ++;\n }\n return array;\n }\n}\n", "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/OwnerManager.sol", "ast": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/OwnerManager.sol", "exportedSymbols": { "OwnerManager": [ - 1472 + 1504 ] }, - "id": 1473, + "id": 1505, "nodeType": "SourceUnit", "nodes": [ { - "id": 1102, + "id": 1120, "literals": [ "solidity", "0.4", @@ -168,10 +168,10 @@ { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/SelfAuthorized.sol", "file": "./SelfAuthorized.sol", - "id": 1103, + "id": 1121, "nodeType": "ImportDirective", - "scope": 1473, - "sourceUnit": 1620, + "scope": 1505, + "sourceUnit": 1655, "src": "24:30:9", "symbolAliases": [], "unitAlias": "" @@ -182,41 +182,41 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 1104, + "id": 1122, "name": "SelfAuthorized", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1619, + "referencedDeclaration": 1654, "src": "265:14:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_SelfAuthorized_$1619", + "typeIdentifier": "t_contract$_SelfAuthorized_$1654", "typeString": "contract SelfAuthorized" } }, - "id": 1105, + "id": 1123, "nodeType": "InheritanceSpecifier", "src": "265:14:9" } ], "contractDependencies": [ - 1619 + 1654 ], "contractKind": "contract", "documentation": "@title OwnerManager - Manages a set of owners and a threshold to perform actions.\n @author Stefan George - \n @author Richard Meissner - ", "fullyImplemented": true, - "id": 1472, + "id": 1504, "linearizedBaseContracts": [ - 1472, - 1619 + 1504, + 1654 ], "name": "OwnerManager", "nodeType": "ContractDefinition", "nodes": [ { "constant": true, - "id": 1110, + "id": 1128, "name": "SENTINEL_OWNERS", "nodeType": "VariableDeclaration", - "scope": 1472, + "scope": 1504, "src": "287:54:9", "stateVariable": true, "storageLocation": "default", @@ -225,7 +225,7 @@ "typeString": "address" }, "typeName": { - "id": 1106, + "id": 1124, "name": "address", "nodeType": "ElementaryTypeName", "src": "287:7:9", @@ -240,7 +240,7 @@ { "argumentTypes": null, "hexValue": "307831", - "id": 1108, + "id": 1126, "isConstant": false, "isLValue": false, "isPure": true, @@ -263,7 +263,7 @@ "typeString": "int_const 1" } ], - "id": 1107, + "id": 1125, "isConstant": false, "isLValue": false, "isPure": true, @@ -276,7 +276,7 @@ }, "typeName": "address" }, - "id": 1109, + "id": 1127, "isConstant": false, "isLValue": false, "isPure": true, @@ -294,10 +294,10 @@ }, { "constant": false, - "id": 1114, + "id": 1132, "name": "owners", "nodeType": "VariableDeclaration", - "scope": 1472, + "scope": 1504, "src": "348:43:9", "stateVariable": true, "storageLocation": "default", @@ -306,9 +306,9 @@ "typeString": "mapping(address => address)" }, "typeName": { - "id": 1113, + "id": 1131, "keyType": { - "id": 1111, + "id": 1129, "name": "address", "nodeType": "ElementaryTypeName", "src": "356:7:9", @@ -324,7 +324,7 @@ "typeString": "mapping(address => address)" }, "valueType": { - "id": 1112, + "id": 1130, "name": "address", "nodeType": "ElementaryTypeName", "src": "367:7:9", @@ -339,10 +339,10 @@ }, { "constant": false, - "id": 1116, + "id": 1134, "name": "ownerCount", "nodeType": "VariableDeclaration", - "scope": 1472, + "scope": 1504, "src": "397:18:9", "stateVariable": true, "storageLocation": "default", @@ -351,7 +351,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1115, + "id": 1133, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "397:7:9", @@ -365,10 +365,10 @@ }, { "constant": false, - "id": 1118, + "id": 1136, "name": "threshold", "nodeType": "VariableDeclaration", - "scope": 1472, + "scope": 1504, "src": "421:24:9", "stateVariable": true, "storageLocation": "default", @@ -377,7 +377,7 @@ "typeString": "uint8" }, "typeName": { - "id": 1117, + "id": 1135, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "421:5:9", @@ -391,9 +391,9 @@ }, { "body": { - "id": 1211, + "id": 1234, "nodeType": "Block", - "src": "720:946:9", + "src": "720:1129:9", "statements": [ { "expression": { @@ -405,18 +405,18 @@ "typeIdentifier": "t_uint8", "typeString": "uint8" }, - "id": 1129, + "id": 1147, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1127, + "id": 1145, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1118, + "referencedDeclaration": 1136, "src": "862:9:9", "typeDescriptions": { "typeIdentifier": "t_uint8", @@ -428,7 +428,7 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1128, + "id": 1146, "isConstant": false, "isLValue": false, "isPure": true, @@ -448,6 +448,24 @@ "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "4f776e657273206861766520616c7265616479206265656e207365747570", + "id": 1148, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "878:32:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_9a45ae898fbe2bd07a0b33b5a6c421f76198e9deb66843b8d827b0b9e4a16f86", + "typeString": "literal_string \"Owners have already been setup\"" + }, + "value": "Owners have already been setup" } ], "expression": { @@ -455,23 +473,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_9a45ae898fbe2bd07a0b33b5a6c421f76198e9deb66843b8d827b0b9e4a16f86", + "typeString": "literal_string \"Owners have already been setup\"" } ], - "id": 1126, + "id": 1144, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, + "referencedDeclaration": 2658, "src": "854:7:9", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 1130, + "id": 1149, "isConstant": false, "isLValue": false, "isPure": false, @@ -479,15 +501,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "854:23:9", + "src": "854:57:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1131, + "id": 1150, "nodeType": "ExpressionStatement", - "src": "854:23:9" + "src": "854:57:9" }, { "expression": { @@ -499,19 +521,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1136, + "id": 1155, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1133, + "id": 1152, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1123, - "src": "970:10:9", + "referencedDeclaration": 1141, + "src": "1004:10:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -523,18 +545,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1134, + "id": 1153, "name": "_owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1121, - "src": "984:7:9", + "referencedDeclaration": 1139, + "src": "1018:7:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 1135, + "id": 1154, "isConstant": false, "isLValue": false, "isPure": false, @@ -542,17 +564,35 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "984:14:9", + "src": "1018:14:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "970:28:9", + "src": "1004:28:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "5468726573686f6c642063616e6e6f7420657863656564206f776e657220636f756e74", + "id": 1156, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1034:37:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_63d26a9feb8568677e5c255c04e4da88e86a25137d5152a9a089790b7e710e86", + "typeString": "literal_string \"Threshold cannot exceed owner count\"" + }, + "value": "Threshold cannot exceed owner count" } ], "expression": { @@ -560,23 +600,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_63d26a9feb8568677e5c255c04e4da88e86a25137d5152a9a089790b7e710e86", + "typeString": "literal_string \"Threshold cannot exceed owner count\"" } ], - "id": 1132, + "id": 1151, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "962:7:9", + "referencedDeclaration": 2658, + "src": "996:7:9", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 1137, + "id": 1157, "isConstant": false, "isLValue": false, "isPure": false, @@ -584,15 +628,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "962:37:9", + "src": "996:76:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1138, + "id": 1158, "nodeType": "ExpressionStatement", - "src": "962:37:9" + "src": "996:76:9" }, { "expression": { @@ -604,19 +648,19 @@ "typeIdentifier": "t_uint8", "typeString": "uint8" }, - "id": 1142, + "id": 1162, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1140, + "id": 1160, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1123, - "src": "1069:10:9", + "referencedDeclaration": 1141, + "src": "1142:10:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -627,14 +671,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "31", - "id": 1141, + "id": 1161, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1083:1:9", + "src": "1156:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -642,11 +686,29 @@ }, "value": "1" }, - "src": "1069:15:9", + "src": "1142:15:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "5468726573686f6c64206e6565647320746f2062652067726561746572207468616e2030", + "id": 1163, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1159:38:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_b995394ed6031392a784e6dd5e04285cca83077a8dc3873d2fb7fcb090297ab4", + "typeString": "literal_string \"Threshold needs to be greater than 0\"" + }, + "value": "Threshold needs to be greater than 0" } ], "expression": { @@ -654,23 +716,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_b995394ed6031392a784e6dd5e04285cca83077a8dc3873d2fb7fcb090297ab4", + "typeString": "literal_string \"Threshold needs to be greater than 0\"" } ], - "id": 1139, + "id": 1159, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "1061:7:9", + "referencedDeclaration": 2658, + "src": "1134:7:9", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 1143, + "id": 1164, "isConstant": false, "isLValue": false, "isPure": false, @@ -678,28 +744,28 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1061:24:9", + "src": "1134:64:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1144, + "id": 1165, "nodeType": "ExpressionStatement", - "src": "1061:24:9" + "src": "1134:64:9" }, { "assignments": [ - 1146 + 1167 ], "declarations": [ { "constant": false, - "id": 1146, + "id": 1167, "name": "currentOwner", "nodeType": "VariableDeclaration", - "scope": 1212, - "src": "1132:20:9", + "scope": 1235, + "src": "1245:20:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -707,10 +773,10 @@ "typeString": "address" }, "typeName": { - "id": 1145, + "id": 1166, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1132:7:9", + "src": "1245:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -720,41 +786,41 @@ "visibility": "internal" } ], - "id": 1148, + "id": 1169, "initialValue": { "argumentTypes": null, - "id": 1147, + "id": 1168, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1110, - "src": "1155:15:9", + "referencedDeclaration": 1128, + "src": "1268:15:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", - "src": "1132:38:9" + "src": "1245:38:9" }, { "body": { - "id": 1194, + "id": 1217, "nodeType": "Block", - "src": "1225:318:9", + "src": "1338:388:9", "statements": [ { "assignments": [ - 1161 + 1182 ], "declarations": [ { "constant": false, - "id": 1161, + "id": 1182, "name": "owner", "nodeType": "VariableDeclaration", - "scope": 1212, - "src": "1284:13:9", + "scope": 1235, + "src": "1397:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -762,10 +828,10 @@ "typeString": "address" }, "typeName": { - "id": 1160, + "id": 1181, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1284:7:9", + "src": "1397:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -775,31 +841,31 @@ "visibility": "internal" } ], - "id": 1165, + "id": 1186, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1162, + "id": 1183, "name": "_owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1121, - "src": "1300:7:9", + "referencedDeclaration": 1139, + "src": "1413:7:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 1164, + "id": 1185, "indexExpression": { "argumentTypes": null, - "id": 1163, + "id": 1184, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1150, - "src": "1308:1:9", + "referencedDeclaration": 1171, + "src": "1421:1:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -810,14 +876,14 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1300:10:9", + "src": "1413:10:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", - "src": "1284:26:9" + "src": "1397:26:9" }, { "expression": { @@ -829,7 +895,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 1173, + "id": 1194, "isConstant": false, "isLValue": false, "isPure": false, @@ -840,19 +906,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1169, + "id": 1190, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1167, + "id": 1188, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1161, - "src": "1332:5:9", + "referencedDeclaration": 1182, + "src": "1445:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -863,14 +929,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1168, + "id": 1189, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1341:1:9", + "src": "1454:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -878,7 +944,7 @@ }, "value": "0" }, - "src": "1332:10:9", + "src": "1445:10:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -892,19 +958,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1172, + "id": 1193, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1170, + "id": 1191, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1161, - "src": "1346:5:9", + "referencedDeclaration": 1182, + "src": "1459:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -914,28 +980,46 @@ "operator": "!=", "rightExpression": { "argumentTypes": null, - "id": 1171, + "id": 1192, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1110, - "src": "1355:15:9", + "referencedDeclaration": 1128, + "src": "1468:15:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "1346:24:9", + "src": "1459:24:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "1332:38:9", + "src": "1445:38:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "496e76616c6964206f776e657220616464726573732070726f7669646564", + "id": 1195, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1485:32:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_21a1cd38818adb750881fbf07c26ce7223dde608fdd9dadd31a0d41afeca2094", + "typeString": "literal_string \"Invalid owner address provided\"" + }, + "value": "Invalid owner address provided" } ], "expression": { @@ -943,23 +1027,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_21a1cd38818adb750881fbf07c26ce7223dde608fdd9dadd31a0d41afeca2094", + "typeString": "literal_string \"Invalid owner address provided\"" } ], - "id": 1166, + "id": 1187, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "1324:7:9", + "referencedDeclaration": 2658, + "src": "1437:7:9", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 1174, + "id": 1196, "isConstant": false, "isLValue": false, "isPure": false, @@ -967,15 +1055,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1324:47:9", + "src": "1437:81:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1175, + "id": 1197, "nodeType": "ExpressionStatement", - "src": "1324:47:9" + "src": "1437:81:9" }, { "expression": { @@ -987,7 +1075,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1181, + "id": 1203, "isConstant": false, "isLValue": false, "isPure": false, @@ -996,26 +1084,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1177, + "id": 1199, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1114, - "src": "1437:6:9", + "referencedDeclaration": 1132, + "src": "1584:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1179, + "id": 1201, "indexExpression": { "argumentTypes": null, - "id": 1178, + "id": 1200, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1161, - "src": "1444:5:9", + "referencedDeclaration": 1182, + "src": "1591:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1026,7 +1114,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1437:13:9", + "src": "1584:13:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1037,14 +1125,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1180, + "id": 1202, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1454:1:9", + "src": "1601:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -1052,11 +1140,29 @@ }, "value": "0" }, - "src": "1437:18:9", + "src": "1584:18:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "4475706c6963617465206f776e657220616464726573732070726f7669646564", + "id": 1204, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1604:34:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_a803fa289679098e38a7f1f6fe43056918c5ab5af07441cb8db77b949c165ca1", + "typeString": "literal_string \"Duplicate owner address provided\"" + }, + "value": "Duplicate owner address provided" } ], "expression": { @@ -1064,23 +1170,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_a803fa289679098e38a7f1f6fe43056918c5ab5af07441cb8db77b949c165ca1", + "typeString": "literal_string \"Duplicate owner address provided\"" } ], - "id": 1176, + "id": 1198, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "1429:7:9", + "referencedDeclaration": 2658, + "src": "1576:7:9", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 1182, + "id": 1205, "isConstant": false, "isLValue": false, "isPure": false, @@ -1088,20 +1198,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1429:27:9", + "src": "1576:63:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1183, + "id": 1206, "nodeType": "ExpressionStatement", - "src": "1429:27:9" + "src": "1576:63:9" }, { "expression": { "argumentTypes": null, - "id": 1188, + "id": 1211, "isConstant": false, "isLValue": false, "isPure": false, @@ -1110,26 +1220,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1184, + "id": 1207, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1114, - "src": "1470:6:9", + "referencedDeclaration": 1132, + "src": "1653:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1186, + "id": 1209, "indexExpression": { "argumentTypes": null, - "id": 1185, + "id": 1208, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1146, - "src": "1477:12:9", + "referencedDeclaration": 1167, + "src": "1660:12:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1140,7 +1250,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1470:20:9", + "src": "1653:20:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1150,43 +1260,43 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1187, + "id": 1210, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1161, - "src": "1493:5:9", + "referencedDeclaration": 1182, + "src": "1676:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "1470:28:9", + "src": "1653:28:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1189, + "id": 1212, "nodeType": "ExpressionStatement", - "src": "1470:28:9" + "src": "1653:28:9" }, { "expression": { "argumentTypes": null, - "id": 1192, + "id": 1215, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1190, + "id": 1213, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1146, - "src": "1512:12:9", + "referencedDeclaration": 1167, + "src": "1695:12:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1196,26 +1306,26 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1191, + "id": 1214, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1161, - "src": "1527:5:9", + "referencedDeclaration": 1182, + "src": "1710:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "1512:20:9", + "src": "1695:20:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1193, + "id": 1216, "nodeType": "ExpressionStatement", - "src": "1512:20:9" + "src": "1695:20:9" } ] }, @@ -1225,19 +1335,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1156, + "id": 1177, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1153, + "id": 1174, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1150, - "src": "1200:1:9", + "referencedDeclaration": 1171, + "src": "1313:1:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1249,18 +1359,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1154, + "id": 1175, "name": "_owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1121, - "src": "1204:7:9", + "referencedDeclaration": 1139, + "src": "1317:7:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 1155, + "id": 1176, "isConstant": false, "isLValue": false, "isPure": false, @@ -1268,31 +1378,31 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1204:14:9", + "src": "1317:14:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1200:18:9", + "src": "1313:18:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 1195, + "id": 1218, "initializationExpression": { "assignments": [ - 1150 + 1171 ], "declarations": [ { "constant": false, - "id": 1150, + "id": 1171, "name": "i", "nodeType": "VariableDeclaration", - "scope": 1212, - "src": "1185:9:9", + "scope": 1235, + "src": "1298:9:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1300,10 +1410,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1149, + "id": 1170, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1185:7:9", + "src": "1298:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1313,18 +1423,18 @@ "visibility": "internal" } ], - "id": 1152, + "id": 1173, "initialValue": { "argumentTypes": null, "hexValue": "30", - "id": 1151, + "id": 1172, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1197:1:9", + "src": "1310:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -1333,12 +1443,12 @@ "value": "0" }, "nodeType": "VariableDeclarationStatement", - "src": "1185:13:9" + "src": "1298:13:9" }, "loopExpression": { "expression": { "argumentTypes": null, - "id": 1158, + "id": 1179, "isConstant": false, "isLValue": false, "isPure": false, @@ -1346,15 +1456,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "1220:3:9", + "src": "1333:3:9", "subExpression": { "argumentTypes": null, - "id": 1157, + "id": 1178, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1150, - "src": "1220:1:9", + "referencedDeclaration": 1171, + "src": "1333:1:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1365,17 +1475,17 @@ "typeString": "uint256" } }, - "id": 1159, + "id": 1180, "nodeType": "ExpressionStatement", - "src": "1220:3:9" + "src": "1333:3:9" }, "nodeType": "ForStatement", - "src": "1180:363:9" + "src": "1293:433:9" }, { "expression": { "argumentTypes": null, - "id": 1200, + "id": 1223, "isConstant": false, "isLValue": false, "isPure": false, @@ -1384,26 +1494,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1196, + "id": 1219, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1114, - "src": "1552:6:9", + "referencedDeclaration": 1132, + "src": "1735:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1198, + "id": 1221, "indexExpression": { "argumentTypes": null, - "id": 1197, + "id": 1220, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1146, - "src": "1559:12:9", + "referencedDeclaration": 1167, + "src": "1742:12:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1414,7 +1524,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1552:20:9", + "src": "1735:20:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1424,43 +1534,43 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1199, + "id": 1222, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1110, - "src": "1575:15:9", + "referencedDeclaration": 1128, + "src": "1758:15:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "1552:38:9", + "src": "1735:38:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1201, + "id": 1224, "nodeType": "ExpressionStatement", - "src": "1552:38:9" + "src": "1735:38:9" }, { "expression": { "argumentTypes": null, - "id": 1205, + "id": 1228, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1202, + "id": 1225, "name": "ownerCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1116, - "src": "1600:10:9", + "referencedDeclaration": 1134, + "src": "1783:10:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1472,18 +1582,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1203, + "id": 1226, "name": "_owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1121, - "src": "1613:7:9", + "referencedDeclaration": 1139, + "src": "1796:7:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 1204, + "id": 1227, "isConstant": false, "isLValue": false, "isPure": false, @@ -1491,38 +1601,38 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1613:14:9", + "src": "1796:14:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1600:27:9", + "src": "1783:27:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 1206, + "id": 1229, "nodeType": "ExpressionStatement", - "src": "1600:27:9" + "src": "1783:27:9" }, { "expression": { "argumentTypes": null, - "id": 1209, + "id": 1232, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1207, + "id": 1230, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1118, - "src": "1637:9:9", + "referencedDeclaration": 1136, + "src": "1820:9:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -1532,31 +1642,31 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1208, + "id": 1231, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1123, - "src": "1649:10:9", + "referencedDeclaration": 1141, + "src": "1832:10:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "src": "1637:22:9", + "src": "1820:22:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "id": 1210, + "id": 1233, "nodeType": "ExpressionStatement", - "src": "1637:22:9" + "src": "1820:22:9" } ] }, "documentation": "@dev Setup function sets initial storage of contract.\n @param _owners List of Safe owners.\n @param _threshold Number of required confirmations for a Safe transaction.", - "id": 1212, + "id": 1235, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -1564,15 +1674,15 @@ "name": "setupOwners", "nodeType": "FunctionDefinition", "parameters": { - "id": 1124, + "id": 1142, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1121, + "id": 1139, "name": "_owners", "nodeType": "VariableDeclaration", - "scope": 1212, + "scope": 1235, "src": "662:17:9", "stateVariable": false, "storageLocation": "default", @@ -1582,7 +1692,7 @@ }, "typeName": { "baseType": { - "id": 1119, + "id": 1137, "name": "address", "nodeType": "ElementaryTypeName", "src": "662:7:9", @@ -1591,7 +1701,7 @@ "typeString": "address" } }, - "id": 1120, + "id": 1138, "length": null, "nodeType": "ArrayTypeName", "src": "662:9:9", @@ -1605,10 +1715,10 @@ }, { "constant": false, - "id": 1123, + "id": 1141, "name": "_threshold", "nodeType": "VariableDeclaration", - "scope": 1212, + "scope": 1235, "src": "681:16:9", "stateVariable": false, "storageLocation": "default", @@ -1617,7 +1727,7 @@ "typeString": "uint8" }, "typeName": { - "id": 1122, + "id": 1140, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "681:5:9", @@ -1634,22 +1744,22 @@ }, "payable": false, "returnParameters": { - "id": 1125, + "id": 1143, "nodeType": "ParameterList", "parameters": [], "src": "720:0:9" }, - "scope": 1472, - "src": "641:1025:9", + "scope": 1504, + "src": "641:1208:9", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 1264, + "id": 1289, "nodeType": "Block", - "src": "2008:426:9", + "src": "2191:491:9", "statements": [ { "expression": { @@ -1661,7 +1771,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 1228, + "id": 1251, "isConstant": false, "isLValue": false, "isPure": false, @@ -1672,19 +1782,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1224, + "id": 1247, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1222, + "id": 1245, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1214, - "src": "2067:5:9", + "referencedDeclaration": 1237, + "src": "2250:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1695,14 +1805,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1223, + "id": 1246, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2076:1:9", + "src": "2259:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -1710,7 +1820,7 @@ }, "value": "0" }, - "src": "2067:10:9", + "src": "2250:10:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1724,19 +1834,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1227, + "id": 1250, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1225, + "id": 1248, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1214, - "src": "2081:5:9", + "referencedDeclaration": 1237, + "src": "2264:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1746,28 +1856,46 @@ "operator": "!=", "rightExpression": { "argumentTypes": null, - "id": 1226, + "id": 1249, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1110, - "src": "2090:15:9", + "referencedDeclaration": 1128, + "src": "2273:15:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2081:24:9", + "src": "2264:24:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "2067:38:9", + "src": "2250:38:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "496e76616c6964206f776e657220616464726573732070726f7669646564", + "id": 1252, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2290:32:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_21a1cd38818adb750881fbf07c26ce7223dde608fdd9dadd31a0d41afeca2094", + "typeString": "literal_string \"Invalid owner address provided\"" + }, + "value": "Invalid owner address provided" } ], "expression": { @@ -1775,23 +1903,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_21a1cd38818adb750881fbf07c26ce7223dde608fdd9dadd31a0d41afeca2094", + "typeString": "literal_string \"Invalid owner address provided\"" } ], - "id": 1221, + "id": 1244, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "2059:7:9", + "referencedDeclaration": 2658, + "src": "2242:7:9", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 1229, + "id": 1253, "isConstant": false, "isLValue": false, "isPure": false, @@ -1799,15 +1931,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2059:47:9", + "src": "2242:81:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1230, + "id": 1254, "nodeType": "ExpressionStatement", - "src": "2059:47:9" + "src": "2242:81:9" }, { "expression": { @@ -1819,7 +1951,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1236, + "id": 1260, "isConstant": false, "isLValue": false, "isPure": false, @@ -1828,26 +1960,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1232, + "id": 1256, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1114, - "src": "2164:6:9", + "referencedDeclaration": 1132, + "src": "2381:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1234, + "id": 1258, "indexExpression": { "argumentTypes": null, - "id": 1233, + "id": 1257, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1214, - "src": "2171:5:9", + "referencedDeclaration": 1237, + "src": "2388:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1858,7 +1990,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2164:13:9", + "src": "2381:13:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1869,14 +2001,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1235, + "id": 1259, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2181:1:9", + "src": "2398:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -1884,11 +2016,29 @@ }, "value": "0" }, - "src": "2164:18:9", + "src": "2381:18:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "4164647265737320697320616c726561647920616e206f776e6572", + "id": 1261, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2401:29:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_9d461d71e19b25cd406798d062d7e61f961ad52541d3077a543e857810427d47", + "typeString": "literal_string \"Address is already an owner\"" + }, + "value": "Address is already an owner" } ], "expression": { @@ -1896,23 +2046,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_9d461d71e19b25cd406798d062d7e61f961ad52541d3077a543e857810427d47", + "typeString": "literal_string \"Address is already an owner\"" } ], - "id": 1231, + "id": 1255, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "2156:7:9", + "referencedDeclaration": 2658, + "src": "2373:7:9", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 1237, + "id": 1262, "isConstant": false, "isLValue": false, "isPure": false, @@ -1920,20 +2074,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2156:27:9", + "src": "2373:58:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1238, + "id": 1263, "nodeType": "ExpressionStatement", - "src": "2156:27:9" + "src": "2373:58:9" }, { "expression": { "argumentTypes": null, - "id": 1245, + "id": 1270, "isConstant": false, "isLValue": false, "isPure": false, @@ -1942,26 +2096,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1239, + "id": 1264, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1114, - "src": "2193:6:9", + "referencedDeclaration": 1132, + "src": "2441:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1241, + "id": 1266, "indexExpression": { "argumentTypes": null, - "id": 1240, + "id": 1265, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1214, - "src": "2200:5:9", + "referencedDeclaration": 1237, + "src": "2448:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1972,7 +2126,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "2193:13:9", + "src": "2441:13:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1984,26 +2138,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1242, + "id": 1267, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1114, - "src": "2209:6:9", + "referencedDeclaration": 1132, + "src": "2457:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1244, + "id": 1269, "indexExpression": { "argumentTypes": null, - "id": 1243, + "id": 1268, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1110, - "src": "2216:15:9", + "referencedDeclaration": 1128, + "src": "2464:15:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2014,26 +2168,26 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2209:23:9", + "src": "2457:23:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2193:39:9", + "src": "2441:39:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1246, + "id": 1271, "nodeType": "ExpressionStatement", - "src": "2193:39:9" + "src": "2441:39:9" }, { "expression": { "argumentTypes": null, - "id": 1251, + "id": 1276, "isConstant": false, "isLValue": false, "isPure": false, @@ -2042,26 +2196,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1247, + "id": 1272, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1114, - "src": "2242:6:9", + "referencedDeclaration": 1132, + "src": "2490:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1249, + "id": 1274, "indexExpression": { "argumentTypes": null, - "id": 1248, + "id": 1273, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1110, - "src": "2249:15:9", + "referencedDeclaration": 1128, + "src": "2497:15:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2072,7 +2226,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "2242:23:9", + "src": "2490:23:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2082,31 +2236,31 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1250, + "id": 1275, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1214, - "src": "2268:5:9", + "referencedDeclaration": 1237, + "src": "2516:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2242:31:9", + "src": "2490:31:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1252, + "id": 1277, "nodeType": "ExpressionStatement", - "src": "2242:31:9" + "src": "2490:31:9" }, { "expression": { "argumentTypes": null, - "id": 1254, + "id": 1279, "isConstant": false, "isLValue": false, "isPure": false, @@ -2114,15 +2268,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "2283:12:9", + "src": "2531:12:9", "subExpression": { "argumentTypes": null, - "id": 1253, + "id": 1278, "name": "ownerCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1116, - "src": "2283:10:9", + "referencedDeclaration": 1134, + "src": "2531:10:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2133,9 +2287,9 @@ "typeString": "uint256" } }, - "id": 1255, + "id": 1280, "nodeType": "ExpressionStatement", - "src": "2283:12:9" + "src": "2531:12:9" }, { "condition": { @@ -2144,19 +2298,19 @@ "typeIdentifier": "t_uint8", "typeString": "uint8" }, - "id": 1258, + "id": 1283, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1256, + "id": 1281, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1118, - "src": "2363:9:9", + "referencedDeclaration": 1136, + "src": "2611:9:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -2166,39 +2320,39 @@ "operator": "!=", "rightExpression": { "argumentTypes": null, - "id": 1257, + "id": 1282, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1216, - "src": "2376:10:9", + "referencedDeclaration": 1239, + "src": "2624:10:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "src": "2363:23:9", + "src": "2611:23:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 1263, + "id": 1288, "nodeType": "IfStatement", - "src": "2359:68:9", + "src": "2607:68:9", "trueBody": { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 1260, + "id": 1285, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1216, - "src": "2416:10:9", + "referencedDeclaration": 1239, + "src": "2664:10:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -2212,18 +2366,18 @@ "typeString": "uint8" } ], - "id": 1259, + "id": 1284, "name": "changeThreshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1400, - "src": "2400:15:9", + "referencedDeclaration": 1432, + "src": "2648:15:9", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_uint8_$returns$__$", "typeString": "function (uint8)" } }, - "id": 1261, + "id": 1286, "isConstant": false, "isLValue": false, "isPure": false, @@ -2231,58 +2385,58 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2400:27:9", + "src": "2648:27:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1262, + "id": 1287, "nodeType": "ExpressionStatement", - "src": "2400:27:9" + "src": "2648:27:9" } } ] }, "documentation": "@dev Allows to add a new owner to the Safe and update the threshold at the same time.\n This can only be done via a Safe transaction.\n @param owner New owner address.\n @param _threshold New threshold.", - "id": 1265, + "id": 1290, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 1219, + "id": 1242, "modifierName": { "argumentTypes": null, - "id": 1218, + "id": 1241, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1618, - "src": "1993:10:9", + "referencedDeclaration": 1653, + "src": "2176:10:9", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "1993:10:9" + "src": "2176:10:9" } ], "name": "addOwnerWithThreshold", "nodeType": "FunctionDefinition", "parameters": { - "id": 1217, + "id": 1240, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1214, + "id": 1237, "name": "owner", "nodeType": "VariableDeclaration", - "scope": 1265, - "src": "1937:13:9", + "scope": 1290, + "src": "2120:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2290,10 +2444,10 @@ "typeString": "address" }, "typeName": { - "id": 1213, + "id": 1236, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1937:7:9", + "src": "2120:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2304,11 +2458,11 @@ }, { "constant": false, - "id": 1216, + "id": 1239, "name": "_threshold", "nodeType": "VariableDeclaration", - "scope": 1265, - "src": "1952:16:9", + "scope": 1290, + "src": "2135:16:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2316,10 +2470,10 @@ "typeString": "uint8" }, "typeName": { - "id": 1215, + "id": 1238, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "1952:5:9", + "src": "2135:5:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -2329,26 +2483,26 @@ "visibility": "internal" } ], - "src": "1936:33:9" + "src": "2119:33:9" }, "payable": false, "returnParameters": { - "id": 1220, + "id": 1243, "nodeType": "ParameterList", "parameters": [], - "src": "2008:0:9" + "src": "2191:0:9" }, - "scope": 1472, - "src": "1906:528:9", + "scope": 1504, + "src": "2089:593:9", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1317, + "id": 1344, "nodeType": "Block", - "src": "2887:462:9", + "src": "3135:561:9", "statements": [ { "expression": { @@ -2360,7 +2514,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1281, + "id": 1306, "isConstant": false, "isLValue": false, "isPure": false, @@ -2371,19 +2525,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1279, + "id": 1304, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1277, + "id": 1302, "name": "ownerCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1116, - "src": "2982:10:9", + "referencedDeclaration": 1134, + "src": "3230:10:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2394,14 +2548,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "31", - "id": 1278, + "id": 1303, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2995:1:9", + "src": "3243:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -2409,7 +2563,7 @@ }, "value": "1" }, - "src": "2982:14:9", + "src": "3230:14:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2419,22 +2573,40 @@ "operator": ">=", "rightExpression": { "argumentTypes": null, - "id": 1280, + "id": 1305, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1271, - "src": "3000:10:9", + "referencedDeclaration": 1296, + "src": "3248:10:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "src": "2982:28:9", + "src": "3230:28:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "4e6577206f776e657220636f756e74206e6565647320746f206265206c6172676572207468616e206e6577207468726573686f6c64", + "id": 1307, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3260:55:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_839b4c4db845de24ec74ef067d85431087d6987a4c904418ee4f6ec699c02482", + "typeString": "literal_string \"New owner count needs to be larger than new threshold\"" + }, + "value": "New owner count needs to be larger than new threshold" } ], "expression": { @@ -2442,23 +2614,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_839b4c4db845de24ec74ef067d85431087d6987a4c904418ee4f6ec699c02482", + "typeString": "literal_string \"New owner count needs to be larger than new threshold\"" } ], - "id": 1276, + "id": 1301, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "2974:7:9", + "referencedDeclaration": 2658, + "src": "3222:7:9", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 1282, + "id": 1308, "isConstant": false, "isLValue": false, "isPure": false, @@ -2466,15 +2642,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2974:37:9", + "src": "3222:94:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1283, + "id": 1309, "nodeType": "ExpressionStatement", - "src": "2974:37:9" + "src": "3222:94:9" }, { "expression": { @@ -2486,7 +2662,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1289, + "id": 1315, "isConstant": false, "isLValue": false, "isPure": false, @@ -2495,26 +2671,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1285, + "id": 1311, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1114, - "src": "3091:6:9", + "referencedDeclaration": 1132, + "src": "3396:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1287, + "id": 1313, "indexExpression": { "argumentTypes": null, - "id": 1286, + "id": 1312, "name": "prevOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1267, - "src": "3098:9:9", + "referencedDeclaration": 1292, + "src": "3403:9:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2525,7 +2701,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3091:17:9", + "src": "3396:17:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2535,22 +2711,40 @@ "operator": "==", "rightExpression": { "argumentTypes": null, - "id": 1288, + "id": 1314, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1269, - "src": "3112:5:9", + "referencedDeclaration": 1294, + "src": "3417:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "3091:26:9", + "src": "3396:26:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "496e76616c696420707265764f776e65722c206f776e657220706169722070726f7669646564", + "id": 1316, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3424:40:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_960698caed81fce71c9b7d572ab2e035b6014a5b812b51df8462ea9817fc4ebc", + "typeString": "literal_string \"Invalid prevOwner, owner pair provided\"" + }, + "value": "Invalid prevOwner, owner pair provided" } ], "expression": { @@ -2558,23 +2752,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_960698caed81fce71c9b7d572ab2e035b6014a5b812b51df8462ea9817fc4ebc", + "typeString": "literal_string \"Invalid prevOwner, owner pair provided\"" } ], - "id": 1284, + "id": 1310, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "3083:7:9", + "referencedDeclaration": 2658, + "src": "3388:7:9", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 1290, + "id": 1317, "isConstant": false, "isLValue": false, "isPure": false, @@ -2582,20 +2780,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3083:35:9", + "src": "3388:77:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1291, + "id": 1318, "nodeType": "ExpressionStatement", - "src": "3083:35:9" + "src": "3388:77:9" }, { "expression": { "argumentTypes": null, - "id": 1298, + "id": 1325, "isConstant": false, "isLValue": false, "isPure": false, @@ -2604,26 +2802,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1292, + "id": 1319, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1114, - "src": "3128:6:9", + "referencedDeclaration": 1132, + "src": "3475:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1294, + "id": 1321, "indexExpression": { "argumentTypes": null, - "id": 1293, + "id": 1320, "name": "prevOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1267, - "src": "3135:9:9", + "referencedDeclaration": 1292, + "src": "3482:9:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2634,7 +2832,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "3128:17:9", + "src": "3475:17:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2646,26 +2844,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1295, + "id": 1322, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1114, - "src": "3148:6:9", + "referencedDeclaration": 1132, + "src": "3495:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1297, + "id": 1324, "indexExpression": { "argumentTypes": null, - "id": 1296, + "id": 1323, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1269, - "src": "3155:5:9", + "referencedDeclaration": 1294, + "src": "3502:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2676,26 +2874,26 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3148:13:9", + "src": "3495:13:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "3128:33:9", + "src": "3475:33:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1299, + "id": 1326, "nodeType": "ExpressionStatement", - "src": "3128:33:9" + "src": "3475:33:9" }, { "expression": { "argumentTypes": null, - "id": 1304, + "id": 1331, "isConstant": false, "isLValue": false, "isPure": false, @@ -2704,26 +2902,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1300, + "id": 1327, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1114, - "src": "3171:6:9", + "referencedDeclaration": 1132, + "src": "3518:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1302, + "id": 1329, "indexExpression": { "argumentTypes": null, - "id": 1301, + "id": 1328, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1269, - "src": "3178:5:9", + "referencedDeclaration": 1294, + "src": "3525:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2734,7 +2932,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "3171:13:9", + "src": "3518:13:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2745,14 +2943,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "30", - "id": 1303, + "id": 1330, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3187:1:9", + "src": "3534:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -2760,20 +2958,20 @@ }, "value": "0" }, - "src": "3171:17:9", + "src": "3518:17:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1305, + "id": 1332, "nodeType": "ExpressionStatement", - "src": "3171:17:9" + "src": "3518:17:9" }, { "expression": { "argumentTypes": null, - "id": 1307, + "id": 1334, "isConstant": false, "isLValue": false, "isPure": false, @@ -2781,15 +2979,15 @@ "nodeType": "UnaryOperation", "operator": "--", "prefix": false, - "src": "3198:12:9", + "src": "3545:12:9", "subExpression": { "argumentTypes": null, - "id": 1306, + "id": 1333, "name": "ownerCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1116, - "src": "3198:10:9", + "referencedDeclaration": 1134, + "src": "3545:10:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2800,9 +2998,9 @@ "typeString": "uint256" } }, - "id": 1308, + "id": 1335, "nodeType": "ExpressionStatement", - "src": "3198:12:9" + "src": "3545:12:9" }, { "condition": { @@ -2811,19 +3009,19 @@ "typeIdentifier": "t_uint8", "typeString": "uint8" }, - "id": 1311, + "id": 1338, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1309, + "id": 1336, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1118, - "src": "3278:9:9", + "referencedDeclaration": 1136, + "src": "3625:9:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -2833,39 +3031,39 @@ "operator": "!=", "rightExpression": { "argumentTypes": null, - "id": 1310, + "id": 1337, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1271, - "src": "3291:10:9", + "referencedDeclaration": 1296, + "src": "3638:10:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "src": "3278:23:9", + "src": "3625:23:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 1316, + "id": 1343, "nodeType": "IfStatement", - "src": "3274:68:9", + "src": "3621:68:9", "trueBody": { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 1313, + "id": 1340, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1271, - "src": "3331:10:9", + "referencedDeclaration": 1296, + "src": "3678:10:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -2879,18 +3077,18 @@ "typeString": "uint8" } ], - "id": 1312, + "id": 1339, "name": "changeThreshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1400, - "src": "3315:15:9", + "referencedDeclaration": 1432, + "src": "3662:15:9", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_uint8_$returns$__$", "typeString": "function (uint8)" } }, - "id": 1314, + "id": 1341, "isConstant": false, "isLValue": false, "isPure": false, @@ -2898,58 +3096,58 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3315:27:9", + "src": "3662:27:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1315, + "id": 1342, "nodeType": "ExpressionStatement", - "src": "3315:27:9" + "src": "3662:27:9" } } ] }, "documentation": "@dev Allows to remove an owner from the Safe and update the threshold at the same time.\n This can only be done via a Safe transaction.\n @param prevOwner Owner that pointed to the owner to be removed in the linked list\n @param owner Owner address to be removed.\n @param _threshold New threshold.", - "id": 1318, + "id": 1345, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 1274, + "id": 1299, "modifierName": { "argumentTypes": null, - "id": 1273, + "id": 1298, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1618, - "src": "2872:10:9", + "referencedDeclaration": 1653, + "src": "3120:10:9", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "2872:10:9" + "src": "3120:10:9" } ], "name": "removeOwner", "nodeType": "FunctionDefinition", "parameters": { - "id": 1272, + "id": 1297, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1267, + "id": 1292, "name": "prevOwner", "nodeType": "VariableDeclaration", - "scope": 1318, - "src": "2797:17:9", + "scope": 1345, + "src": "3045:17:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2957,10 +3155,10 @@ "typeString": "address" }, "typeName": { - "id": 1266, + "id": 1291, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2797:7:9", + "src": "3045:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2971,11 +3169,11 @@ }, { "constant": false, - "id": 1269, + "id": 1294, "name": "owner", "nodeType": "VariableDeclaration", - "scope": 1318, - "src": "2816:13:9", + "scope": 1345, + "src": "3064:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2983,10 +3181,10 @@ "typeString": "address" }, "typeName": { - "id": 1268, + "id": 1293, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2816:7:9", + "src": "3064:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2997,11 +3195,11 @@ }, { "constant": false, - "id": 1271, + "id": 1296, "name": "_threshold", "nodeType": "VariableDeclaration", - "scope": 1318, - "src": "2831:16:9", + "scope": 1345, + "src": "3079:16:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3009,10 +3207,10 @@ "typeString": "uint8" }, "typeName": { - "id": 1270, + "id": 1295, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "2831:5:9", + "src": "3079:5:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -3022,26 +3220,26 @@ "visibility": "internal" } ], - "src": "2796:52:9" + "src": "3044:52:9" }, "payable": false, "returnParameters": { - "id": 1275, + "id": 1300, "nodeType": "ParameterList", "parameters": [], - "src": "2887:0:9" + "src": "3135:0:9" }, - "scope": 1472, - "src": "2776:573:9", + "scope": 1504, + "src": "3024:672:9", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1375, + "id": 1405, "nodeType": "Block", - "src": "3795:414:9", + "src": "4142:521:9", "statements": [ { "expression": { @@ -3053,7 +3251,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 1336, + "id": 1363, "isConstant": false, "isLValue": false, "isPure": false, @@ -3064,19 +3262,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1332, + "id": 1359, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1330, + "id": 1357, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1324, - "src": "3854:8:9", + "referencedDeclaration": 1351, + "src": "4201:8:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3087,14 +3285,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1331, + "id": 1358, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3866:1:9", + "src": "4213:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -3102,7 +3300,7 @@ }, "value": "0" }, - "src": "3854:13:9", + "src": "4201:13:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3116,19 +3314,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1335, + "id": 1362, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1333, + "id": 1360, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1324, - "src": "3871:8:9", + "referencedDeclaration": 1351, + "src": "4218:8:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3138,28 +3336,46 @@ "operator": "!=", "rightExpression": { "argumentTypes": null, - "id": 1334, + "id": 1361, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1110, - "src": "3883:15:9", + "referencedDeclaration": 1128, + "src": "4230:15:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "3871:27:9", + "src": "4218:27:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "3854:44:9", + "src": "4201:44:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "496e76616c6964206f776e657220616464726573732070726f7669646564", + "id": 1364, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4247:32:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_21a1cd38818adb750881fbf07c26ce7223dde608fdd9dadd31a0d41afeca2094", + "typeString": "literal_string \"Invalid owner address provided\"" + }, + "value": "Invalid owner address provided" } ], "expression": { @@ -3167,23 +3383,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_21a1cd38818adb750881fbf07c26ce7223dde608fdd9dadd31a0d41afeca2094", + "typeString": "literal_string \"Invalid owner address provided\"" } ], - "id": 1329, + "id": 1356, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "3846:7:9", + "referencedDeclaration": 2658, + "src": "4193:7:9", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 1337, + "id": 1365, "isConstant": false, "isLValue": false, "isPure": false, @@ -3191,15 +3411,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3846:53:9", + "src": "4193:87:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1338, + "id": 1366, "nodeType": "ExpressionStatement", - "src": "3846:53:9" + "src": "4193:87:9" }, { "expression": { @@ -3211,7 +3431,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1344, + "id": 1372, "isConstant": false, "isLValue": false, "isPure": false, @@ -3220,26 +3440,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1340, + "id": 1368, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1114, - "src": "3957:6:9", + "referencedDeclaration": 1132, + "src": "4338:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1342, + "id": 1370, "indexExpression": { "argumentTypes": null, - "id": 1341, + "id": 1369, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1324, - "src": "3964:8:9", + "referencedDeclaration": 1351, + "src": "4345:8:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3250,7 +3470,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3957:16:9", + "src": "4338:16:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3261,14 +3481,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1343, + "id": 1371, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3977:1:9", + "src": "4358:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -3276,11 +3496,29 @@ }, "value": "0" }, - "src": "3957:21:9", + "src": "4338:21:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "4164647265737320697320616c726561647920616e206f776e6572", + "id": 1373, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4361:29:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_9d461d71e19b25cd406798d062d7e61f961ad52541d3077a543e857810427d47", + "typeString": "literal_string \"Address is already an owner\"" + }, + "value": "Address is already an owner" } ], "expression": { @@ -3288,23 +3526,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_9d461d71e19b25cd406798d062d7e61f961ad52541d3077a543e857810427d47", + "typeString": "literal_string \"Address is already an owner\"" } ], - "id": 1339, + "id": 1367, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "3949:7:9", + "referencedDeclaration": 2658, + "src": "4330:7:9", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 1345, + "id": 1374, "isConstant": false, "isLValue": false, "isPure": false, @@ -3312,15 +3554,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3949:30:9", + "src": "4330:61:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1346, + "id": 1375, "nodeType": "ExpressionStatement", - "src": "3949:30:9" + "src": "4330:61:9" }, { "expression": { @@ -3332,7 +3574,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1352, + "id": 1381, "isConstant": false, "isLValue": false, "isPure": false, @@ -3341,26 +3583,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1348, + "id": 1377, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1114, - "src": "4059:6:9", + "referencedDeclaration": 1132, + "src": "4471:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1350, + "id": 1379, "indexExpression": { "argumentTypes": null, - "id": 1349, + "id": 1378, "name": "prevOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1320, - "src": "4066:9:9", + "referencedDeclaration": 1347, + "src": "4478:9:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3371,7 +3613,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4059:17:9", + "src": "4471:17:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3381,22 +3623,40 @@ "operator": "==", "rightExpression": { "argumentTypes": null, - "id": 1351, + "id": 1380, "name": "oldOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1322, - "src": "4080:8:9", + "referencedDeclaration": 1349, + "src": "4492:8:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "4059:29:9", + "src": "4471:29:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "496e76616c696420707265764f776e65722c206f776e657220706169722070726f7669646564", + "id": 1382, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4502:40:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_960698caed81fce71c9b7d572ab2e035b6014a5b812b51df8462ea9817fc4ebc", + "typeString": "literal_string \"Invalid prevOwner, owner pair provided\"" + }, + "value": "Invalid prevOwner, owner pair provided" } ], "expression": { @@ -3404,23 +3664,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_960698caed81fce71c9b7d572ab2e035b6014a5b812b51df8462ea9817fc4ebc", + "typeString": "literal_string \"Invalid prevOwner, owner pair provided\"" } ], - "id": 1347, + "id": 1376, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "4051:7:9", + "referencedDeclaration": 2658, + "src": "4463:7:9", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 1353, + "id": 1383, "isConstant": false, "isLValue": false, "isPure": false, @@ -3428,20 +3692,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4051:38:9", + "src": "4463:80:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1354, + "id": 1384, "nodeType": "ExpressionStatement", - "src": "4051:38:9" + "src": "4463:80:9" }, { "expression": { "argumentTypes": null, - "id": 1361, + "id": 1391, "isConstant": false, "isLValue": false, "isPure": false, @@ -3450,26 +3714,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1355, + "id": 1385, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1114, - "src": "4099:6:9", + "referencedDeclaration": 1132, + "src": "4553:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1357, + "id": 1387, "indexExpression": { "argumentTypes": null, - "id": 1356, + "id": 1386, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1324, - "src": "4106:8:9", + "referencedDeclaration": 1351, + "src": "4560:8:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3480,7 +3744,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "4099:16:9", + "src": "4553:16:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3492,26 +3756,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1358, + "id": 1388, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1114, - "src": "4118:6:9", + "referencedDeclaration": 1132, + "src": "4572:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1360, + "id": 1390, "indexExpression": { "argumentTypes": null, - "id": 1359, + "id": 1389, "name": "oldOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1322, - "src": "4125:8:9", + "referencedDeclaration": 1349, + "src": "4579:8:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3522,489 +3786,21 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4118:16:9", + "src": "4572:16:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "4099:35:9", + "src": "4553:35:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1362, + "id": 1392, "nodeType": "ExpressionStatement", - "src": "4099:35:9" - }, - { - "expression": { - "argumentTypes": null, - "id": 1367, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1363, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1114, - "src": "4144:6:9", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_address_$", - "typeString": "mapping(address => address)" - } - }, - "id": 1365, - "indexExpression": { - "argumentTypes": null, - "id": 1364, - "name": "prevOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1320, - "src": "4151:9:9", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "4144:17:9", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 1366, - "name": "newOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1324, - "src": "4164:8:9", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "4144:28:9", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 1368, - "nodeType": "ExpressionStatement", - "src": "4144:28:9" - }, - { - "expression": { - "argumentTypes": null, - "id": 1373, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1369, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1114, - "src": "4182:6:9", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_address_$", - "typeString": "mapping(address => address)" - } - }, - "id": 1371, - "indexExpression": { - "argumentTypes": null, - "id": 1370, - "name": "oldOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1322, - "src": "4189:8:9", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "4182:16:9", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "30", - "id": 1372, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4201:1:9", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "4182:20:9", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 1374, - "nodeType": "ExpressionStatement", - "src": "4182:20:9" - } - ] - }, - "documentation": "@dev Allows to swap/replace an owner from the Safe with another address.\n This can only be done via a Safe transaction.\n @param prevOwner Owner that pointed to the owner to be replaced in the linked list\n @param oldOwner Owner address to be replaced.\n @param newOwner New owner address.", - "id": 1376, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [ - { - "arguments": null, - "id": 1327, - "modifierName": { - "argumentTypes": null, - "id": 1326, - "name": "authorized", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1618, - "src": "3780:10:9", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "3780:10:9" - } - ], - "name": "swapOwner", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1325, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1320, - "name": "prevOwner", - "nodeType": "VariableDeclaration", - "scope": 1376, - "src": "3702:17:9", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1319, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3702:7:9", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1322, - "name": "oldOwner", - "nodeType": "VariableDeclaration", - "scope": 1376, - "src": "3721:16:9", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1321, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3721:7:9", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1324, - "name": "newOwner", - "nodeType": "VariableDeclaration", - "scope": 1376, - "src": "3739:16:9", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1323, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3739:7:9", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "3701:55:9" - }, - "payable": false, - "returnParameters": { - "id": 1328, - "nodeType": "ParameterList", - "parameters": [], - "src": "3795:0:9" - }, - "scope": 1472, - "src": "3683:526:9", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 1399, - "nodeType": "Block", - "src": "4479:237:9", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1386, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1384, - "name": "_threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1378, - "src": "4566:10:9", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "BinaryOperation", - "operator": "<=", - "rightExpression": { - "argumentTypes": null, - "id": 1385, - "name": "ownerCount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1116, - "src": "4580:10:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4566:24:9", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1383, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 2601, - 2602 - ], - "referencedDeclaration": 2601, - "src": "4558:7:9", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1387, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4558:33:9", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1388, - "nodeType": "ExpressionStatement", - "src": "4558:33:9" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "id": 1392, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1390, - "name": "_threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1378, - "src": "4661:10:9", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "BinaryOperation", - "operator": ">=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 1391, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4675:1:9", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "src": "4661:15:9", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1389, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 2601, - 2602 - ], - "referencedDeclaration": 2601, - "src": "4653:7:9", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1393, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4653:24:9", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1394, - "nodeType": "ExpressionStatement", - "src": "4653:24:9" + "src": "4553:35:9" }, { "expression": { @@ -4016,12 +3812,524 @@ "lValueRequested": false, "leftHandSide": { "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1393, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1132, + "src": "4598:6:9", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + } + }, "id": 1395, + "indexExpression": { + "argumentTypes": null, + "id": 1394, + "name": "prevOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1347, + "src": "4605:9:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "4598:17:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1396, + "name": "newOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1351, + "src": "4618:8:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "4598:28:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1398, + "nodeType": "ExpressionStatement", + "src": "4598:28:9" + }, + { + "expression": { + "argumentTypes": null, + "id": 1403, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1399, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1132, + "src": "4636:6:9", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + } + }, + "id": 1401, + "indexExpression": { + "argumentTypes": null, + "id": 1400, + "name": "oldOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1349, + "src": "4643:8:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "4636:16:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 1402, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4655:1:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "4636:20:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1404, + "nodeType": "ExpressionStatement", + "src": "4636:20:9" + } + ] + }, + "documentation": "@dev Allows to swap/replace an owner from the Safe with another address.\n This can only be done via a Safe transaction.\n @param prevOwner Owner that pointed to the owner to be replaced in the linked list\n @param oldOwner Owner address to be replaced.\n @param newOwner New owner address.", + "id": 1406, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": null, + "id": 1354, + "modifierName": { + "argumentTypes": null, + "id": 1353, + "name": "authorized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1653, + "src": "4127:10:9", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "4127:10:9" + } + ], + "name": "swapOwner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1352, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1347, + "name": "prevOwner", + "nodeType": "VariableDeclaration", + "scope": 1406, + "src": "4049:17:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1346, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4049:7:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1349, + "name": "oldOwner", + "nodeType": "VariableDeclaration", + "scope": 1406, + "src": "4068:16:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1348, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4068:7:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1351, + "name": "newOwner", + "nodeType": "VariableDeclaration", + "scope": 1406, + "src": "4086:16:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1350, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4086:7:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4048:55:9" + }, + "payable": false, + "returnParameters": { + "id": 1355, + "nodeType": "ParameterList", + "parameters": [], + "src": "4142:0:9" + }, + "scope": 1504, + "src": "4030:633:9", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1431, + "nodeType": "Block", + "src": "4933:316:9", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1416, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1414, + "name": "_threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1408, + "src": "5020:10:9", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "id": 1415, + "name": "ownerCount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1134, + "src": "5034:10:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5020:24:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "5468726573686f6c642063616e6e6f7420657863656564206f776e657220636f756e74", + "id": 1417, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5046:37:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_63d26a9feb8568677e5c255c04e4da88e86a25137d5152a9a089790b7e710e86", + "typeString": "literal_string \"Threshold cannot exceed owner count\"" + }, + "value": "Threshold cannot exceed owner count" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_63d26a9feb8568677e5c255c04e4da88e86a25137d5152a9a089790b7e710e86", + "typeString": "literal_string \"Threshold cannot exceed owner count\"" + } + ], + "id": 1413, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2657, + 2658 + ], + "referencedDeclaration": 2658, + "src": "5012:7:9", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1418, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5012:72:9", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1419, + "nodeType": "ExpressionStatement", + "src": "5012:72:9" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 1423, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1421, + "name": "_threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1408, + "src": "5154:10:9", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 1422, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5168:1:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "5154:15:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "5468726573686f6c64206e6565647320746f2062652067726561746572207468616e2030", + "id": 1424, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5171:38:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_b995394ed6031392a784e6dd5e04285cca83077a8dc3873d2fb7fcb090297ab4", + "typeString": "literal_string \"Threshold needs to be greater than 0\"" + }, + "value": "Threshold needs to be greater than 0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_b995394ed6031392a784e6dd5e04285cca83077a8dc3873d2fb7fcb090297ab4", + "typeString": "literal_string \"Threshold needs to be greater than 0\"" + } + ], + "id": 1420, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2657, + 2658 + ], + "referencedDeclaration": 2658, + "src": "5146:7:9", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1425, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5146:64:9", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1426, + "nodeType": "ExpressionStatement", + "src": "5146:64:9" + }, + { + "expression": { + "argumentTypes": null, + "id": 1429, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1427, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1118, - "src": "4687:9:9", + "referencedDeclaration": 1136, + "src": "5220:9:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -4031,68 +4339,68 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1396, + "id": 1428, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1378, - "src": "4699:10:9", + "referencedDeclaration": 1408, + "src": "5232:10:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "src": "4687:22:9", + "src": "5220:22:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "id": 1398, + "id": 1430, "nodeType": "ExpressionStatement", - "src": "4687:22:9" + "src": "5220:22:9" } ] }, "documentation": "@dev Allows to update the number of required confirmations by Safe owners.\n This can only be done via a Safe transaction.\n @param _threshold New threshold.", - "id": 1400, + "id": 1432, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 1381, + "id": 1411, "modifierName": { "argumentTypes": null, - "id": 1380, + "id": 1410, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1618, - "src": "4464:10:9", + "referencedDeclaration": 1653, + "src": "4918:10:9", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "4464:10:9" + "src": "4918:10:9" } ], "name": "changeThreshold", "nodeType": "FunctionDefinition", "parameters": { - "id": 1379, + "id": 1409, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1378, + "id": 1408, "name": "_threshold", "nodeType": "VariableDeclaration", - "scope": 1400, - "src": "4423:16:9", + "scope": 1432, + "src": "4877:16:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4100,10 +4408,10 @@ "typeString": "uint8" }, "typeName": { - "id": 1377, + "id": 1407, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "4423:5:9", + "src": "4877:5:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -4113,50 +4421,50 @@ "visibility": "internal" } ], - "src": "4422:18:9" + "src": "4876:18:9" }, "payable": false, "returnParameters": { - "id": 1382, + "id": 1412, "nodeType": "ParameterList", "parameters": [], - "src": "4479:0:9" + "src": "4933:0:9" }, - "scope": 1472, - "src": "4398:318:9", + "scope": 1504, + "src": "4852:397:9", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1407, + "id": 1439, "nodeType": "Block", - "src": "4802:33:9", + "src": "5335:33:9", "statements": [ { "expression": { "argumentTypes": null, - "id": 1405, + "id": 1437, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1118, - "src": "4819:9:9", + "referencedDeclaration": 1136, + "src": "5352:9:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "functionReturnParameters": 1404, - "id": 1406, + "functionReturnParameters": 1436, + "id": 1438, "nodeType": "Return", - "src": "4812:16:9" + "src": "5345:16:9" } ] }, "documentation": null, - "id": 1408, + "id": 1440, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -4164,23 +4472,23 @@ "name": "getThreshold", "nodeType": "FunctionDefinition", "parameters": { - "id": 1401, + "id": 1433, "nodeType": "ParameterList", "parameters": [], - "src": "4743:2:9" + "src": "5276:2:9" }, "payable": false, "returnParameters": { - "id": 1404, + "id": 1436, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1403, + "id": 1435, "name": "", "nodeType": "VariableDeclaration", - "scope": 1408, - "src": "4791:5:9", + "scope": 1440, + "src": "5324:5:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4188,10 +4496,10 @@ "typeString": "uint8" }, "typeName": { - "id": 1402, + "id": 1434, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "4791:5:9", + "src": "5324:5:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -4201,19 +4509,19 @@ "visibility": "internal" } ], - "src": "4790:7:9" + "src": "5323:7:9" }, - "scope": 1472, - "src": "4722:113:9", + "scope": 1504, + "src": "5255:113:9", "stateMutability": "view", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1421, + "id": 1453, "nodeType": "Block", - "src": "4928:42:9", + "src": "5461:42:9", "statements": [ { "expression": { @@ -4222,7 +4530,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1419, + "id": 1451, "isConstant": false, "isLValue": false, "isPure": false, @@ -4231,26 +4539,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1415, + "id": 1447, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1114, - "src": "4945:6:9", + "referencedDeclaration": 1132, + "src": "5478:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1417, + "id": 1449, "indexExpression": { "argumentTypes": null, - "id": 1416, + "id": 1448, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1410, - "src": "4952:5:9", + "referencedDeclaration": 1442, + "src": "5485:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4261,7 +4569,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4945:13:9", + "src": "5478:13:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4272,14 +4580,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1418, + "id": 1450, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4962:1:9", + "src": "5495:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -4287,21 +4595,21 @@ }, "value": "0" }, - "src": "4945:18:9", + "src": "5478:18:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "functionReturnParameters": 1414, - "id": 1420, + "functionReturnParameters": 1446, + "id": 1452, "nodeType": "Return", - "src": "4938:25:9" + "src": "5471:25:9" } ] }, "documentation": null, - "id": 1422, + "id": 1454, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -4309,16 +4617,16 @@ "name": "isOwner", "nodeType": "FunctionDefinition", "parameters": { - "id": 1411, + "id": 1443, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1410, + "id": 1442, "name": "owner", "nodeType": "VariableDeclaration", - "scope": 1422, - "src": "4858:13:9", + "scope": 1454, + "src": "5391:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4326,10 +4634,10 @@ "typeString": "address" }, "typeName": { - "id": 1409, + "id": 1441, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4858:7:9", + "src": "5391:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4339,20 +4647,20 @@ "visibility": "internal" } ], - "src": "4857:15:9" + "src": "5390:15:9" }, "payable": false, "returnParameters": { - "id": 1414, + "id": 1446, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1413, + "id": 1445, "name": "", "nodeType": "VariableDeclaration", - "scope": 1422, - "src": "4918:4:9", + "scope": 1454, + "src": "5451:4:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4360,10 +4668,10 @@ "typeString": "bool" }, "typeName": { - "id": 1412, + "id": 1444, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "4918:4:9", + "src": "5451:4:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4373,32 +4681,32 @@ "visibility": "internal" } ], - "src": "4917:6:9" + "src": "5450:6:9" }, - "scope": 1472, - "src": "4841:129:9", + "scope": 1504, + "src": "5374:129:9", "stateMutability": "view", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1470, + "id": 1502, "nodeType": "Block", - "src": "5133:377:9", + "src": "5666:377:9", "statements": [ { "assignments": [ - 1431 + 1463 ], "declarations": [ { "constant": false, - "id": 1431, + "id": 1463, "name": "array", "nodeType": "VariableDeclaration", - "scope": 1471, - "src": "5143:22:9", + "scope": 1503, + "src": "5676:22:9", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -4407,19 +4715,19 @@ }, "typeName": { "baseType": { - "id": 1429, + "id": 1461, "name": "address", "nodeType": "ElementaryTypeName", - "src": "5143:7:9", + "src": "5676:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1430, + "id": 1462, "length": null, "nodeType": "ArrayTypeName", - "src": "5143:9:9", + "src": "5676:9:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" @@ -4429,18 +4737,18 @@ "visibility": "internal" } ], - "id": 1437, + "id": 1469, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 1435, + "id": 1467, "name": "ownerCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1116, - "src": "5182:10:9", + "referencedDeclaration": 1134, + "src": "5715:10:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4454,39 +4762,39 @@ "typeString": "uint256" } ], - "id": 1434, + "id": 1466, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "NewExpression", - "src": "5168:13:9", + "src": "5701:13:9", "typeDescriptions": { "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_$", "typeString": "function (uint256) pure returns (address[] memory)" }, "typeName": { "baseType": { - "id": 1432, + "id": 1464, "name": "address", "nodeType": "ElementaryTypeName", - "src": "5172:7:9", + "src": "5705:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1433, + "id": 1465, "length": null, "nodeType": "ArrayTypeName", - "src": "5172:9:9", + "src": "5705:9:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" } } }, - "id": 1436, + "id": 1468, "isConstant": false, "isLValue": false, "isPure": false, @@ -4494,27 +4802,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5168:25:9", + "src": "5701:25:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory", "typeString": "address[] memory" } }, "nodeType": "VariableDeclarationStatement", - "src": "5143:50:9" + "src": "5676:50:9" }, { "assignments": [ - 1439 + 1471 ], "declarations": [ { "constant": false, - "id": 1439, + "id": 1471, "name": "index", "nodeType": "VariableDeclaration", - "scope": 1471, - "src": "5237:13:9", + "scope": 1503, + "src": "5770:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4522,10 +4830,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1438, + "id": 1470, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "5237:7:9", + "src": "5770:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4535,18 +4843,18 @@ "visibility": "internal" } ], - "id": 1441, + "id": 1473, "initialValue": { "argumentTypes": null, "hexValue": "30", - "id": 1440, + "id": 1472, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "5253:1:9", + "src": "5786:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -4555,20 +4863,20 @@ "value": "0" }, "nodeType": "VariableDeclarationStatement", - "src": "5237:17:9" + "src": "5770:17:9" }, { "assignments": [ - 1443 + 1475 ], "declarations": [ { "constant": false, - "id": 1443, + "id": 1475, "name": "currentOwner", "nodeType": "VariableDeclaration", - "scope": 1471, - "src": "5264:20:9", + "scope": 1503, + "src": "5797:20:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4576,10 +4884,10 @@ "typeString": "address" }, "typeName": { - "id": 1442, + "id": 1474, "name": "address", "nodeType": "ElementaryTypeName", - "src": "5264:7:9", + "src": "5797:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4589,31 +4897,31 @@ "visibility": "internal" } ], - "id": 1447, + "id": 1479, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1444, + "id": 1476, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1114, - "src": "5287:6:9", + "referencedDeclaration": 1132, + "src": "5820:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1446, + "id": 1478, "indexExpression": { "argumentTypes": null, - "id": 1445, + "id": 1477, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1110, - "src": "5294:15:9", + "referencedDeclaration": 1128, + "src": "5827:15:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4624,25 +4932,25 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "5287:23:9", + "src": "5820:23:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", - "src": "5264:46:9" + "src": "5797:46:9" }, { "body": { - "id": 1466, + "id": 1498, "nodeType": "Block", - "src": "5359:123:9", + "src": "5892:123:9", "statements": [ { "expression": { "argumentTypes": null, - "id": 1455, + "id": 1487, "isConstant": false, "isLValue": false, "isPure": false, @@ -4651,26 +4959,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1451, + "id": 1483, "name": "array", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1431, - "src": "5373:5:9", + "referencedDeclaration": 1463, + "src": "5906:5:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 1453, + "id": 1485, "indexExpression": { "argumentTypes": null, - "id": 1452, + "id": 1484, "name": "index", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1439, - "src": "5379:5:9", + "referencedDeclaration": 1471, + "src": "5912:5:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4681,7 +4989,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "5373:12:9", + "src": "5906:12:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4691,43 +4999,43 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1454, + "id": 1486, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1443, - "src": "5388:12:9", + "referencedDeclaration": 1475, + "src": "5921:12:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "5373:27:9", + "src": "5906:27:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1456, + "id": 1488, "nodeType": "ExpressionStatement", - "src": "5373:27:9" + "src": "5906:27:9" }, { "expression": { "argumentTypes": null, - "id": 1461, + "id": 1493, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1457, + "id": 1489, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1443, - "src": "5414:12:9", + "referencedDeclaration": 1475, + "src": "5947:12:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4739,26 +5047,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1458, + "id": 1490, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1114, - "src": "5429:6:9", + "referencedDeclaration": 1132, + "src": "5962:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1460, + "id": 1492, "indexExpression": { "argumentTypes": null, - "id": 1459, + "id": 1491, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1443, - "src": "5436:12:9", + "referencedDeclaration": 1475, + "src": "5969:12:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4769,26 +5077,26 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "5429:20:9", + "src": "5962:20:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "5414:35:9", + "src": "5947:35:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1462, + "id": 1494, "nodeType": "ExpressionStatement", - "src": "5414:35:9" + "src": "5947:35:9" }, { "expression": { "argumentTypes": null, - "id": 1464, + "id": 1496, "isConstant": false, "isLValue": false, "isPure": false, @@ -4796,15 +5104,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "5463:8:9", + "src": "5996:8:9", "subExpression": { "argumentTypes": null, - "id": 1463, + "id": 1495, "name": "index", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1439, - "src": "5463:5:9", + "referencedDeclaration": 1471, + "src": "5996:5:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4815,9 +5123,9 @@ "typeString": "uint256" } }, - "id": 1465, + "id": 1497, "nodeType": "ExpressionStatement", - "src": "5463:8:9" + "src": "5996:8:9" } ] }, @@ -4827,19 +5135,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1450, + "id": 1482, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1448, + "id": 1480, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1443, - "src": "5326:12:9", + "referencedDeclaration": 1475, + "src": "5859:12:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4849,50 +5157,50 @@ "operator": "!=", "rightExpression": { "argumentTypes": null, - "id": 1449, + "id": 1481, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1110, - "src": "5342:15:9", + "referencedDeclaration": 1128, + "src": "5875:15:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "5326:31:9", + "src": "5859:31:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 1467, + "id": 1499, "nodeType": "WhileStatement", - "src": "5320:162:9" + "src": "5853:162:9" }, { "expression": { "argumentTypes": null, - "id": 1468, + "id": 1500, "name": "array", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1431, - "src": "5498:5:9", + "referencedDeclaration": 1463, + "src": "6031:5:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "functionReturnParameters": 1427, - "id": 1469, + "functionReturnParameters": 1459, + "id": 1501, "nodeType": "Return", - "src": "5491:12:9" + "src": "6024:12:9" } ] }, "documentation": "@dev Returns array of owners.\n @return Array of Safe owners.", - "id": 1471, + "id": 1503, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -4900,23 +5208,23 @@ "name": "getOwners", "nodeType": "FunctionDefinition", "parameters": { - "id": 1423, + "id": 1455, "nodeType": "ParameterList", "parameters": [], - "src": "5070:2:9" + "src": "5603:2:9" }, "payable": false, "returnParameters": { - "id": 1427, + "id": 1459, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1426, + "id": 1458, "name": "", "nodeType": "VariableDeclaration", - "scope": 1471, - "src": "5118:9:9", + "scope": 1503, + "src": "5651:9:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4925,19 +5233,19 @@ }, "typeName": { "baseType": { - "id": 1424, + "id": 1456, "name": "address", "nodeType": "ElementaryTypeName", - "src": "5118:7:9", + "src": "5651:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1425, + "id": 1457, "length": null, "nodeType": "ArrayTypeName", - "src": "5118:9:9", + "src": "5651:9:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" @@ -4947,33 +5255,33 @@ "visibility": "internal" } ], - "src": "5117:11:9" + "src": "5650:11:9" }, - "scope": 1472, - "src": "5052:458:9", + "scope": 1504, + "src": "5585:458:9", "stateMutability": "view", "superFunction": null, "visibility": "public" } ], - "scope": 1473, - "src": "240:5272:9" + "scope": 1505, + "src": "240:5805:9" } ], - "src": "0:5513:9" + "src": "0:6046:9" }, "legacyAST": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/OwnerManager.sol", "exportedSymbols": { "OwnerManager": [ - 1472 + 1504 ] }, - "id": 1473, + "id": 1505, "nodeType": "SourceUnit", "nodes": [ { - "id": 1102, + "id": 1120, "literals": [ "solidity", "0.4", @@ -4985,10 +5293,10 @@ { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/SelfAuthorized.sol", "file": "./SelfAuthorized.sol", - "id": 1103, + "id": 1121, "nodeType": "ImportDirective", - "scope": 1473, - "sourceUnit": 1620, + "scope": 1505, + "sourceUnit": 1655, "src": "24:30:9", "symbolAliases": [], "unitAlias": "" @@ -4999,41 +5307,41 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 1104, + "id": 1122, "name": "SelfAuthorized", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1619, + "referencedDeclaration": 1654, "src": "265:14:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_SelfAuthorized_$1619", + "typeIdentifier": "t_contract$_SelfAuthorized_$1654", "typeString": "contract SelfAuthorized" } }, - "id": 1105, + "id": 1123, "nodeType": "InheritanceSpecifier", "src": "265:14:9" } ], "contractDependencies": [ - 1619 + 1654 ], "contractKind": "contract", "documentation": "@title OwnerManager - Manages a set of owners and a threshold to perform actions.\n @author Stefan George - \n @author Richard Meissner - ", "fullyImplemented": true, - "id": 1472, + "id": 1504, "linearizedBaseContracts": [ - 1472, - 1619 + 1504, + 1654 ], "name": "OwnerManager", "nodeType": "ContractDefinition", "nodes": [ { "constant": true, - "id": 1110, + "id": 1128, "name": "SENTINEL_OWNERS", "nodeType": "VariableDeclaration", - "scope": 1472, + "scope": 1504, "src": "287:54:9", "stateVariable": true, "storageLocation": "default", @@ -5042,7 +5350,7 @@ "typeString": "address" }, "typeName": { - "id": 1106, + "id": 1124, "name": "address", "nodeType": "ElementaryTypeName", "src": "287:7:9", @@ -5057,7 +5365,7 @@ { "argumentTypes": null, "hexValue": "307831", - "id": 1108, + "id": 1126, "isConstant": false, "isLValue": false, "isPure": true, @@ -5080,7 +5388,7 @@ "typeString": "int_const 1" } ], - "id": 1107, + "id": 1125, "isConstant": false, "isLValue": false, "isPure": true, @@ -5093,7 +5401,7 @@ }, "typeName": "address" }, - "id": 1109, + "id": 1127, "isConstant": false, "isLValue": false, "isPure": true, @@ -5111,10 +5419,10 @@ }, { "constant": false, - "id": 1114, + "id": 1132, "name": "owners", "nodeType": "VariableDeclaration", - "scope": 1472, + "scope": 1504, "src": "348:43:9", "stateVariable": true, "storageLocation": "default", @@ -5123,9 +5431,9 @@ "typeString": "mapping(address => address)" }, "typeName": { - "id": 1113, + "id": 1131, "keyType": { - "id": 1111, + "id": 1129, "name": "address", "nodeType": "ElementaryTypeName", "src": "356:7:9", @@ -5141,7 +5449,7 @@ "typeString": "mapping(address => address)" }, "valueType": { - "id": 1112, + "id": 1130, "name": "address", "nodeType": "ElementaryTypeName", "src": "367:7:9", @@ -5156,10 +5464,10 @@ }, { "constant": false, - "id": 1116, + "id": 1134, "name": "ownerCount", "nodeType": "VariableDeclaration", - "scope": 1472, + "scope": 1504, "src": "397:18:9", "stateVariable": true, "storageLocation": "default", @@ -5168,7 +5476,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1115, + "id": 1133, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "397:7:9", @@ -5182,10 +5490,10 @@ }, { "constant": false, - "id": 1118, + "id": 1136, "name": "threshold", "nodeType": "VariableDeclaration", - "scope": 1472, + "scope": 1504, "src": "421:24:9", "stateVariable": true, "storageLocation": "default", @@ -5194,7 +5502,7 @@ "typeString": "uint8" }, "typeName": { - "id": 1117, + "id": 1135, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "421:5:9", @@ -5208,9 +5516,9 @@ }, { "body": { - "id": 1211, + "id": 1234, "nodeType": "Block", - "src": "720:946:9", + "src": "720:1129:9", "statements": [ { "expression": { @@ -5222,18 +5530,18 @@ "typeIdentifier": "t_uint8", "typeString": "uint8" }, - "id": 1129, + "id": 1147, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1127, + "id": 1145, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1118, + "referencedDeclaration": 1136, "src": "862:9:9", "typeDescriptions": { "typeIdentifier": "t_uint8", @@ -5245,7 +5553,7 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1128, + "id": 1146, "isConstant": false, "isLValue": false, "isPure": true, @@ -5265,6 +5573,24 @@ "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "4f776e657273206861766520616c7265616479206265656e207365747570", + "id": 1148, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "878:32:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_9a45ae898fbe2bd07a0b33b5a6c421f76198e9deb66843b8d827b0b9e4a16f86", + "typeString": "literal_string \"Owners have already been setup\"" + }, + "value": "Owners have already been setup" } ], "expression": { @@ -5272,23 +5598,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_9a45ae898fbe2bd07a0b33b5a6c421f76198e9deb66843b8d827b0b9e4a16f86", + "typeString": "literal_string \"Owners have already been setup\"" } ], - "id": 1126, + "id": 1144, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, + "referencedDeclaration": 2658, "src": "854:7:9", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 1130, + "id": 1149, "isConstant": false, "isLValue": false, "isPure": false, @@ -5296,15 +5626,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "854:23:9", + "src": "854:57:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1131, + "id": 1150, "nodeType": "ExpressionStatement", - "src": "854:23:9" + "src": "854:57:9" }, { "expression": { @@ -5316,19 +5646,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1136, + "id": 1155, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1133, + "id": 1152, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1123, - "src": "970:10:9", + "referencedDeclaration": 1141, + "src": "1004:10:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -5340,18 +5670,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1134, + "id": 1153, "name": "_owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1121, - "src": "984:7:9", + "referencedDeclaration": 1139, + "src": "1018:7:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 1135, + "id": 1154, "isConstant": false, "isLValue": false, "isPure": false, @@ -5359,17 +5689,35 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "984:14:9", + "src": "1018:14:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "970:28:9", + "src": "1004:28:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "5468726573686f6c642063616e6e6f7420657863656564206f776e657220636f756e74", + "id": 1156, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1034:37:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_63d26a9feb8568677e5c255c04e4da88e86a25137d5152a9a089790b7e710e86", + "typeString": "literal_string \"Threshold cannot exceed owner count\"" + }, + "value": "Threshold cannot exceed owner count" } ], "expression": { @@ -5377,23 +5725,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_63d26a9feb8568677e5c255c04e4da88e86a25137d5152a9a089790b7e710e86", + "typeString": "literal_string \"Threshold cannot exceed owner count\"" } ], - "id": 1132, + "id": 1151, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "962:7:9", + "referencedDeclaration": 2658, + "src": "996:7:9", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 1137, + "id": 1157, "isConstant": false, "isLValue": false, "isPure": false, @@ -5401,15 +5753,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "962:37:9", + "src": "996:76:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1138, + "id": 1158, "nodeType": "ExpressionStatement", - "src": "962:37:9" + "src": "996:76:9" }, { "expression": { @@ -5421,19 +5773,19 @@ "typeIdentifier": "t_uint8", "typeString": "uint8" }, - "id": 1142, + "id": 1162, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1140, + "id": 1160, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1123, - "src": "1069:10:9", + "referencedDeclaration": 1141, + "src": "1142:10:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -5444,14 +5796,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "31", - "id": 1141, + "id": 1161, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1083:1:9", + "src": "1156:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -5459,11 +5811,29 @@ }, "value": "1" }, - "src": "1069:15:9", + "src": "1142:15:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "5468726573686f6c64206e6565647320746f2062652067726561746572207468616e2030", + "id": 1163, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1159:38:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_b995394ed6031392a784e6dd5e04285cca83077a8dc3873d2fb7fcb090297ab4", + "typeString": "literal_string \"Threshold needs to be greater than 0\"" + }, + "value": "Threshold needs to be greater than 0" } ], "expression": { @@ -5471,23 +5841,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_b995394ed6031392a784e6dd5e04285cca83077a8dc3873d2fb7fcb090297ab4", + "typeString": "literal_string \"Threshold needs to be greater than 0\"" } ], - "id": 1139, + "id": 1159, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "1061:7:9", + "referencedDeclaration": 2658, + "src": "1134:7:9", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 1143, + "id": 1164, "isConstant": false, "isLValue": false, "isPure": false, @@ -5495,28 +5869,28 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1061:24:9", + "src": "1134:64:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1144, + "id": 1165, "nodeType": "ExpressionStatement", - "src": "1061:24:9" + "src": "1134:64:9" }, { "assignments": [ - 1146 + 1167 ], "declarations": [ { "constant": false, - "id": 1146, + "id": 1167, "name": "currentOwner", "nodeType": "VariableDeclaration", - "scope": 1212, - "src": "1132:20:9", + "scope": 1235, + "src": "1245:20:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5524,10 +5898,10 @@ "typeString": "address" }, "typeName": { - "id": 1145, + "id": 1166, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1132:7:9", + "src": "1245:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5537,41 +5911,41 @@ "visibility": "internal" } ], - "id": 1148, + "id": 1169, "initialValue": { "argumentTypes": null, - "id": 1147, + "id": 1168, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1110, - "src": "1155:15:9", + "referencedDeclaration": 1128, + "src": "1268:15:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", - "src": "1132:38:9" + "src": "1245:38:9" }, { "body": { - "id": 1194, + "id": 1217, "nodeType": "Block", - "src": "1225:318:9", + "src": "1338:388:9", "statements": [ { "assignments": [ - 1161 + 1182 ], "declarations": [ { "constant": false, - "id": 1161, + "id": 1182, "name": "owner", "nodeType": "VariableDeclaration", - "scope": 1212, - "src": "1284:13:9", + "scope": 1235, + "src": "1397:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5579,10 +5953,10 @@ "typeString": "address" }, "typeName": { - "id": 1160, + "id": 1181, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1284:7:9", + "src": "1397:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5592,31 +5966,31 @@ "visibility": "internal" } ], - "id": 1165, + "id": 1186, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1162, + "id": 1183, "name": "_owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1121, - "src": "1300:7:9", + "referencedDeclaration": 1139, + "src": "1413:7:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 1164, + "id": 1185, "indexExpression": { "argumentTypes": null, - "id": 1163, + "id": 1184, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1150, - "src": "1308:1:9", + "referencedDeclaration": 1171, + "src": "1421:1:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5627,14 +6001,14 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1300:10:9", + "src": "1413:10:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", - "src": "1284:26:9" + "src": "1397:26:9" }, { "expression": { @@ -5646,7 +6020,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 1173, + "id": 1194, "isConstant": false, "isLValue": false, "isPure": false, @@ -5657,19 +6031,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1169, + "id": 1190, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1167, + "id": 1188, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1161, - "src": "1332:5:9", + "referencedDeclaration": 1182, + "src": "1445:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5680,14 +6054,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1168, + "id": 1189, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1341:1:9", + "src": "1454:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -5695,7 +6069,7 @@ }, "value": "0" }, - "src": "1332:10:9", + "src": "1445:10:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5709,19 +6083,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1172, + "id": 1193, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1170, + "id": 1191, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1161, - "src": "1346:5:9", + "referencedDeclaration": 1182, + "src": "1459:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5731,28 +6105,46 @@ "operator": "!=", "rightExpression": { "argumentTypes": null, - "id": 1171, + "id": 1192, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1110, - "src": "1355:15:9", + "referencedDeclaration": 1128, + "src": "1468:15:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "1346:24:9", + "src": "1459:24:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "1332:38:9", + "src": "1445:38:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "496e76616c6964206f776e657220616464726573732070726f7669646564", + "id": 1195, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1485:32:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_21a1cd38818adb750881fbf07c26ce7223dde608fdd9dadd31a0d41afeca2094", + "typeString": "literal_string \"Invalid owner address provided\"" + }, + "value": "Invalid owner address provided" } ], "expression": { @@ -5760,23 +6152,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_21a1cd38818adb750881fbf07c26ce7223dde608fdd9dadd31a0d41afeca2094", + "typeString": "literal_string \"Invalid owner address provided\"" } ], - "id": 1166, + "id": 1187, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "1324:7:9", + "referencedDeclaration": 2658, + "src": "1437:7:9", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 1174, + "id": 1196, "isConstant": false, "isLValue": false, "isPure": false, @@ -5784,15 +6180,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1324:47:9", + "src": "1437:81:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1175, + "id": 1197, "nodeType": "ExpressionStatement", - "src": "1324:47:9" + "src": "1437:81:9" }, { "expression": { @@ -5804,7 +6200,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1181, + "id": 1203, "isConstant": false, "isLValue": false, "isPure": false, @@ -5813,26 +6209,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1177, + "id": 1199, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1114, - "src": "1437:6:9", + "referencedDeclaration": 1132, + "src": "1584:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1179, + "id": 1201, "indexExpression": { "argumentTypes": null, - "id": 1178, + "id": 1200, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1161, - "src": "1444:5:9", + "referencedDeclaration": 1182, + "src": "1591:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5843,7 +6239,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1437:13:9", + "src": "1584:13:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5854,14 +6250,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1180, + "id": 1202, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1454:1:9", + "src": "1601:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -5869,11 +6265,29 @@ }, "value": "0" }, - "src": "1437:18:9", + "src": "1584:18:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "4475706c6963617465206f776e657220616464726573732070726f7669646564", + "id": 1204, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1604:34:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_a803fa289679098e38a7f1f6fe43056918c5ab5af07441cb8db77b949c165ca1", + "typeString": "literal_string \"Duplicate owner address provided\"" + }, + "value": "Duplicate owner address provided" } ], "expression": { @@ -5881,23 +6295,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_a803fa289679098e38a7f1f6fe43056918c5ab5af07441cb8db77b949c165ca1", + "typeString": "literal_string \"Duplicate owner address provided\"" } ], - "id": 1176, + "id": 1198, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "1429:7:9", + "referencedDeclaration": 2658, + "src": "1576:7:9", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 1182, + "id": 1205, "isConstant": false, "isLValue": false, "isPure": false, @@ -5905,20 +6323,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1429:27:9", + "src": "1576:63:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1183, + "id": 1206, "nodeType": "ExpressionStatement", - "src": "1429:27:9" + "src": "1576:63:9" }, { "expression": { "argumentTypes": null, - "id": 1188, + "id": 1211, "isConstant": false, "isLValue": false, "isPure": false, @@ -5927,26 +6345,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1184, + "id": 1207, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1114, - "src": "1470:6:9", + "referencedDeclaration": 1132, + "src": "1653:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1186, + "id": 1209, "indexExpression": { "argumentTypes": null, - "id": 1185, + "id": 1208, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1146, - "src": "1477:12:9", + "referencedDeclaration": 1167, + "src": "1660:12:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5957,7 +6375,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1470:20:9", + "src": "1653:20:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5967,43 +6385,43 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1187, + "id": 1210, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1161, - "src": "1493:5:9", + "referencedDeclaration": 1182, + "src": "1676:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "1470:28:9", + "src": "1653:28:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1189, + "id": 1212, "nodeType": "ExpressionStatement", - "src": "1470:28:9" + "src": "1653:28:9" }, { "expression": { "argumentTypes": null, - "id": 1192, + "id": 1215, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1190, + "id": 1213, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1146, - "src": "1512:12:9", + "referencedDeclaration": 1167, + "src": "1695:12:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6013,26 +6431,26 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1191, + "id": 1214, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1161, - "src": "1527:5:9", + "referencedDeclaration": 1182, + "src": "1710:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "1512:20:9", + "src": "1695:20:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1193, + "id": 1216, "nodeType": "ExpressionStatement", - "src": "1512:20:9" + "src": "1695:20:9" } ] }, @@ -6042,19 +6460,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1156, + "id": 1177, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1153, + "id": 1174, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1150, - "src": "1200:1:9", + "referencedDeclaration": 1171, + "src": "1313:1:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6066,18 +6484,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1154, + "id": 1175, "name": "_owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1121, - "src": "1204:7:9", + "referencedDeclaration": 1139, + "src": "1317:7:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 1155, + "id": 1176, "isConstant": false, "isLValue": false, "isPure": false, @@ -6085,31 +6503,31 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1204:14:9", + "src": "1317:14:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1200:18:9", + "src": "1313:18:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 1195, + "id": 1218, "initializationExpression": { "assignments": [ - 1150 + 1171 ], "declarations": [ { "constant": false, - "id": 1150, + "id": 1171, "name": "i", "nodeType": "VariableDeclaration", - "scope": 1212, - "src": "1185:9:9", + "scope": 1235, + "src": "1298:9:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6117,10 +6535,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1149, + "id": 1170, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1185:7:9", + "src": "1298:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6130,18 +6548,18 @@ "visibility": "internal" } ], - "id": 1152, + "id": 1173, "initialValue": { "argumentTypes": null, "hexValue": "30", - "id": 1151, + "id": 1172, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1197:1:9", + "src": "1310:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -6150,12 +6568,12 @@ "value": "0" }, "nodeType": "VariableDeclarationStatement", - "src": "1185:13:9" + "src": "1298:13:9" }, "loopExpression": { "expression": { "argumentTypes": null, - "id": 1158, + "id": 1179, "isConstant": false, "isLValue": false, "isPure": false, @@ -6163,15 +6581,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "1220:3:9", + "src": "1333:3:9", "subExpression": { "argumentTypes": null, - "id": 1157, + "id": 1178, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1150, - "src": "1220:1:9", + "referencedDeclaration": 1171, + "src": "1333:1:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6182,17 +6600,17 @@ "typeString": "uint256" } }, - "id": 1159, + "id": 1180, "nodeType": "ExpressionStatement", - "src": "1220:3:9" + "src": "1333:3:9" }, "nodeType": "ForStatement", - "src": "1180:363:9" + "src": "1293:433:9" }, { "expression": { "argumentTypes": null, - "id": 1200, + "id": 1223, "isConstant": false, "isLValue": false, "isPure": false, @@ -6201,26 +6619,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1196, + "id": 1219, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1114, - "src": "1552:6:9", + "referencedDeclaration": 1132, + "src": "1735:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1198, + "id": 1221, "indexExpression": { "argumentTypes": null, - "id": 1197, + "id": 1220, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1146, - "src": "1559:12:9", + "referencedDeclaration": 1167, + "src": "1742:12:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6231,7 +6649,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1552:20:9", + "src": "1735:20:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6241,43 +6659,43 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1199, + "id": 1222, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1110, - "src": "1575:15:9", + "referencedDeclaration": 1128, + "src": "1758:15:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "1552:38:9", + "src": "1735:38:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1201, + "id": 1224, "nodeType": "ExpressionStatement", - "src": "1552:38:9" + "src": "1735:38:9" }, { "expression": { "argumentTypes": null, - "id": 1205, + "id": 1228, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1202, + "id": 1225, "name": "ownerCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1116, - "src": "1600:10:9", + "referencedDeclaration": 1134, + "src": "1783:10:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6289,18 +6707,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1203, + "id": 1226, "name": "_owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1121, - "src": "1613:7:9", + "referencedDeclaration": 1139, + "src": "1796:7:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 1204, + "id": 1227, "isConstant": false, "isLValue": false, "isPure": false, @@ -6308,38 +6726,38 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1613:14:9", + "src": "1796:14:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1600:27:9", + "src": "1783:27:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 1206, + "id": 1229, "nodeType": "ExpressionStatement", - "src": "1600:27:9" + "src": "1783:27:9" }, { "expression": { "argumentTypes": null, - "id": 1209, + "id": 1232, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1207, + "id": 1230, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1118, - "src": "1637:9:9", + "referencedDeclaration": 1136, + "src": "1820:9:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -6349,31 +6767,31 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1208, + "id": 1231, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1123, - "src": "1649:10:9", + "referencedDeclaration": 1141, + "src": "1832:10:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "src": "1637:22:9", + "src": "1820:22:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "id": 1210, + "id": 1233, "nodeType": "ExpressionStatement", - "src": "1637:22:9" + "src": "1820:22:9" } ] }, "documentation": "@dev Setup function sets initial storage of contract.\n @param _owners List of Safe owners.\n @param _threshold Number of required confirmations for a Safe transaction.", - "id": 1212, + "id": 1235, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -6381,15 +6799,15 @@ "name": "setupOwners", "nodeType": "FunctionDefinition", "parameters": { - "id": 1124, + "id": 1142, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1121, + "id": 1139, "name": "_owners", "nodeType": "VariableDeclaration", - "scope": 1212, + "scope": 1235, "src": "662:17:9", "stateVariable": false, "storageLocation": "default", @@ -6399,7 +6817,7 @@ }, "typeName": { "baseType": { - "id": 1119, + "id": 1137, "name": "address", "nodeType": "ElementaryTypeName", "src": "662:7:9", @@ -6408,7 +6826,7 @@ "typeString": "address" } }, - "id": 1120, + "id": 1138, "length": null, "nodeType": "ArrayTypeName", "src": "662:9:9", @@ -6422,10 +6840,10 @@ }, { "constant": false, - "id": 1123, + "id": 1141, "name": "_threshold", "nodeType": "VariableDeclaration", - "scope": 1212, + "scope": 1235, "src": "681:16:9", "stateVariable": false, "storageLocation": "default", @@ -6434,7 +6852,7 @@ "typeString": "uint8" }, "typeName": { - "id": 1122, + "id": 1140, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "681:5:9", @@ -6451,22 +6869,22 @@ }, "payable": false, "returnParameters": { - "id": 1125, + "id": 1143, "nodeType": "ParameterList", "parameters": [], "src": "720:0:9" }, - "scope": 1472, - "src": "641:1025:9", + "scope": 1504, + "src": "641:1208:9", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 1264, + "id": 1289, "nodeType": "Block", - "src": "2008:426:9", + "src": "2191:491:9", "statements": [ { "expression": { @@ -6478,7 +6896,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 1228, + "id": 1251, "isConstant": false, "isLValue": false, "isPure": false, @@ -6489,19 +6907,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1224, + "id": 1247, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1222, + "id": 1245, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1214, - "src": "2067:5:9", + "referencedDeclaration": 1237, + "src": "2250:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6512,14 +6930,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1223, + "id": 1246, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2076:1:9", + "src": "2259:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -6527,7 +6945,7 @@ }, "value": "0" }, - "src": "2067:10:9", + "src": "2250:10:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6541,19 +6959,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1227, + "id": 1250, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1225, + "id": 1248, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1214, - "src": "2081:5:9", + "referencedDeclaration": 1237, + "src": "2264:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6563,28 +6981,46 @@ "operator": "!=", "rightExpression": { "argumentTypes": null, - "id": 1226, + "id": 1249, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1110, - "src": "2090:15:9", + "referencedDeclaration": 1128, + "src": "2273:15:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2081:24:9", + "src": "2264:24:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "2067:38:9", + "src": "2250:38:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "496e76616c6964206f776e657220616464726573732070726f7669646564", + "id": 1252, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2290:32:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_21a1cd38818adb750881fbf07c26ce7223dde608fdd9dadd31a0d41afeca2094", + "typeString": "literal_string \"Invalid owner address provided\"" + }, + "value": "Invalid owner address provided" } ], "expression": { @@ -6592,23 +7028,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_21a1cd38818adb750881fbf07c26ce7223dde608fdd9dadd31a0d41afeca2094", + "typeString": "literal_string \"Invalid owner address provided\"" } ], - "id": 1221, + "id": 1244, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "2059:7:9", + "referencedDeclaration": 2658, + "src": "2242:7:9", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 1229, + "id": 1253, "isConstant": false, "isLValue": false, "isPure": false, @@ -6616,15 +7056,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2059:47:9", + "src": "2242:81:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1230, + "id": 1254, "nodeType": "ExpressionStatement", - "src": "2059:47:9" + "src": "2242:81:9" }, { "expression": { @@ -6636,7 +7076,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1236, + "id": 1260, "isConstant": false, "isLValue": false, "isPure": false, @@ -6645,26 +7085,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1232, + "id": 1256, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1114, - "src": "2164:6:9", + "referencedDeclaration": 1132, + "src": "2381:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1234, + "id": 1258, "indexExpression": { "argumentTypes": null, - "id": 1233, + "id": 1257, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1214, - "src": "2171:5:9", + "referencedDeclaration": 1237, + "src": "2388:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6675,7 +7115,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2164:13:9", + "src": "2381:13:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6686,14 +7126,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1235, + "id": 1259, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2181:1:9", + "src": "2398:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -6701,11 +7141,29 @@ }, "value": "0" }, - "src": "2164:18:9", + "src": "2381:18:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "4164647265737320697320616c726561647920616e206f776e6572", + "id": 1261, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2401:29:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_9d461d71e19b25cd406798d062d7e61f961ad52541d3077a543e857810427d47", + "typeString": "literal_string \"Address is already an owner\"" + }, + "value": "Address is already an owner" } ], "expression": { @@ -6713,23 +7171,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_9d461d71e19b25cd406798d062d7e61f961ad52541d3077a543e857810427d47", + "typeString": "literal_string \"Address is already an owner\"" } ], - "id": 1231, + "id": 1255, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "2156:7:9", + "referencedDeclaration": 2658, + "src": "2373:7:9", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 1237, + "id": 1262, "isConstant": false, "isLValue": false, "isPure": false, @@ -6737,20 +7199,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2156:27:9", + "src": "2373:58:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1238, + "id": 1263, "nodeType": "ExpressionStatement", - "src": "2156:27:9" + "src": "2373:58:9" }, { "expression": { "argumentTypes": null, - "id": 1245, + "id": 1270, "isConstant": false, "isLValue": false, "isPure": false, @@ -6759,26 +7221,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1239, + "id": 1264, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1114, - "src": "2193:6:9", + "referencedDeclaration": 1132, + "src": "2441:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1241, + "id": 1266, "indexExpression": { "argumentTypes": null, - "id": 1240, + "id": 1265, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1214, - "src": "2200:5:9", + "referencedDeclaration": 1237, + "src": "2448:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6789,7 +7251,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "2193:13:9", + "src": "2441:13:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6801,26 +7263,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1242, + "id": 1267, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1114, - "src": "2209:6:9", + "referencedDeclaration": 1132, + "src": "2457:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1244, + "id": 1269, "indexExpression": { "argumentTypes": null, - "id": 1243, + "id": 1268, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1110, - "src": "2216:15:9", + "referencedDeclaration": 1128, + "src": "2464:15:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6831,26 +7293,26 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2209:23:9", + "src": "2457:23:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2193:39:9", + "src": "2441:39:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1246, + "id": 1271, "nodeType": "ExpressionStatement", - "src": "2193:39:9" + "src": "2441:39:9" }, { "expression": { "argumentTypes": null, - "id": 1251, + "id": 1276, "isConstant": false, "isLValue": false, "isPure": false, @@ -6859,26 +7321,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1247, + "id": 1272, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1114, - "src": "2242:6:9", + "referencedDeclaration": 1132, + "src": "2490:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1249, + "id": 1274, "indexExpression": { "argumentTypes": null, - "id": 1248, + "id": 1273, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1110, - "src": "2249:15:9", + "referencedDeclaration": 1128, + "src": "2497:15:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6889,7 +7351,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "2242:23:9", + "src": "2490:23:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6899,31 +7361,31 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1250, + "id": 1275, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1214, - "src": "2268:5:9", + "referencedDeclaration": 1237, + "src": "2516:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2242:31:9", + "src": "2490:31:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1252, + "id": 1277, "nodeType": "ExpressionStatement", - "src": "2242:31:9" + "src": "2490:31:9" }, { "expression": { "argumentTypes": null, - "id": 1254, + "id": 1279, "isConstant": false, "isLValue": false, "isPure": false, @@ -6931,15 +7393,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "2283:12:9", + "src": "2531:12:9", "subExpression": { "argumentTypes": null, - "id": 1253, + "id": 1278, "name": "ownerCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1116, - "src": "2283:10:9", + "referencedDeclaration": 1134, + "src": "2531:10:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6950,9 +7412,9 @@ "typeString": "uint256" } }, - "id": 1255, + "id": 1280, "nodeType": "ExpressionStatement", - "src": "2283:12:9" + "src": "2531:12:9" }, { "condition": { @@ -6961,19 +7423,19 @@ "typeIdentifier": "t_uint8", "typeString": "uint8" }, - "id": 1258, + "id": 1283, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1256, + "id": 1281, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1118, - "src": "2363:9:9", + "referencedDeclaration": 1136, + "src": "2611:9:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -6983,39 +7445,39 @@ "operator": "!=", "rightExpression": { "argumentTypes": null, - "id": 1257, + "id": 1282, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1216, - "src": "2376:10:9", + "referencedDeclaration": 1239, + "src": "2624:10:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "src": "2363:23:9", + "src": "2611:23:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 1263, + "id": 1288, "nodeType": "IfStatement", - "src": "2359:68:9", + "src": "2607:68:9", "trueBody": { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 1260, + "id": 1285, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1216, - "src": "2416:10:9", + "referencedDeclaration": 1239, + "src": "2664:10:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -7029,18 +7491,18 @@ "typeString": "uint8" } ], - "id": 1259, + "id": 1284, "name": "changeThreshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1400, - "src": "2400:15:9", + "referencedDeclaration": 1432, + "src": "2648:15:9", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_uint8_$returns$__$", "typeString": "function (uint8)" } }, - "id": 1261, + "id": 1286, "isConstant": false, "isLValue": false, "isPure": false, @@ -7048,58 +7510,58 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2400:27:9", + "src": "2648:27:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1262, + "id": 1287, "nodeType": "ExpressionStatement", - "src": "2400:27:9" + "src": "2648:27:9" } } ] }, "documentation": "@dev Allows to add a new owner to the Safe and update the threshold at the same time.\n This can only be done via a Safe transaction.\n @param owner New owner address.\n @param _threshold New threshold.", - "id": 1265, + "id": 1290, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 1219, + "id": 1242, "modifierName": { "argumentTypes": null, - "id": 1218, + "id": 1241, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1618, - "src": "1993:10:9", + "referencedDeclaration": 1653, + "src": "2176:10:9", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "1993:10:9" + "src": "2176:10:9" } ], "name": "addOwnerWithThreshold", "nodeType": "FunctionDefinition", "parameters": { - "id": 1217, + "id": 1240, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1214, + "id": 1237, "name": "owner", "nodeType": "VariableDeclaration", - "scope": 1265, - "src": "1937:13:9", + "scope": 1290, + "src": "2120:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7107,10 +7569,10 @@ "typeString": "address" }, "typeName": { - "id": 1213, + "id": 1236, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1937:7:9", + "src": "2120:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7121,11 +7583,11 @@ }, { "constant": false, - "id": 1216, + "id": 1239, "name": "_threshold", "nodeType": "VariableDeclaration", - "scope": 1265, - "src": "1952:16:9", + "scope": 1290, + "src": "2135:16:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7133,10 +7595,10 @@ "typeString": "uint8" }, "typeName": { - "id": 1215, + "id": 1238, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "1952:5:9", + "src": "2135:5:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -7146,26 +7608,26 @@ "visibility": "internal" } ], - "src": "1936:33:9" + "src": "2119:33:9" }, "payable": false, "returnParameters": { - "id": 1220, + "id": 1243, "nodeType": "ParameterList", "parameters": [], - "src": "2008:0:9" + "src": "2191:0:9" }, - "scope": 1472, - "src": "1906:528:9", + "scope": 1504, + "src": "2089:593:9", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1317, + "id": 1344, "nodeType": "Block", - "src": "2887:462:9", + "src": "3135:561:9", "statements": [ { "expression": { @@ -7177,7 +7639,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1281, + "id": 1306, "isConstant": false, "isLValue": false, "isPure": false, @@ -7188,19 +7650,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1279, + "id": 1304, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1277, + "id": 1302, "name": "ownerCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1116, - "src": "2982:10:9", + "referencedDeclaration": 1134, + "src": "3230:10:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7211,14 +7673,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "31", - "id": 1278, + "id": 1303, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2995:1:9", + "src": "3243:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -7226,7 +7688,7 @@ }, "value": "1" }, - "src": "2982:14:9", + "src": "3230:14:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7236,22 +7698,40 @@ "operator": ">=", "rightExpression": { "argumentTypes": null, - "id": 1280, + "id": 1305, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1271, - "src": "3000:10:9", + "referencedDeclaration": 1296, + "src": "3248:10:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "src": "2982:28:9", + "src": "3230:28:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "4e6577206f776e657220636f756e74206e6565647320746f206265206c6172676572207468616e206e6577207468726573686f6c64", + "id": 1307, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3260:55:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_839b4c4db845de24ec74ef067d85431087d6987a4c904418ee4f6ec699c02482", + "typeString": "literal_string \"New owner count needs to be larger than new threshold\"" + }, + "value": "New owner count needs to be larger than new threshold" } ], "expression": { @@ -7259,23 +7739,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_839b4c4db845de24ec74ef067d85431087d6987a4c904418ee4f6ec699c02482", + "typeString": "literal_string \"New owner count needs to be larger than new threshold\"" } ], - "id": 1276, + "id": 1301, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "2974:7:9", + "referencedDeclaration": 2658, + "src": "3222:7:9", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 1282, + "id": 1308, "isConstant": false, "isLValue": false, "isPure": false, @@ -7283,15 +7767,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2974:37:9", + "src": "3222:94:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1283, + "id": 1309, "nodeType": "ExpressionStatement", - "src": "2974:37:9" + "src": "3222:94:9" }, { "expression": { @@ -7303,7 +7787,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1289, + "id": 1315, "isConstant": false, "isLValue": false, "isPure": false, @@ -7312,26 +7796,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1285, + "id": 1311, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1114, - "src": "3091:6:9", + "referencedDeclaration": 1132, + "src": "3396:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1287, + "id": 1313, "indexExpression": { "argumentTypes": null, - "id": 1286, + "id": 1312, "name": "prevOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1267, - "src": "3098:9:9", + "referencedDeclaration": 1292, + "src": "3403:9:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7342,7 +7826,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3091:17:9", + "src": "3396:17:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7352,22 +7836,40 @@ "operator": "==", "rightExpression": { "argumentTypes": null, - "id": 1288, + "id": 1314, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1269, - "src": "3112:5:9", + "referencedDeclaration": 1294, + "src": "3417:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "3091:26:9", + "src": "3396:26:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "496e76616c696420707265764f776e65722c206f776e657220706169722070726f7669646564", + "id": 1316, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3424:40:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_960698caed81fce71c9b7d572ab2e035b6014a5b812b51df8462ea9817fc4ebc", + "typeString": "literal_string \"Invalid prevOwner, owner pair provided\"" + }, + "value": "Invalid prevOwner, owner pair provided" } ], "expression": { @@ -7375,23 +7877,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_960698caed81fce71c9b7d572ab2e035b6014a5b812b51df8462ea9817fc4ebc", + "typeString": "literal_string \"Invalid prevOwner, owner pair provided\"" } ], - "id": 1284, + "id": 1310, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "3083:7:9", + "referencedDeclaration": 2658, + "src": "3388:7:9", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 1290, + "id": 1317, "isConstant": false, "isLValue": false, "isPure": false, @@ -7399,20 +7905,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3083:35:9", + "src": "3388:77:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1291, + "id": 1318, "nodeType": "ExpressionStatement", - "src": "3083:35:9" + "src": "3388:77:9" }, { "expression": { "argumentTypes": null, - "id": 1298, + "id": 1325, "isConstant": false, "isLValue": false, "isPure": false, @@ -7421,26 +7927,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1292, + "id": 1319, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1114, - "src": "3128:6:9", + "referencedDeclaration": 1132, + "src": "3475:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1294, + "id": 1321, "indexExpression": { "argumentTypes": null, - "id": 1293, + "id": 1320, "name": "prevOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1267, - "src": "3135:9:9", + "referencedDeclaration": 1292, + "src": "3482:9:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7451,7 +7957,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "3128:17:9", + "src": "3475:17:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7463,26 +7969,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1295, + "id": 1322, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1114, - "src": "3148:6:9", + "referencedDeclaration": 1132, + "src": "3495:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1297, + "id": 1324, "indexExpression": { "argumentTypes": null, - "id": 1296, + "id": 1323, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1269, - "src": "3155:5:9", + "referencedDeclaration": 1294, + "src": "3502:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7493,26 +7999,26 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3148:13:9", + "src": "3495:13:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "3128:33:9", + "src": "3475:33:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1299, + "id": 1326, "nodeType": "ExpressionStatement", - "src": "3128:33:9" + "src": "3475:33:9" }, { "expression": { "argumentTypes": null, - "id": 1304, + "id": 1331, "isConstant": false, "isLValue": false, "isPure": false, @@ -7521,26 +8027,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1300, + "id": 1327, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1114, - "src": "3171:6:9", + "referencedDeclaration": 1132, + "src": "3518:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1302, + "id": 1329, "indexExpression": { "argumentTypes": null, - "id": 1301, + "id": 1328, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1269, - "src": "3178:5:9", + "referencedDeclaration": 1294, + "src": "3525:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7551,7 +8057,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "3171:13:9", + "src": "3518:13:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7562,14 +8068,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "30", - "id": 1303, + "id": 1330, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3187:1:9", + "src": "3534:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -7577,20 +8083,20 @@ }, "value": "0" }, - "src": "3171:17:9", + "src": "3518:17:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1305, + "id": 1332, "nodeType": "ExpressionStatement", - "src": "3171:17:9" + "src": "3518:17:9" }, { "expression": { "argumentTypes": null, - "id": 1307, + "id": 1334, "isConstant": false, "isLValue": false, "isPure": false, @@ -7598,15 +8104,15 @@ "nodeType": "UnaryOperation", "operator": "--", "prefix": false, - "src": "3198:12:9", + "src": "3545:12:9", "subExpression": { "argumentTypes": null, - "id": 1306, + "id": 1333, "name": "ownerCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1116, - "src": "3198:10:9", + "referencedDeclaration": 1134, + "src": "3545:10:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7617,9 +8123,9 @@ "typeString": "uint256" } }, - "id": 1308, + "id": 1335, "nodeType": "ExpressionStatement", - "src": "3198:12:9" + "src": "3545:12:9" }, { "condition": { @@ -7628,19 +8134,19 @@ "typeIdentifier": "t_uint8", "typeString": "uint8" }, - "id": 1311, + "id": 1338, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1309, + "id": 1336, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1118, - "src": "3278:9:9", + "referencedDeclaration": 1136, + "src": "3625:9:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -7650,39 +8156,39 @@ "operator": "!=", "rightExpression": { "argumentTypes": null, - "id": 1310, + "id": 1337, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1271, - "src": "3291:10:9", + "referencedDeclaration": 1296, + "src": "3638:10:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "src": "3278:23:9", + "src": "3625:23:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 1316, + "id": 1343, "nodeType": "IfStatement", - "src": "3274:68:9", + "src": "3621:68:9", "trueBody": { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 1313, + "id": 1340, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1271, - "src": "3331:10:9", + "referencedDeclaration": 1296, + "src": "3678:10:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -7696,18 +8202,18 @@ "typeString": "uint8" } ], - "id": 1312, + "id": 1339, "name": "changeThreshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1400, - "src": "3315:15:9", + "referencedDeclaration": 1432, + "src": "3662:15:9", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_uint8_$returns$__$", "typeString": "function (uint8)" } }, - "id": 1314, + "id": 1341, "isConstant": false, "isLValue": false, "isPure": false, @@ -7715,58 +8221,58 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3315:27:9", + "src": "3662:27:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1315, + "id": 1342, "nodeType": "ExpressionStatement", - "src": "3315:27:9" + "src": "3662:27:9" } } ] }, "documentation": "@dev Allows to remove an owner from the Safe and update the threshold at the same time.\n This can only be done via a Safe transaction.\n @param prevOwner Owner that pointed to the owner to be removed in the linked list\n @param owner Owner address to be removed.\n @param _threshold New threshold.", - "id": 1318, + "id": 1345, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 1274, + "id": 1299, "modifierName": { "argumentTypes": null, - "id": 1273, + "id": 1298, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1618, - "src": "2872:10:9", + "referencedDeclaration": 1653, + "src": "3120:10:9", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "2872:10:9" + "src": "3120:10:9" } ], "name": "removeOwner", "nodeType": "FunctionDefinition", "parameters": { - "id": 1272, + "id": 1297, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1267, + "id": 1292, "name": "prevOwner", "nodeType": "VariableDeclaration", - "scope": 1318, - "src": "2797:17:9", + "scope": 1345, + "src": "3045:17:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7774,10 +8280,10 @@ "typeString": "address" }, "typeName": { - "id": 1266, + "id": 1291, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2797:7:9", + "src": "3045:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7788,11 +8294,11 @@ }, { "constant": false, - "id": 1269, + "id": 1294, "name": "owner", "nodeType": "VariableDeclaration", - "scope": 1318, - "src": "2816:13:9", + "scope": 1345, + "src": "3064:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7800,10 +8306,10 @@ "typeString": "address" }, "typeName": { - "id": 1268, + "id": 1293, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2816:7:9", + "src": "3064:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7814,11 +8320,11 @@ }, { "constant": false, - "id": 1271, + "id": 1296, "name": "_threshold", "nodeType": "VariableDeclaration", - "scope": 1318, - "src": "2831:16:9", + "scope": 1345, + "src": "3079:16:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7826,10 +8332,10 @@ "typeString": "uint8" }, "typeName": { - "id": 1270, + "id": 1295, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "2831:5:9", + "src": "3079:5:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -7839,26 +8345,26 @@ "visibility": "internal" } ], - "src": "2796:52:9" + "src": "3044:52:9" }, "payable": false, "returnParameters": { - "id": 1275, + "id": 1300, "nodeType": "ParameterList", "parameters": [], - "src": "2887:0:9" + "src": "3135:0:9" }, - "scope": 1472, - "src": "2776:573:9", + "scope": 1504, + "src": "3024:672:9", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1375, + "id": 1405, "nodeType": "Block", - "src": "3795:414:9", + "src": "4142:521:9", "statements": [ { "expression": { @@ -7870,7 +8376,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 1336, + "id": 1363, "isConstant": false, "isLValue": false, "isPure": false, @@ -7881,19 +8387,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1332, + "id": 1359, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1330, + "id": 1357, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1324, - "src": "3854:8:9", + "referencedDeclaration": 1351, + "src": "4201:8:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7904,14 +8410,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1331, + "id": 1358, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3866:1:9", + "src": "4213:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -7919,7 +8425,7 @@ }, "value": "0" }, - "src": "3854:13:9", + "src": "4201:13:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -7933,19 +8439,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1335, + "id": 1362, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1333, + "id": 1360, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1324, - "src": "3871:8:9", + "referencedDeclaration": 1351, + "src": "4218:8:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7955,28 +8461,46 @@ "operator": "!=", "rightExpression": { "argumentTypes": null, - "id": 1334, + "id": 1361, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1110, - "src": "3883:15:9", + "referencedDeclaration": 1128, + "src": "4230:15:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "3871:27:9", + "src": "4218:27:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "3854:44:9", + "src": "4201:44:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "496e76616c6964206f776e657220616464726573732070726f7669646564", + "id": 1364, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4247:32:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_21a1cd38818adb750881fbf07c26ce7223dde608fdd9dadd31a0d41afeca2094", + "typeString": "literal_string \"Invalid owner address provided\"" + }, + "value": "Invalid owner address provided" } ], "expression": { @@ -7984,23 +8508,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_21a1cd38818adb750881fbf07c26ce7223dde608fdd9dadd31a0d41afeca2094", + "typeString": "literal_string \"Invalid owner address provided\"" } ], - "id": 1329, + "id": 1356, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "3846:7:9", + "referencedDeclaration": 2658, + "src": "4193:7:9", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 1337, + "id": 1365, "isConstant": false, "isLValue": false, "isPure": false, @@ -8008,15 +8536,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3846:53:9", + "src": "4193:87:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1338, + "id": 1366, "nodeType": "ExpressionStatement", - "src": "3846:53:9" + "src": "4193:87:9" }, { "expression": { @@ -8028,7 +8556,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1344, + "id": 1372, "isConstant": false, "isLValue": false, "isPure": false, @@ -8037,26 +8565,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1340, + "id": 1368, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1114, - "src": "3957:6:9", + "referencedDeclaration": 1132, + "src": "4338:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1342, + "id": 1370, "indexExpression": { "argumentTypes": null, - "id": 1341, + "id": 1369, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1324, - "src": "3964:8:9", + "referencedDeclaration": 1351, + "src": "4345:8:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8067,7 +8595,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3957:16:9", + "src": "4338:16:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8078,14 +8606,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1343, + "id": 1371, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3977:1:9", + "src": "4358:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -8093,11 +8621,29 @@ }, "value": "0" }, - "src": "3957:21:9", + "src": "4338:21:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "4164647265737320697320616c726561647920616e206f776e6572", + "id": 1373, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4361:29:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_9d461d71e19b25cd406798d062d7e61f961ad52541d3077a543e857810427d47", + "typeString": "literal_string \"Address is already an owner\"" + }, + "value": "Address is already an owner" } ], "expression": { @@ -8105,23 +8651,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_9d461d71e19b25cd406798d062d7e61f961ad52541d3077a543e857810427d47", + "typeString": "literal_string \"Address is already an owner\"" } ], - "id": 1339, + "id": 1367, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "3949:7:9", + "referencedDeclaration": 2658, + "src": "4330:7:9", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 1345, + "id": 1374, "isConstant": false, "isLValue": false, "isPure": false, @@ -8129,15 +8679,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3949:30:9", + "src": "4330:61:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1346, + "id": 1375, "nodeType": "ExpressionStatement", - "src": "3949:30:9" + "src": "4330:61:9" }, { "expression": { @@ -8149,7 +8699,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1352, + "id": 1381, "isConstant": false, "isLValue": false, "isPure": false, @@ -8158,26 +8708,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1348, + "id": 1377, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1114, - "src": "4059:6:9", + "referencedDeclaration": 1132, + "src": "4471:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1350, + "id": 1379, "indexExpression": { "argumentTypes": null, - "id": 1349, + "id": 1378, "name": "prevOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1320, - "src": "4066:9:9", + "referencedDeclaration": 1347, + "src": "4478:9:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8188,7 +8738,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4059:17:9", + "src": "4471:17:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8198,22 +8748,40 @@ "operator": "==", "rightExpression": { "argumentTypes": null, - "id": 1351, + "id": 1380, "name": "oldOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1322, - "src": "4080:8:9", + "referencedDeclaration": 1349, + "src": "4492:8:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "4059:29:9", + "src": "4471:29:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "496e76616c696420707265764f776e65722c206f776e657220706169722070726f7669646564", + "id": 1382, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4502:40:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_960698caed81fce71c9b7d572ab2e035b6014a5b812b51df8462ea9817fc4ebc", + "typeString": "literal_string \"Invalid prevOwner, owner pair provided\"" + }, + "value": "Invalid prevOwner, owner pair provided" } ], "expression": { @@ -8221,23 +8789,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_960698caed81fce71c9b7d572ab2e035b6014a5b812b51df8462ea9817fc4ebc", + "typeString": "literal_string \"Invalid prevOwner, owner pair provided\"" } ], - "id": 1347, + "id": 1376, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "4051:7:9", + "referencedDeclaration": 2658, + "src": "4463:7:9", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 1353, + "id": 1383, "isConstant": false, "isLValue": false, "isPure": false, @@ -8245,20 +8817,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4051:38:9", + "src": "4463:80:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1354, + "id": 1384, "nodeType": "ExpressionStatement", - "src": "4051:38:9" + "src": "4463:80:9" }, { "expression": { "argumentTypes": null, - "id": 1361, + "id": 1391, "isConstant": false, "isLValue": false, "isPure": false, @@ -8267,26 +8839,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1355, + "id": 1385, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1114, - "src": "4099:6:9", + "referencedDeclaration": 1132, + "src": "4553:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1357, + "id": 1387, "indexExpression": { "argumentTypes": null, - "id": 1356, + "id": 1386, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1324, - "src": "4106:8:9", + "referencedDeclaration": 1351, + "src": "4560:8:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8297,7 +8869,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "4099:16:9", + "src": "4553:16:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8309,26 +8881,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1358, + "id": 1388, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1114, - "src": "4118:6:9", + "referencedDeclaration": 1132, + "src": "4572:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1360, + "id": 1390, "indexExpression": { "argumentTypes": null, - "id": 1359, + "id": 1389, "name": "oldOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1322, - "src": "4125:8:9", + "referencedDeclaration": 1349, + "src": "4579:8:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8339,489 +8911,21 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4118:16:9", + "src": "4572:16:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "4099:35:9", + "src": "4553:35:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1362, + "id": 1392, "nodeType": "ExpressionStatement", - "src": "4099:35:9" - }, - { - "expression": { - "argumentTypes": null, - "id": 1367, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1363, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1114, - "src": "4144:6:9", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_address_$", - "typeString": "mapping(address => address)" - } - }, - "id": 1365, - "indexExpression": { - "argumentTypes": null, - "id": 1364, - "name": "prevOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1320, - "src": "4151:9:9", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "4144:17:9", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 1366, - "name": "newOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1324, - "src": "4164:8:9", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "4144:28:9", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 1368, - "nodeType": "ExpressionStatement", - "src": "4144:28:9" - }, - { - "expression": { - "argumentTypes": null, - "id": 1373, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1369, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1114, - "src": "4182:6:9", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_address_$", - "typeString": "mapping(address => address)" - } - }, - "id": 1371, - "indexExpression": { - "argumentTypes": null, - "id": 1370, - "name": "oldOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1322, - "src": "4189:8:9", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "4182:16:9", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "30", - "id": 1372, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4201:1:9", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "4182:20:9", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 1374, - "nodeType": "ExpressionStatement", - "src": "4182:20:9" - } - ] - }, - "documentation": "@dev Allows to swap/replace an owner from the Safe with another address.\n This can only be done via a Safe transaction.\n @param prevOwner Owner that pointed to the owner to be replaced in the linked list\n @param oldOwner Owner address to be replaced.\n @param newOwner New owner address.", - "id": 1376, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [ - { - "arguments": null, - "id": 1327, - "modifierName": { - "argumentTypes": null, - "id": 1326, - "name": "authorized", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1618, - "src": "3780:10:9", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "3780:10:9" - } - ], - "name": "swapOwner", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1325, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1320, - "name": "prevOwner", - "nodeType": "VariableDeclaration", - "scope": 1376, - "src": "3702:17:9", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1319, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3702:7:9", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1322, - "name": "oldOwner", - "nodeType": "VariableDeclaration", - "scope": 1376, - "src": "3721:16:9", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1321, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3721:7:9", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1324, - "name": "newOwner", - "nodeType": "VariableDeclaration", - "scope": 1376, - "src": "3739:16:9", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1323, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3739:7:9", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "3701:55:9" - }, - "payable": false, - "returnParameters": { - "id": 1328, - "nodeType": "ParameterList", - "parameters": [], - "src": "3795:0:9" - }, - "scope": 1472, - "src": "3683:526:9", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 1399, - "nodeType": "Block", - "src": "4479:237:9", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1386, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1384, - "name": "_threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1378, - "src": "4566:10:9", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "BinaryOperation", - "operator": "<=", - "rightExpression": { - "argumentTypes": null, - "id": 1385, - "name": "ownerCount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1116, - "src": "4580:10:9", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4566:24:9", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1383, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 2601, - 2602 - ], - "referencedDeclaration": 2601, - "src": "4558:7:9", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1387, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4558:33:9", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1388, - "nodeType": "ExpressionStatement", - "src": "4558:33:9" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "id": 1392, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1390, - "name": "_threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1378, - "src": "4661:10:9", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "BinaryOperation", - "operator": ">=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 1391, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4675:1:9", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "src": "4661:15:9", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1389, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 2601, - 2602 - ], - "referencedDeclaration": 2601, - "src": "4653:7:9", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1393, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4653:24:9", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1394, - "nodeType": "ExpressionStatement", - "src": "4653:24:9" + "src": "4553:35:9" }, { "expression": { @@ -8833,12 +8937,524 @@ "lValueRequested": false, "leftHandSide": { "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1393, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1132, + "src": "4598:6:9", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + } + }, "id": 1395, + "indexExpression": { + "argumentTypes": null, + "id": 1394, + "name": "prevOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1347, + "src": "4605:9:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "4598:17:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1396, + "name": "newOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1351, + "src": "4618:8:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "4598:28:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1398, + "nodeType": "ExpressionStatement", + "src": "4598:28:9" + }, + { + "expression": { + "argumentTypes": null, + "id": 1403, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1399, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1132, + "src": "4636:6:9", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + } + }, + "id": 1401, + "indexExpression": { + "argumentTypes": null, + "id": 1400, + "name": "oldOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1349, + "src": "4643:8:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "4636:16:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 1402, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4655:1:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "4636:20:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1404, + "nodeType": "ExpressionStatement", + "src": "4636:20:9" + } + ] + }, + "documentation": "@dev Allows to swap/replace an owner from the Safe with another address.\n This can only be done via a Safe transaction.\n @param prevOwner Owner that pointed to the owner to be replaced in the linked list\n @param oldOwner Owner address to be replaced.\n @param newOwner New owner address.", + "id": 1406, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": null, + "id": 1354, + "modifierName": { + "argumentTypes": null, + "id": 1353, + "name": "authorized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1653, + "src": "4127:10:9", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "4127:10:9" + } + ], + "name": "swapOwner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1352, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1347, + "name": "prevOwner", + "nodeType": "VariableDeclaration", + "scope": 1406, + "src": "4049:17:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1346, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4049:7:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1349, + "name": "oldOwner", + "nodeType": "VariableDeclaration", + "scope": 1406, + "src": "4068:16:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1348, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4068:7:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1351, + "name": "newOwner", + "nodeType": "VariableDeclaration", + "scope": 1406, + "src": "4086:16:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1350, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4086:7:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4048:55:9" + }, + "payable": false, + "returnParameters": { + "id": 1355, + "nodeType": "ParameterList", + "parameters": [], + "src": "4142:0:9" + }, + "scope": 1504, + "src": "4030:633:9", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1431, + "nodeType": "Block", + "src": "4933:316:9", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1416, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1414, + "name": "_threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1408, + "src": "5020:10:9", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "id": 1415, + "name": "ownerCount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1134, + "src": "5034:10:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5020:24:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "5468726573686f6c642063616e6e6f7420657863656564206f776e657220636f756e74", + "id": 1417, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5046:37:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_63d26a9feb8568677e5c255c04e4da88e86a25137d5152a9a089790b7e710e86", + "typeString": "literal_string \"Threshold cannot exceed owner count\"" + }, + "value": "Threshold cannot exceed owner count" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_63d26a9feb8568677e5c255c04e4da88e86a25137d5152a9a089790b7e710e86", + "typeString": "literal_string \"Threshold cannot exceed owner count\"" + } + ], + "id": 1413, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2657, + 2658 + ], + "referencedDeclaration": 2658, + "src": "5012:7:9", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1418, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5012:72:9", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1419, + "nodeType": "ExpressionStatement", + "src": "5012:72:9" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 1423, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1421, + "name": "_threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1408, + "src": "5154:10:9", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 1422, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5168:1:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "5154:15:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "5468726573686f6c64206e6565647320746f2062652067726561746572207468616e2030", + "id": 1424, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5171:38:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_b995394ed6031392a784e6dd5e04285cca83077a8dc3873d2fb7fcb090297ab4", + "typeString": "literal_string \"Threshold needs to be greater than 0\"" + }, + "value": "Threshold needs to be greater than 0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_b995394ed6031392a784e6dd5e04285cca83077a8dc3873d2fb7fcb090297ab4", + "typeString": "literal_string \"Threshold needs to be greater than 0\"" + } + ], + "id": 1420, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2657, + 2658 + ], + "referencedDeclaration": 2658, + "src": "5146:7:9", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1425, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5146:64:9", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1426, + "nodeType": "ExpressionStatement", + "src": "5146:64:9" + }, + { + "expression": { + "argumentTypes": null, + "id": 1429, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1427, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1118, - "src": "4687:9:9", + "referencedDeclaration": 1136, + "src": "5220:9:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -8848,68 +9464,68 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1396, + "id": 1428, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1378, - "src": "4699:10:9", + "referencedDeclaration": 1408, + "src": "5232:10:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "src": "4687:22:9", + "src": "5220:22:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "id": 1398, + "id": 1430, "nodeType": "ExpressionStatement", - "src": "4687:22:9" + "src": "5220:22:9" } ] }, "documentation": "@dev Allows to update the number of required confirmations by Safe owners.\n This can only be done via a Safe transaction.\n @param _threshold New threshold.", - "id": 1400, + "id": 1432, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 1381, + "id": 1411, "modifierName": { "argumentTypes": null, - "id": 1380, + "id": 1410, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1618, - "src": "4464:10:9", + "referencedDeclaration": 1653, + "src": "4918:10:9", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "4464:10:9" + "src": "4918:10:9" } ], "name": "changeThreshold", "nodeType": "FunctionDefinition", "parameters": { - "id": 1379, + "id": 1409, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1378, + "id": 1408, "name": "_threshold", "nodeType": "VariableDeclaration", - "scope": 1400, - "src": "4423:16:9", + "scope": 1432, + "src": "4877:16:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8917,10 +9533,10 @@ "typeString": "uint8" }, "typeName": { - "id": 1377, + "id": 1407, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "4423:5:9", + "src": "4877:5:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -8930,50 +9546,50 @@ "visibility": "internal" } ], - "src": "4422:18:9" + "src": "4876:18:9" }, "payable": false, "returnParameters": { - "id": 1382, + "id": 1412, "nodeType": "ParameterList", "parameters": [], - "src": "4479:0:9" + "src": "4933:0:9" }, - "scope": 1472, - "src": "4398:318:9", + "scope": 1504, + "src": "4852:397:9", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1407, + "id": 1439, "nodeType": "Block", - "src": "4802:33:9", + "src": "5335:33:9", "statements": [ { "expression": { "argumentTypes": null, - "id": 1405, + "id": 1437, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1118, - "src": "4819:9:9", + "referencedDeclaration": 1136, + "src": "5352:9:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "functionReturnParameters": 1404, - "id": 1406, + "functionReturnParameters": 1436, + "id": 1438, "nodeType": "Return", - "src": "4812:16:9" + "src": "5345:16:9" } ] }, "documentation": null, - "id": 1408, + "id": 1440, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -8981,23 +9597,23 @@ "name": "getThreshold", "nodeType": "FunctionDefinition", "parameters": { - "id": 1401, + "id": 1433, "nodeType": "ParameterList", "parameters": [], - "src": "4743:2:9" + "src": "5276:2:9" }, "payable": false, "returnParameters": { - "id": 1404, + "id": 1436, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1403, + "id": 1435, "name": "", "nodeType": "VariableDeclaration", - "scope": 1408, - "src": "4791:5:9", + "scope": 1440, + "src": "5324:5:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9005,10 +9621,10 @@ "typeString": "uint8" }, "typeName": { - "id": 1402, + "id": 1434, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "4791:5:9", + "src": "5324:5:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -9018,19 +9634,19 @@ "visibility": "internal" } ], - "src": "4790:7:9" + "src": "5323:7:9" }, - "scope": 1472, - "src": "4722:113:9", + "scope": 1504, + "src": "5255:113:9", "stateMutability": "view", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1421, + "id": 1453, "nodeType": "Block", - "src": "4928:42:9", + "src": "5461:42:9", "statements": [ { "expression": { @@ -9039,7 +9655,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1419, + "id": 1451, "isConstant": false, "isLValue": false, "isPure": false, @@ -9048,26 +9664,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1415, + "id": 1447, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1114, - "src": "4945:6:9", + "referencedDeclaration": 1132, + "src": "5478:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1417, + "id": 1449, "indexExpression": { "argumentTypes": null, - "id": 1416, + "id": 1448, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1410, - "src": "4952:5:9", + "referencedDeclaration": 1442, + "src": "5485:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9078,7 +9694,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4945:13:9", + "src": "5478:13:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9089,14 +9705,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1418, + "id": 1450, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4962:1:9", + "src": "5495:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -9104,21 +9720,21 @@ }, "value": "0" }, - "src": "4945:18:9", + "src": "5478:18:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "functionReturnParameters": 1414, - "id": 1420, + "functionReturnParameters": 1446, + "id": 1452, "nodeType": "Return", - "src": "4938:25:9" + "src": "5471:25:9" } ] }, "documentation": null, - "id": 1422, + "id": 1454, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -9126,16 +9742,16 @@ "name": "isOwner", "nodeType": "FunctionDefinition", "parameters": { - "id": 1411, + "id": 1443, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1410, + "id": 1442, "name": "owner", "nodeType": "VariableDeclaration", - "scope": 1422, - "src": "4858:13:9", + "scope": 1454, + "src": "5391:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9143,10 +9759,10 @@ "typeString": "address" }, "typeName": { - "id": 1409, + "id": 1441, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4858:7:9", + "src": "5391:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9156,20 +9772,20 @@ "visibility": "internal" } ], - "src": "4857:15:9" + "src": "5390:15:9" }, "payable": false, "returnParameters": { - "id": 1414, + "id": 1446, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1413, + "id": 1445, "name": "", "nodeType": "VariableDeclaration", - "scope": 1422, - "src": "4918:4:9", + "scope": 1454, + "src": "5451:4:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9177,10 +9793,10 @@ "typeString": "bool" }, "typeName": { - "id": 1412, + "id": 1444, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "4918:4:9", + "src": "5451:4:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -9190,32 +9806,32 @@ "visibility": "internal" } ], - "src": "4917:6:9" + "src": "5450:6:9" }, - "scope": 1472, - "src": "4841:129:9", + "scope": 1504, + "src": "5374:129:9", "stateMutability": "view", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1470, + "id": 1502, "nodeType": "Block", - "src": "5133:377:9", + "src": "5666:377:9", "statements": [ { "assignments": [ - 1431 + 1463 ], "declarations": [ { "constant": false, - "id": 1431, + "id": 1463, "name": "array", "nodeType": "VariableDeclaration", - "scope": 1471, - "src": "5143:22:9", + "scope": 1503, + "src": "5676:22:9", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -9224,19 +9840,19 @@ }, "typeName": { "baseType": { - "id": 1429, + "id": 1461, "name": "address", "nodeType": "ElementaryTypeName", - "src": "5143:7:9", + "src": "5676:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1430, + "id": 1462, "length": null, "nodeType": "ArrayTypeName", - "src": "5143:9:9", + "src": "5676:9:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" @@ -9246,18 +9862,18 @@ "visibility": "internal" } ], - "id": 1437, + "id": 1469, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 1435, + "id": 1467, "name": "ownerCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1116, - "src": "5182:10:9", + "referencedDeclaration": 1134, + "src": "5715:10:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9271,39 +9887,39 @@ "typeString": "uint256" } ], - "id": 1434, + "id": 1466, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "NewExpression", - "src": "5168:13:9", + "src": "5701:13:9", "typeDescriptions": { "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_$", "typeString": "function (uint256) pure returns (address[] memory)" }, "typeName": { "baseType": { - "id": 1432, + "id": 1464, "name": "address", "nodeType": "ElementaryTypeName", - "src": "5172:7:9", + "src": "5705:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1433, + "id": 1465, "length": null, "nodeType": "ArrayTypeName", - "src": "5172:9:9", + "src": "5705:9:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" } } }, - "id": 1436, + "id": 1468, "isConstant": false, "isLValue": false, "isPure": false, @@ -9311,27 +9927,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5168:25:9", + "src": "5701:25:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory", "typeString": "address[] memory" } }, "nodeType": "VariableDeclarationStatement", - "src": "5143:50:9" + "src": "5676:50:9" }, { "assignments": [ - 1439 + 1471 ], "declarations": [ { "constant": false, - "id": 1439, + "id": 1471, "name": "index", "nodeType": "VariableDeclaration", - "scope": 1471, - "src": "5237:13:9", + "scope": 1503, + "src": "5770:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9339,10 +9955,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1438, + "id": 1470, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "5237:7:9", + "src": "5770:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9352,18 +9968,18 @@ "visibility": "internal" } ], - "id": 1441, + "id": 1473, "initialValue": { "argumentTypes": null, "hexValue": "30", - "id": 1440, + "id": 1472, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "5253:1:9", + "src": "5786:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -9372,20 +9988,20 @@ "value": "0" }, "nodeType": "VariableDeclarationStatement", - "src": "5237:17:9" + "src": "5770:17:9" }, { "assignments": [ - 1443 + 1475 ], "declarations": [ { "constant": false, - "id": 1443, + "id": 1475, "name": "currentOwner", "nodeType": "VariableDeclaration", - "scope": 1471, - "src": "5264:20:9", + "scope": 1503, + "src": "5797:20:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9393,10 +10009,10 @@ "typeString": "address" }, "typeName": { - "id": 1442, + "id": 1474, "name": "address", "nodeType": "ElementaryTypeName", - "src": "5264:7:9", + "src": "5797:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9406,31 +10022,31 @@ "visibility": "internal" } ], - "id": 1447, + "id": 1479, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1444, + "id": 1476, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1114, - "src": "5287:6:9", + "referencedDeclaration": 1132, + "src": "5820:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1446, + "id": 1478, "indexExpression": { "argumentTypes": null, - "id": 1445, + "id": 1477, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1110, - "src": "5294:15:9", + "referencedDeclaration": 1128, + "src": "5827:15:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9441,25 +10057,25 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "5287:23:9", + "src": "5820:23:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", - "src": "5264:46:9" + "src": "5797:46:9" }, { "body": { - "id": 1466, + "id": 1498, "nodeType": "Block", - "src": "5359:123:9", + "src": "5892:123:9", "statements": [ { "expression": { "argumentTypes": null, - "id": 1455, + "id": 1487, "isConstant": false, "isLValue": false, "isPure": false, @@ -9468,26 +10084,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1451, + "id": 1483, "name": "array", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1431, - "src": "5373:5:9", + "referencedDeclaration": 1463, + "src": "5906:5:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 1453, + "id": 1485, "indexExpression": { "argumentTypes": null, - "id": 1452, + "id": 1484, "name": "index", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1439, - "src": "5379:5:9", + "referencedDeclaration": 1471, + "src": "5912:5:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9498,7 +10114,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "5373:12:9", + "src": "5906:12:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9508,43 +10124,43 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1454, + "id": 1486, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1443, - "src": "5388:12:9", + "referencedDeclaration": 1475, + "src": "5921:12:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "5373:27:9", + "src": "5906:27:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1456, + "id": 1488, "nodeType": "ExpressionStatement", - "src": "5373:27:9" + "src": "5906:27:9" }, { "expression": { "argumentTypes": null, - "id": 1461, + "id": 1493, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1457, + "id": 1489, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1443, - "src": "5414:12:9", + "referencedDeclaration": 1475, + "src": "5947:12:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9556,26 +10172,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1458, + "id": 1490, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1114, - "src": "5429:6:9", + "referencedDeclaration": 1132, + "src": "5962:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1460, + "id": 1492, "indexExpression": { "argumentTypes": null, - "id": 1459, + "id": 1491, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1443, - "src": "5436:12:9", + "referencedDeclaration": 1475, + "src": "5969:12:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9586,26 +10202,26 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "5429:20:9", + "src": "5962:20:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "5414:35:9", + "src": "5947:35:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1462, + "id": 1494, "nodeType": "ExpressionStatement", - "src": "5414:35:9" + "src": "5947:35:9" }, { "expression": { "argumentTypes": null, - "id": 1464, + "id": 1496, "isConstant": false, "isLValue": false, "isPure": false, @@ -9613,15 +10229,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "5463:8:9", + "src": "5996:8:9", "subExpression": { "argumentTypes": null, - "id": 1463, + "id": 1495, "name": "index", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1439, - "src": "5463:5:9", + "referencedDeclaration": 1471, + "src": "5996:5:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9632,9 +10248,9 @@ "typeString": "uint256" } }, - "id": 1465, + "id": 1497, "nodeType": "ExpressionStatement", - "src": "5463:8:9" + "src": "5996:8:9" } ] }, @@ -9644,19 +10260,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1450, + "id": 1482, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1448, + "id": 1480, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1443, - "src": "5326:12:9", + "referencedDeclaration": 1475, + "src": "5859:12:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9666,50 +10282,50 @@ "operator": "!=", "rightExpression": { "argumentTypes": null, - "id": 1449, + "id": 1481, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1110, - "src": "5342:15:9", + "referencedDeclaration": 1128, + "src": "5875:15:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "5326:31:9", + "src": "5859:31:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 1467, + "id": 1499, "nodeType": "WhileStatement", - "src": "5320:162:9" + "src": "5853:162:9" }, { "expression": { "argumentTypes": null, - "id": 1468, + "id": 1500, "name": "array", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1431, - "src": "5498:5:9", + "referencedDeclaration": 1463, + "src": "6031:5:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "functionReturnParameters": 1427, - "id": 1469, + "functionReturnParameters": 1459, + "id": 1501, "nodeType": "Return", - "src": "5491:12:9" + "src": "6024:12:9" } ] }, "documentation": "@dev Returns array of owners.\n @return Array of Safe owners.", - "id": 1471, + "id": 1503, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -9717,23 +10333,23 @@ "name": "getOwners", "nodeType": "FunctionDefinition", "parameters": { - "id": 1423, + "id": 1455, "nodeType": "ParameterList", "parameters": [], - "src": "5070:2:9" + "src": "5603:2:9" }, "payable": false, "returnParameters": { - "id": 1427, + "id": 1459, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1426, + "id": 1458, "name": "", "nodeType": "VariableDeclaration", - "scope": 1471, - "src": "5118:9:9", + "scope": 1503, + "src": "5651:9:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9742,19 +10358,19 @@ }, "typeName": { "baseType": { - "id": 1424, + "id": 1456, "name": "address", "nodeType": "ElementaryTypeName", - "src": "5118:7:9", + "src": "5651:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1425, + "id": 1457, "length": null, "nodeType": "ArrayTypeName", - "src": "5118:9:9", + "src": "5651:9:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" @@ -9764,20 +10380,20 @@ "visibility": "internal" } ], - "src": "5117:11:9" + "src": "5650:11:9" }, - "scope": 1472, - "src": "5052:458:9", + "scope": 1504, + "src": "5585:458:9", "stateMutability": "view", "superFunction": null, "visibility": "public" } ], - "scope": 1473, - "src": "240:5272:9" + "scope": 1505, + "src": "240:5805:9" } ], - "src": "0:5513:9" + "src": "0:6046:9" }, "compiler": { "name": "solc", @@ -9785,5 +10401,5 @@ }, "networks": {}, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-27T11:12:45.581Z" + "updatedAt": "2018-05-28T05:59:52.704Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/PayingProxy.json b/safe-contracts/build/contracts/PayingProxy.json index cc23c459..2c116250 100644 --- a/safe-contracts/build/contracts/PayingProxy.json +++ b/safe-contracts/build/contracts/PayingProxy.json @@ -62,24 +62,24 @@ "type": "fallback" } ], - "bytecode": "0x608060405234801561001057600080fd5b5060405161040a38038061040a833981018060405281019080805190602001909291908051820192919060200180519060200190929190805190602001909291908051906020019092919050505084848160008173ffffffffffffffffffffffffffffffffffffffff161415151561008757600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506000815111156101145773ffffffffffffffffffffffffffffffffffffffff60005416600080835160208501846127105a03f46040513d6000823e6000821415610110573d81fd5b5050505b5050600081111561028b57600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156101a0578273ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561019a573d6000803e3d6000fd5b5061028a565b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561024357600080fd5b505af1158015610257573d6000803e3d6000fd5b505050506040513d602081101561026d57600080fd5b8101908080519060200190929190505050151561028957600080fd5b5b5b505050505061016b8061029f6000396000f30060806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680634555d5c91461008b5780635c60da1b146100b6575b73ffffffffffffffffffffffffffffffffffffffff600054163660008037600080366000845af43d6000803e6000811415610086573d6000fd5b3d6000f35b34801561009757600080fd5b506100a061010d565b6040518082815260200191505060405180910390f35b3480156100c257600080fd5b506100cb610116565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60006002905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050905600a165627a7a72305820c6b5ccee92e07d7ace7597f14eb09050cef9e7752ac4efc079975eb065e226060029", - "deployedBytecode": "0x60806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680634555d5c91461008b5780635c60da1b146100b6575b73ffffffffffffffffffffffffffffffffffffffff600054163660008037600080366000845af43d6000803e6000811415610086573d6000fd5b3d6000f35b34801561009757600080fd5b506100a061010d565b6040518082815260200191505060405180910390f35b3480156100c257600080fd5b506100cb610116565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60006002905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050905600a165627a7a72305820c6b5ccee92e07d7ace7597f14eb09050cef9e7752ac4efc079975eb065e226060029", - "sourceMap": "452:905:10:-;;;924:431;8:9:-1;5:2;;;30:1;27;20:12;5:2;924:431:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1065:11;1078;668::0;593:1:11;578:11;:16;;;;570:25;;;;;;;;618:11;605:10;;:24;;;;;;;;;;;;;;;;;;508:128;735:1:0;714:11;:18;:22;710:519;;;879:42;875:1;869:8;865:57;1043:1;1040;1026:11;1020:18;1013:4;1000:11;996:22;984:10;976:5;971:3;967:15;954:91;1079:4;1073:11;1124:14;1121:1;1116:3;1101:38;1171:1;1162:7;1159:14;1156:2;;;1188:14;1183:3;1176:27;1156:2;829:390;;;;610:625;;1134:1:10;1124:7;:11;1120:228;;;1179:1;1155:26;;:12;:26;;;1151:187;;;1201:6;:15;;:24;1217:7;1201:24;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1201:24:10;1151:187;;;1283:12;1272:33;;;1306:6;1314:7;1272:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1272:50:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1272:50:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1272:50:10;;;;;;;;;;;;;;;;1264:59;;;;;;;;1151:187;1120:228;924:431;;;;;452:905;;;;;;", - "deployedSourceMap": "452:905:10:-;;;;;;;;;;;;;;;;;;;;;;;;;;915:42:11;911:1;905:8;901:57;990:14;987:1;984;971:34;1085:1;1082;1066:14;1063:1;1051:10;1046:3;1033:54;1121:16;1118:1;1115;1100:38;1166:1;1157:7;1154:14;1151:2;;;1181:16;1178:1;1171:27;1151:2;1223:16;1220:1;1213:27;1386:104;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1386:104:11;;;;;;;;;;;;;;;;;;;;;;;1262:118;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1262:118:11;;;;;;;;;;;;;;;;;;;;;;;;;;;1386:104;1452:7;1482:1;1475:8;;1386:104;:::o;1262:118::-;1333:7;1363:10;;;;;;;;;;;1356:17;;1262:118;:::o", - "source": "pragma solidity 0.4.24;\nimport \"./DelegateConstructorProxy.sol\";\nimport \"./interfaces/ERC20Token.sol\";\n\n/// @title Paying Proxy - Generic proxy contract allows to execute all transactions applying the code of a master contract. It is possible to send along initialization data with the constructor. And sends funds after creation to a specified account.\n/// @author Stefan George - \n/// @author Richard Meissner - \ncontract PayingProxy is DelegateConstructorProxy {\n\n /// @dev Constructor function sets address of master copy contract.\n /// @param _masterCopy Master copy address.\n /// @param initializer Data used for a delegate call to initialize the contract.\n /// @param funder Address that should be paid for the execution of this call\n /// @param paymentToken Token that should be used for the payment (0 is ETH)\n /// @param payment Value that should be paid\n constructor(address _masterCopy, bytes initializer, address funder, address paymentToken, uint256 payment) \n DelegateConstructorProxy(_masterCopy, initializer)\n public\n {\n if (payment > 0) {\n if (paymentToken == address(0)) {\n funder.transfer(payment);\n } else {\n require(ERC20Token(paymentToken).transfer(funder, payment));\n }\n } \n }\n}\n", + "bytecode": "0x608060405234801561001057600080fd5b50604051610502380380610502833981018060405281019080805190602001909291908051820192919060200180519060200190929190805190602001909291908051906020019092919050505084848160008173ffffffffffffffffffffffffffffffffffffffff1614151515610116576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f496e76616c6964206d617374657220636f707920616464726573732070726f7681526020017f696465640000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506000815111156101a35773ffffffffffffffffffffffffffffffffffffffff60005416600080835160208501846127105a03f46040513d6000823e600082141561019f573d81fd5b5050505b5050600081111561038357600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561022f578273ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610229573d6000803e3d6000fd5b50610382565b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156102d257600080fd5b505af11580156102e6573d6000803e3d6000fd5b505050506040513d60208110156102fc57600080fd5b81019080805190602001909291905050501515610381576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f436f756c64206e6f74206578656375746520746f6b656e207061796d656e740081525060200191505060405180910390fd5b5b5b505050505061016b806103976000396000f30060806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680634555d5c91461008b5780635c60da1b146100b6575b73ffffffffffffffffffffffffffffffffffffffff600054163660008037600080366000845af43d6000803e6000811415610086573d6000fd5b3d6000f35b34801561009757600080fd5b506100a061010d565b6040518082815260200191505060405180910390f35b3480156100c257600080fd5b506100cb610116565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60006002905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050905600a165627a7a723058207c0d46b157e8df6d783e305a80b9c841f620d4bf15b4e2b2c93f261b93e8d6fa0029", + "deployedBytecode": "0x60806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680634555d5c91461008b5780635c60da1b146100b6575b73ffffffffffffffffffffffffffffffffffffffff600054163660008037600080366000845af43d6000803e6000811415610086573d6000fd5b3d6000f35b34801561009757600080fd5b506100a061010d565b6040518082815260200191505060405180910390f35b3480156100c257600080fd5b506100cb610116565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60006002905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050905600a165627a7a723058207c0d46b157e8df6d783e305a80b9c841f620d4bf15b4e2b2c93f261b93e8d6fa0029", + "sourceMap": "452:940:10:-;;;924:466;8:9:-1;5:2;;;30:1;27;20:12;5:2;924:466:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1065:11;1078;668::0;593:1:11;578:11;:16;;;;570:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;658:11;645:10;;:24;;;;;;;;;;;;;;;;;;508:168;735:1:0;714:11;:18;:22;710:519;;;879:42;875:1;869:8;865:57;1043:1;1040;1026:11;1020:18;1013:4;1000:11;996:22;984:10;976:5;971:3;967:15;954:91;1079:4;1073:11;1124:14;1121:1;1116:3;1101:38;1171:1;1162:7;1159:14;1156:2;;;1188:14;1183:3;1176:27;1156:2;829:390;;;;610:625;;1134:1:10;1124:7;:11;1120:263;;;1179:1;1155:26;;:12;:26;;;1151:222;;;1201:6;:15;;:24;1217:7;1201:24;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1201:24:10;1151:222;;;1283:12;1272:33;;;1306:6;1314:7;1272:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1272:50:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1272:50:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1272:50:10;;;;;;;;;;;;;;;;1264:94;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1151:222;1120:263;924:466;;;;;452:940;;;;;;", + "deployedSourceMap": "452:940:10:-;;;;;;;;;;;;;;;;;;;;;;;;;;955:42:11;951:1;945:8;941:57;1030:14;1027:1;1024;1011:34;1125:1;1122;1106:14;1103:1;1091:10;1086:3;1073:54;1161:16;1158:1;1155;1140:38;1206:1;1197:7;1194:14;1191:2;;;1221:16;1218:1;1211:27;1191:2;1263:16;1260:1;1253:27;1426:104;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1426:104:11;;;;;;;;;;;;;;;;;;;;;;;1302:118;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1302:118:11;;;;;;;;;;;;;;;;;;;;;;;;;;;1426:104;1492:7;1522:1;1515:8;;1426:104;:::o;1302:118::-;1373:7;1403:10;;;;;;;;;;;1396:17;;1302:118;:::o", + "source": "pragma solidity 0.4.24;\nimport \"./DelegateConstructorProxy.sol\";\nimport \"./interfaces/ERC20Token.sol\";\n\n/// @title Paying Proxy - Generic proxy contract allows to execute all transactions applying the code of a master contract. It is possible to send along initialization data with the constructor. And sends funds after creation to a specified account.\n/// @author Stefan George - \n/// @author Richard Meissner - \ncontract PayingProxy is DelegateConstructorProxy {\n\n /// @dev Constructor function sets address of master copy contract.\n /// @param _masterCopy Master copy address.\n /// @param initializer Data used for a delegate call to initialize the contract.\n /// @param funder Address that should be paid for the execution of this call\n /// @param paymentToken Token that should be used for the payment (0 is ETH)\n /// @param payment Value that should be paid\n constructor(address _masterCopy, bytes initializer, address funder, address paymentToken, uint256 payment) \n DelegateConstructorProxy(_masterCopy, initializer)\n public\n {\n if (payment > 0) {\n if (paymentToken == address(0)) {\n funder.transfer(payment);\n } else {\n require(ERC20Token(paymentToken).transfer(funder, payment), \"Could not execute token payment\");\n }\n } \n }\n}\n", "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/PayingProxy.sol", "ast": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/PayingProxy.sol", "exportedSymbols": { "PayingProxy": [ - 1526 + 1559 ] }, - "id": 1527, + "id": 1560, "nodeType": "SourceUnit", "nodes": [ { - "id": 1474, + "id": 1506, "literals": [ "solidity", "0.4", @@ -91,9 +91,9 @@ { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/DelegateConstructorProxy.sol", "file": "./DelegateConstructorProxy.sol", - "id": 1475, + "id": 1507, "nodeType": "ImportDirective", - "scope": 1527, + "scope": 1560, "sourceUnit": 24, "src": "24:40:10", "symbolAliases": [], @@ -102,10 +102,10 @@ { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/interfaces/ERC20Token.sol", "file": "./interfaces/ERC20Token.sol", - "id": 1476, + "id": 1508, "nodeType": "ImportDirective", - "scope": 1527, - "sourceUnit": 1686, + "scope": 1560, + "sourceUnit": 1721, "src": "65:37:10", "symbolAliases": [], "unitAlias": "" @@ -116,7 +116,7 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 1477, + "id": 1509, "name": "DelegateConstructorProxy", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 23, @@ -126,32 +126,32 @@ "typeString": "contract DelegateConstructorProxy" } }, - "id": 1478, + "id": 1510, "nodeType": "InheritanceSpecifier", "src": "476:24:10" } ], "contractDependencies": [ 23, - 1568 + 1602 ], "contractKind": "contract", "documentation": "@title Paying Proxy - Generic proxy contract allows to execute all transactions applying the code of a master contract. It is possible to send along initialization data with the constructor. And sends funds after creation to a specified account.\n @author Stefan George - \n @author Richard Meissner - ", "fullyImplemented": true, - "id": 1526, + "id": 1559, "linearizedBaseContracts": [ - 1526, + 1559, 23, - 1568 + 1602 ], "name": "PayingProxy", "nodeType": "ContractDefinition", "nodes": [ { "body": { - "id": 1524, + "id": 1557, "nodeType": "Block", - "src": "1110:245:10", + "src": "1110:280:10", "statements": [ { "condition": { @@ -160,18 +160,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1497, + "id": 1529, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1495, + "id": 1527, "name": "payment", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1488, + "referencedDeclaration": 1520, "src": "1124:7:10", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -183,7 +183,7 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1496, + "id": 1528, "isConstant": false, "isLValue": false, "isPure": true, @@ -205,13 +205,13 @@ } }, "falseBody": null, - "id": 1523, + "id": 1556, "nodeType": "IfStatement", - "src": "1120:228:10", + "src": "1120:263:10", "trueBody": { - "id": 1522, + "id": 1555, "nodeType": "Block", - "src": "1137:211:10", + "src": "1137:246:10", "statements": [ { "condition": { @@ -220,18 +220,18 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1502, + "id": 1534, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1498, + "id": 1530, "name": "paymentToken", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1486, + "referencedDeclaration": 1518, "src": "1155:12:10", "typeDescriptions": { "typeIdentifier": "t_address", @@ -246,7 +246,7 @@ { "argumentTypes": null, "hexValue": "30", - "id": 1500, + "id": 1532, "isConstant": false, "isLValue": false, "isPure": true, @@ -269,7 +269,7 @@ "typeString": "int_const 0" } ], - "id": 1499, + "id": 1531, "isConstant": false, "isLValue": false, "isPure": true, @@ -282,7 +282,7 @@ }, "typeName": "address" }, - "id": 1501, + "id": 1533, "isConstant": false, "isLValue": false, "isPure": true, @@ -303,9 +303,9 @@ } }, "falseBody": { - "id": 1520, + "id": 1553, "nodeType": "Block", - "src": "1246:92:10", + "src": "1246:127:10", "statements": [ { "expression": { @@ -316,11 +316,11 @@ "arguments": [ { "argumentTypes": null, - "id": 1515, + "id": 1547, "name": "funder", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1484, + "referencedDeclaration": 1516, "src": "1306:6:10", "typeDescriptions": { "typeIdentifier": "t_address", @@ -329,11 +329,11 @@ }, { "argumentTypes": null, - "id": 1516, + "id": 1548, "name": "payment", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1488, + "referencedDeclaration": 1520, "src": "1314:7:10", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -357,11 +357,11 @@ "arguments": [ { "argumentTypes": null, - "id": 1512, + "id": 1544, "name": "paymentToken", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1486, + "referencedDeclaration": 1518, "src": "1283:12:10", "typeDescriptions": { "typeIdentifier": "t_address", @@ -376,18 +376,18 @@ "typeString": "address" } ], - "id": 1511, + "id": 1543, "name": "ERC20Token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1685, + "referencedDeclaration": 1720, "src": "1272:10:10", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_ERC20Token_$1685_$", + "typeIdentifier": "t_type$_t_contract$_ERC20Token_$1720_$", "typeString": "type(contract ERC20Token)" } }, - "id": 1513, + "id": 1545, "isConstant": false, "isLValue": false, "isPure": false, @@ -397,25 +397,25 @@ "nodeType": "FunctionCall", "src": "1272:24:10", "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20Token_$1685", + "typeIdentifier": "t_contract$_ERC20Token_$1720", "typeString": "contract ERC20Token" } }, - "id": 1514, + "id": 1546, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "transfer", "nodeType": "MemberAccess", - "referencedDeclaration": 1639, + "referencedDeclaration": 1674, "src": "1272:33:10", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)" } }, - "id": 1517, + "id": 1549, "isConstant": false, "isLValue": false, "isPure": false, @@ -428,6 +428,24 @@ "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "436f756c64206e6f74206578656375746520746f6b656e207061796d656e74", + "id": 1550, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1324:33:10", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_56ee7cbc844d6a78f120ea6d555eb9afe8d3243b816d5489758d19d83ae941d2", + "typeString": "literal_string \"Could not execute token payment\"" + }, + "value": "Could not execute token payment" } ], "expression": { @@ -435,23 +453,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_56ee7cbc844d6a78f120ea6d555eb9afe8d3243b816d5489758d19d83ae941d2", + "typeString": "literal_string \"Could not execute token payment\"" } ], - "id": 1510, + "id": 1542, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, + "referencedDeclaration": 2658, "src": "1264:7:10", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 1518, + "id": 1551, "isConstant": false, "isLValue": false, "isPure": false, @@ -459,23 +481,23 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1264:59:10", + "src": "1264:94:10", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1519, + "id": 1552, "nodeType": "ExpressionStatement", - "src": "1264:59:10" + "src": "1264:94:10" } ] }, - "id": 1521, + "id": 1554, "nodeType": "IfStatement", - "src": "1151:187:10", + "src": "1151:222:10", "trueBody": { - "id": 1509, + "id": 1541, "nodeType": "Block", "src": "1183:57:10", "statements": [ @@ -485,11 +507,11 @@ "arguments": [ { "argumentTypes": null, - "id": 1506, + "id": 1538, "name": "payment", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1488, + "referencedDeclaration": 1520, "src": "1217:7:10", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -506,18 +528,18 @@ ], "expression": { "argumentTypes": null, - "id": 1503, + "id": 1535, "name": "funder", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1484, + "referencedDeclaration": 1516, "src": "1201:6:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1505, + "id": 1537, "isConstant": false, "isLValue": false, "isPure": false, @@ -531,7 +553,7 @@ "typeString": "function (uint256)" } }, - "id": 1507, + "id": 1539, "isConstant": false, "isLValue": false, "isPure": false, @@ -545,7 +567,7 @@ "typeString": "tuple()" } }, - "id": 1508, + "id": 1540, "nodeType": "ExpressionStatement", "src": "1201:24:10" } @@ -558,7 +580,7 @@ ] }, "documentation": "@dev Constructor function sets address of master copy contract.\n @param _masterCopy Master copy address.\n @param initializer Data used for a delegate call to initialize the contract.\n @param funder Address that should be paid for the execution of this call\n @param paymentToken Token that should be used for the payment (0 is ETH)\n @param payment Value that should be paid", - "id": 1525, + "id": 1558, "implemented": true, "isConstructor": true, "isDeclaredConst": false, @@ -567,11 +589,11 @@ "arguments": [ { "argumentTypes": null, - "id": 1491, + "id": 1523, "name": "_masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1480, + "referencedDeclaration": 1512, "src": "1065:11:10", "typeDescriptions": { "typeIdentifier": "t_address", @@ -580,11 +602,11 @@ }, { "argumentTypes": null, - "id": 1492, + "id": 1524, "name": "initializer", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1482, + "referencedDeclaration": 1514, "src": "1078:11:10", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", @@ -592,10 +614,10 @@ } } ], - "id": 1493, + "id": 1525, "modifierName": { "argumentTypes": null, - "id": 1490, + "id": 1522, "name": "DelegateConstructorProxy", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -613,15 +635,15 @@ "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 1489, + "id": 1521, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1480, + "id": 1512, "name": "_masterCopy", "nodeType": "VariableDeclaration", - "scope": 1525, + "scope": 1558, "src": "936:19:10", "stateVariable": false, "storageLocation": "default", @@ -630,7 +652,7 @@ "typeString": "address" }, "typeName": { - "id": 1479, + "id": 1511, "name": "address", "nodeType": "ElementaryTypeName", "src": "936:7:10", @@ -644,10 +666,10 @@ }, { "constant": false, - "id": 1482, + "id": 1514, "name": "initializer", "nodeType": "VariableDeclaration", - "scope": 1525, + "scope": 1558, "src": "957:17:10", "stateVariable": false, "storageLocation": "default", @@ -656,7 +678,7 @@ "typeString": "bytes" }, "typeName": { - "id": 1481, + "id": 1513, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "957:5:10", @@ -670,10 +692,10 @@ }, { "constant": false, - "id": 1484, + "id": 1516, "name": "funder", "nodeType": "VariableDeclaration", - "scope": 1525, + "scope": 1558, "src": "976:14:10", "stateVariable": false, "storageLocation": "default", @@ -682,7 +704,7 @@ "typeString": "address" }, "typeName": { - "id": 1483, + "id": 1515, "name": "address", "nodeType": "ElementaryTypeName", "src": "976:7:10", @@ -696,10 +718,10 @@ }, { "constant": false, - "id": 1486, + "id": 1518, "name": "paymentToken", "nodeType": "VariableDeclaration", - "scope": 1525, + "scope": 1558, "src": "992:20:10", "stateVariable": false, "storageLocation": "default", @@ -708,7 +730,7 @@ "typeString": "address" }, "typeName": { - "id": 1485, + "id": 1517, "name": "address", "nodeType": "ElementaryTypeName", "src": "992:7:10", @@ -722,10 +744,10 @@ }, { "constant": false, - "id": 1488, + "id": 1520, "name": "payment", "nodeType": "VariableDeclaration", - "scope": 1525, + "scope": 1558, "src": "1014:15:10", "stateVariable": false, "storageLocation": "default", @@ -734,7 +756,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1487, + "id": 1519, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1014:7:10", @@ -751,36 +773,36 @@ }, "payable": false, "returnParameters": { - "id": 1494, + "id": 1526, "nodeType": "ParameterList", "parameters": [], "src": "1110:0:10" }, - "scope": 1526, - "src": "924:431:10", + "scope": 1559, + "src": "924:466:10", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" } ], - "scope": 1527, - "src": "452:905:10" + "scope": 1560, + "src": "452:940:10" } ], - "src": "0:1358:10" + "src": "0:1393:10" }, "legacyAST": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/PayingProxy.sol", "exportedSymbols": { "PayingProxy": [ - 1526 + 1559 ] }, - "id": 1527, + "id": 1560, "nodeType": "SourceUnit", "nodes": [ { - "id": 1474, + "id": 1506, "literals": [ "solidity", "0.4", @@ -792,9 +814,9 @@ { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/DelegateConstructorProxy.sol", "file": "./DelegateConstructorProxy.sol", - "id": 1475, + "id": 1507, "nodeType": "ImportDirective", - "scope": 1527, + "scope": 1560, "sourceUnit": 24, "src": "24:40:10", "symbolAliases": [], @@ -803,10 +825,10 @@ { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/interfaces/ERC20Token.sol", "file": "./interfaces/ERC20Token.sol", - "id": 1476, + "id": 1508, "nodeType": "ImportDirective", - "scope": 1527, - "sourceUnit": 1686, + "scope": 1560, + "sourceUnit": 1721, "src": "65:37:10", "symbolAliases": [], "unitAlias": "" @@ -817,7 +839,7 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 1477, + "id": 1509, "name": "DelegateConstructorProxy", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 23, @@ -827,32 +849,32 @@ "typeString": "contract DelegateConstructorProxy" } }, - "id": 1478, + "id": 1510, "nodeType": "InheritanceSpecifier", "src": "476:24:10" } ], "contractDependencies": [ 23, - 1568 + 1602 ], "contractKind": "contract", "documentation": "@title Paying Proxy - Generic proxy contract allows to execute all transactions applying the code of a master contract. It is possible to send along initialization data with the constructor. And sends funds after creation to a specified account.\n @author Stefan George - \n @author Richard Meissner - ", "fullyImplemented": true, - "id": 1526, + "id": 1559, "linearizedBaseContracts": [ - 1526, + 1559, 23, - 1568 + 1602 ], "name": "PayingProxy", "nodeType": "ContractDefinition", "nodes": [ { "body": { - "id": 1524, + "id": 1557, "nodeType": "Block", - "src": "1110:245:10", + "src": "1110:280:10", "statements": [ { "condition": { @@ -861,18 +883,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1497, + "id": 1529, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1495, + "id": 1527, "name": "payment", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1488, + "referencedDeclaration": 1520, "src": "1124:7:10", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -884,7 +906,7 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1496, + "id": 1528, "isConstant": false, "isLValue": false, "isPure": true, @@ -906,13 +928,13 @@ } }, "falseBody": null, - "id": 1523, + "id": 1556, "nodeType": "IfStatement", - "src": "1120:228:10", + "src": "1120:263:10", "trueBody": { - "id": 1522, + "id": 1555, "nodeType": "Block", - "src": "1137:211:10", + "src": "1137:246:10", "statements": [ { "condition": { @@ -921,18 +943,18 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1502, + "id": 1534, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1498, + "id": 1530, "name": "paymentToken", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1486, + "referencedDeclaration": 1518, "src": "1155:12:10", "typeDescriptions": { "typeIdentifier": "t_address", @@ -947,7 +969,7 @@ { "argumentTypes": null, "hexValue": "30", - "id": 1500, + "id": 1532, "isConstant": false, "isLValue": false, "isPure": true, @@ -970,7 +992,7 @@ "typeString": "int_const 0" } ], - "id": 1499, + "id": 1531, "isConstant": false, "isLValue": false, "isPure": true, @@ -983,7 +1005,7 @@ }, "typeName": "address" }, - "id": 1501, + "id": 1533, "isConstant": false, "isLValue": false, "isPure": true, @@ -1004,9 +1026,9 @@ } }, "falseBody": { - "id": 1520, + "id": 1553, "nodeType": "Block", - "src": "1246:92:10", + "src": "1246:127:10", "statements": [ { "expression": { @@ -1017,11 +1039,11 @@ "arguments": [ { "argumentTypes": null, - "id": 1515, + "id": 1547, "name": "funder", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1484, + "referencedDeclaration": 1516, "src": "1306:6:10", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1030,11 +1052,11 @@ }, { "argumentTypes": null, - "id": 1516, + "id": 1548, "name": "payment", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1488, + "referencedDeclaration": 1520, "src": "1314:7:10", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -1058,11 +1080,11 @@ "arguments": [ { "argumentTypes": null, - "id": 1512, + "id": 1544, "name": "paymentToken", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1486, + "referencedDeclaration": 1518, "src": "1283:12:10", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1077,18 +1099,18 @@ "typeString": "address" } ], - "id": 1511, + "id": 1543, "name": "ERC20Token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1685, + "referencedDeclaration": 1720, "src": "1272:10:10", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_ERC20Token_$1685_$", + "typeIdentifier": "t_type$_t_contract$_ERC20Token_$1720_$", "typeString": "type(contract ERC20Token)" } }, - "id": 1513, + "id": 1545, "isConstant": false, "isLValue": false, "isPure": false, @@ -1098,25 +1120,25 @@ "nodeType": "FunctionCall", "src": "1272:24:10", "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20Token_$1685", + "typeIdentifier": "t_contract$_ERC20Token_$1720", "typeString": "contract ERC20Token" } }, - "id": 1514, + "id": 1546, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "transfer", "nodeType": "MemberAccess", - "referencedDeclaration": 1639, + "referencedDeclaration": 1674, "src": "1272:33:10", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)" } }, - "id": 1517, + "id": 1549, "isConstant": false, "isLValue": false, "isPure": false, @@ -1129,6 +1151,24 @@ "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "436f756c64206e6f74206578656375746520746f6b656e207061796d656e74", + "id": 1550, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1324:33:10", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_56ee7cbc844d6a78f120ea6d555eb9afe8d3243b816d5489758d19d83ae941d2", + "typeString": "literal_string \"Could not execute token payment\"" + }, + "value": "Could not execute token payment" } ], "expression": { @@ -1136,23 +1176,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_56ee7cbc844d6a78f120ea6d555eb9afe8d3243b816d5489758d19d83ae941d2", + "typeString": "literal_string \"Could not execute token payment\"" } ], - "id": 1510, + "id": 1542, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, + "referencedDeclaration": 2658, "src": "1264:7:10", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 1518, + "id": 1551, "isConstant": false, "isLValue": false, "isPure": false, @@ -1160,23 +1204,23 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1264:59:10", + "src": "1264:94:10", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1519, + "id": 1552, "nodeType": "ExpressionStatement", - "src": "1264:59:10" + "src": "1264:94:10" } ] }, - "id": 1521, + "id": 1554, "nodeType": "IfStatement", - "src": "1151:187:10", + "src": "1151:222:10", "trueBody": { - "id": 1509, + "id": 1541, "nodeType": "Block", "src": "1183:57:10", "statements": [ @@ -1186,11 +1230,11 @@ "arguments": [ { "argumentTypes": null, - "id": 1506, + "id": 1538, "name": "payment", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1488, + "referencedDeclaration": 1520, "src": "1217:7:10", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -1207,18 +1251,18 @@ ], "expression": { "argumentTypes": null, - "id": 1503, + "id": 1535, "name": "funder", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1484, + "referencedDeclaration": 1516, "src": "1201:6:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1505, + "id": 1537, "isConstant": false, "isLValue": false, "isPure": false, @@ -1232,7 +1276,7 @@ "typeString": "function (uint256)" } }, - "id": 1507, + "id": 1539, "isConstant": false, "isLValue": false, "isPure": false, @@ -1246,7 +1290,7 @@ "typeString": "tuple()" } }, - "id": 1508, + "id": 1540, "nodeType": "ExpressionStatement", "src": "1201:24:10" } @@ -1259,7 +1303,7 @@ ] }, "documentation": "@dev Constructor function sets address of master copy contract.\n @param _masterCopy Master copy address.\n @param initializer Data used for a delegate call to initialize the contract.\n @param funder Address that should be paid for the execution of this call\n @param paymentToken Token that should be used for the payment (0 is ETH)\n @param payment Value that should be paid", - "id": 1525, + "id": 1558, "implemented": true, "isConstructor": true, "isDeclaredConst": false, @@ -1268,11 +1312,11 @@ "arguments": [ { "argumentTypes": null, - "id": 1491, + "id": 1523, "name": "_masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1480, + "referencedDeclaration": 1512, "src": "1065:11:10", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1281,11 +1325,11 @@ }, { "argumentTypes": null, - "id": 1492, + "id": 1524, "name": "initializer", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1482, + "referencedDeclaration": 1514, "src": "1078:11:10", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", @@ -1293,10 +1337,10 @@ } } ], - "id": 1493, + "id": 1525, "modifierName": { "argumentTypes": null, - "id": 1490, + "id": 1522, "name": "DelegateConstructorProxy", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -1314,15 +1358,15 @@ "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 1489, + "id": 1521, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1480, + "id": 1512, "name": "_masterCopy", "nodeType": "VariableDeclaration", - "scope": 1525, + "scope": 1558, "src": "936:19:10", "stateVariable": false, "storageLocation": "default", @@ -1331,7 +1375,7 @@ "typeString": "address" }, "typeName": { - "id": 1479, + "id": 1511, "name": "address", "nodeType": "ElementaryTypeName", "src": "936:7:10", @@ -1345,10 +1389,10 @@ }, { "constant": false, - "id": 1482, + "id": 1514, "name": "initializer", "nodeType": "VariableDeclaration", - "scope": 1525, + "scope": 1558, "src": "957:17:10", "stateVariable": false, "storageLocation": "default", @@ -1357,7 +1401,7 @@ "typeString": "bytes" }, "typeName": { - "id": 1481, + "id": 1513, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "957:5:10", @@ -1371,10 +1415,10 @@ }, { "constant": false, - "id": 1484, + "id": 1516, "name": "funder", "nodeType": "VariableDeclaration", - "scope": 1525, + "scope": 1558, "src": "976:14:10", "stateVariable": false, "storageLocation": "default", @@ -1383,7 +1427,7 @@ "typeString": "address" }, "typeName": { - "id": 1483, + "id": 1515, "name": "address", "nodeType": "ElementaryTypeName", "src": "976:7:10", @@ -1397,10 +1441,10 @@ }, { "constant": false, - "id": 1486, + "id": 1518, "name": "paymentToken", "nodeType": "VariableDeclaration", - "scope": 1525, + "scope": 1558, "src": "992:20:10", "stateVariable": false, "storageLocation": "default", @@ -1409,7 +1453,7 @@ "typeString": "address" }, "typeName": { - "id": 1485, + "id": 1517, "name": "address", "nodeType": "ElementaryTypeName", "src": "992:7:10", @@ -1423,10 +1467,10 @@ }, { "constant": false, - "id": 1488, + "id": 1520, "name": "payment", "nodeType": "VariableDeclaration", - "scope": 1525, + "scope": 1558, "src": "1014:15:10", "stateVariable": false, "storageLocation": "default", @@ -1435,7 +1479,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1487, + "id": 1519, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1014:7:10", @@ -1452,23 +1496,23 @@ }, "payable": false, "returnParameters": { - "id": 1494, + "id": 1526, "nodeType": "ParameterList", "parameters": [], "src": "1110:0:10" }, - "scope": 1526, - "src": "924:431:10", + "scope": 1559, + "src": "924:466:10", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" } ], - "scope": 1527, - "src": "452:905:10" + "scope": 1560, + "src": "452:940:10" } ], - "src": "0:1358:10" + "src": "0:1393:10" }, "compiler": { "name": "solc", @@ -1476,5 +1520,5 @@ }, "networks": {}, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-27T11:12:45.583Z" + "updatedAt": "2018-05-28T05:59:52.706Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/Proxy.json b/safe-contracts/build/contracts/Proxy.json index aae27a07..cef33106 100644 --- a/safe-contracts/build/contracts/Proxy.json +++ b/safe-contracts/build/contracts/Proxy.json @@ -46,24 +46,24 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b506040516020806102148339810180604052810190808051906020019092919050505060008173ffffffffffffffffffffffffffffffffffffffff161415151561005957600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505061016b806100a96000396000f30060806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680634555d5c91461008b5780635c60da1b146100b6575b73ffffffffffffffffffffffffffffffffffffffff600054163660008037600080366000845af43d6000803e6000811415610086573d6000fd5b3d6000f35b34801561009757600080fd5b506100a061010d565b6040518082815260200191505060405180910390f35b3480156100c257600080fd5b506100cb610116565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60006002905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050905600a165627a7a72305820cd7d1e9dd84eb221f79b1c8f72a39fad7d9f8ab7239d25c1fc563147abcaf4150029", - "deployedBytecode": "0x60806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680634555d5c91461008b5780635c60da1b146100b6575b73ffffffffffffffffffffffffffffffffffffffff600054163660008037600080366000845af43d6000803e6000811415610086573d6000fd5b3d6000f35b34801561009757600080fd5b506100a061010d565b6040518082815260200191505060405180910390f35b3480156100c257600080fd5b506100cb610116565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60006002905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050905600a165627a7a72305820cd7d1e9dd84eb221f79b1c8f72a39fad7d9f8ab7239d25c1fc563147abcaf4150029", - "sourceMap": "190:1302:11:-;;;508:128;8:9:-1;5:2;;;30:1;27;20:12;5:2;508:128:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;593:1;578:11;:16;;;;570:25;;;;;;;;618:11;605:10;;:24;;;;;;;;;;;;;;;;;;508:128;190:1302;;;;;;", - "deployedSourceMap": "190:1302:11:-;;;;;;;;;;;;;;;;;;;;;;;;;;915:42;911:1;905:8;901:57;990:14;987:1;984;971:34;1085:1;1082;1066:14;1063:1;1051:10;1046:3;1033:54;1121:16;1118:1;1115;1100:38;1166:1;1157:7;1154:14;1151:2;;;1181:16;1178:1;1171:27;1151:2;1223:16;1220:1;1213:27;1386:104;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1386:104:11;;;;;;;;;;;;;;;;;;;;;;;1262:118;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1262:118:11;;;;;;;;;;;;;;;;;;;;;;;;;;;1386:104;1452:7;1482:1;1475:8;;1386:104;:::o;1262:118::-;1333:7;1363:10;;;;;;;;;;;1356:17;;1262:118;:::o", - "source": "pragma solidity 0.4.24;\n\n\n/// @title Proxy - Generic proxy contract allows to execute all transactions applying the code of a master contract.\n/// @author Stefan George - \ncontract Proxy {\n\n // masterCopy always needs to be first declared variable, to ensure that it is at the same location in the contracts to which calls are delegated.\n address masterCopy;\n\n /// @dev Constructor function sets address of master copy contract.\n /// @param _masterCopy Master copy address.\n constructor(address _masterCopy)\n public\n {\n require(_masterCopy != 0);\n masterCopy = _masterCopy;\n }\n\n /// @dev Fallback function forwards all transactions and returns all received return data.\n function ()\n external\n payable\n {\n // solium-disable-next-line security/no-inline-assembly\n assembly {\n let masterCopy := and(sload(0), 0xffffffffffffffffffffffffffffffffffffffff)\n calldatacopy(0, 0, calldatasize())\n let success := delegatecall(gas, masterCopy, 0, calldatasize(), 0, 0)\n returndatacopy(0, 0, returndatasize())\n if eq(success, 0) { revert(0, returndatasize()) }\n return(0, returndatasize())\n }\n }\n\n function implementation()\n public\n view\n returns (address)\n {\n return masterCopy;\n }\n\n function proxyType()\n public\n pure\n returns (uint256)\n {\n return 2;\n }\n}\n", + "bytecode": "0x608060405234801561001057600080fd5b506040516020806102a38339810180604052810190808051906020019092919050505060008173ffffffffffffffffffffffffffffffffffffffff16141515156100e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f496e76616c6964206d617374657220636f707920616464726573732070726f7681526020017f696465640000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505061016b806101386000396000f30060806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680634555d5c91461008b5780635c60da1b146100b6575b73ffffffffffffffffffffffffffffffffffffffff600054163660008037600080366000845af43d6000803e6000811415610086573d6000fd5b3d6000f35b34801561009757600080fd5b506100a061010d565b6040518082815260200191505060405180910390f35b3480156100c257600080fd5b506100cb610116565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60006002905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050905600a165627a7a72305820fb8f7addc79801292900c520af66dd86a1f9d0b643abe5d3ef1ac03eeb2d04080029", + "deployedBytecode": "0x60806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680634555d5c91461008b5780635c60da1b146100b6575b73ffffffffffffffffffffffffffffffffffffffff600054163660008037600080366000845af43d6000803e6000811415610086573d6000fd5b3d6000f35b34801561009757600080fd5b506100a061010d565b6040518082815260200191505060405180910390f35b3480156100c257600080fd5b506100cb610116565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60006002905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050905600a165627a7a72305820fb8f7addc79801292900c520af66dd86a1f9d0b643abe5d3ef1ac03eeb2d04080029", + "sourceMap": "190:1342:11:-;;;508:168;8:9:-1;5:2;;;30:1;27;20:12;5:2;508:168:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;593:1;578:11;:16;;;;570:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;658:11;645:10;;:24;;;;;;;;;;;;;;;;;;508:168;190:1342;;;;;;", + "deployedSourceMap": "190:1342:11:-;;;;;;;;;;;;;;;;;;;;;;;;;;955:42;951:1;945:8;941:57;1030:14;1027:1;1024;1011:34;1125:1;1122;1106:14;1103:1;1091:10;1086:3;1073:54;1161:16;1158:1;1155;1140:38;1206:1;1197:7;1194:14;1191:2;;;1221:16;1218:1;1211:27;1191:2;1263:16;1260:1;1253:27;1426:104;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1426:104:11;;;;;;;;;;;;;;;;;;;;;;;1302:118;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1302:118:11;;;;;;;;;;;;;;;;;;;;;;;;;;;1426:104;1492:7;1522:1;1515:8;;1426:104;:::o;1302:118::-;1373:7;1403:10;;;;;;;;;;;1396:17;;1302:118;:::o", + "source": "pragma solidity 0.4.24;\n\n\n/// @title Proxy - Generic proxy contract allows to execute all transactions applying the code of a master contract.\n/// @author Stefan George - \ncontract Proxy {\n\n // masterCopy always needs to be first declared variable, to ensure that it is at the same location in the contracts to which calls are delegated.\n address masterCopy;\n\n /// @dev Constructor function sets address of master copy contract.\n /// @param _masterCopy Master copy address.\n constructor(address _masterCopy)\n public\n {\n require(_masterCopy != 0, \"Invalid master copy address provided\");\n masterCopy = _masterCopy;\n }\n\n /// @dev Fallback function forwards all transactions and returns all received return data.\n function ()\n external\n payable\n {\n // solium-disable-next-line security/no-inline-assembly\n assembly {\n let masterCopy := and(sload(0), 0xffffffffffffffffffffffffffffffffffffffff)\n calldatacopy(0, 0, calldatasize())\n let success := delegatecall(gas, masterCopy, 0, calldatasize(), 0, 0)\n returndatacopy(0, 0, returndatasize())\n if eq(success, 0) { revert(0, returndatasize()) }\n return(0, returndatasize())\n }\n }\n\n function implementation()\n public\n view\n returns (address)\n {\n return masterCopy;\n }\n\n function proxyType()\n public\n pure\n returns (uint256)\n {\n return 2;\n }\n}\n", "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Proxy.sol", "ast": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Proxy.sol", "exportedSymbols": { "Proxy": [ - 1568 + 1602 ] }, - "id": 1569, + "id": 1603, "nodeType": "SourceUnit", "nodes": [ { - "id": 1528, + "id": 1561, "literals": [ "solidity", "0.4", @@ -78,19 +78,19 @@ "contractKind": "contract", "documentation": "@title Proxy - Generic proxy contract allows to execute all transactions applying the code of a master contract.\n @author Stefan George - ", "fullyImplemented": true, - "id": 1568, + "id": 1602, "linearizedBaseContracts": [ - 1568 + 1602 ], "name": "Proxy", "nodeType": "ContractDefinition", "nodes": [ { "constant": false, - "id": 1530, + "id": 1563, "name": "masterCopy", "nodeType": "VariableDeclaration", - "scope": 1568, + "scope": 1602, "src": "363:18:11", "stateVariable": true, "storageLocation": "default", @@ -99,7 +99,7 @@ "typeString": "address" }, "typeName": { - "id": 1529, + "id": 1562, "name": "address", "nodeType": "ElementaryTypeName", "src": "363:7:11", @@ -113,9 +113,9 @@ }, { "body": { - "id": 1545, + "id": 1579, "nodeType": "Block", - "src": "560:76:11", + "src": "560:116:11", "statements": [ { "expression": { @@ -127,18 +127,18 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1538, + "id": 1571, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1536, + "id": 1569, "name": "_masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1532, + "referencedDeclaration": 1565, "src": "578:11:11", "typeDescriptions": { "typeIdentifier": "t_address", @@ -150,7 +150,7 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1537, + "id": 1570, "isConstant": false, "isLValue": false, "isPure": true, @@ -170,6 +170,24 @@ "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "496e76616c6964206d617374657220636f707920616464726573732070726f7669646564", + "id": 1572, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "596:38:11", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_108d84599042957b954e89d43b52f80be89321dfc114a37800028eba58dafc87", + "typeString": "literal_string \"Invalid master copy address provided\"" + }, + "value": "Invalid master copy address provided" } ], "expression": { @@ -177,23 +195,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_108d84599042957b954e89d43b52f80be89321dfc114a37800028eba58dafc87", + "typeString": "literal_string \"Invalid master copy address provided\"" } ], - "id": 1535, + "id": 1568, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, + "referencedDeclaration": 2658, "src": "570:7:11", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 1539, + "id": 1573, "isConstant": false, "isLValue": false, "isPure": false, @@ -201,32 +223,32 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "570:25:11", + "src": "570:65:11", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1540, + "id": 1574, "nodeType": "ExpressionStatement", - "src": "570:25:11" + "src": "570:65:11" }, { "expression": { "argumentTypes": null, - "id": 1543, + "id": 1577, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1541, + "id": 1575, "name": "masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1530, - "src": "605:10:11", + "referencedDeclaration": 1563, + "src": "645:10:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -236,31 +258,31 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1542, + "id": 1576, "name": "_masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1532, - "src": "618:11:11", + "referencedDeclaration": 1565, + "src": "658:11:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "605:24:11", + "src": "645:24:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1544, + "id": 1578, "nodeType": "ExpressionStatement", - "src": "605:24:11" + "src": "645:24:11" } ] }, "documentation": "@dev Constructor function sets address of master copy contract.\n @param _masterCopy Master copy address.", - "id": 1546, + "id": 1580, "implemented": true, "isConstructor": true, "isDeclaredConst": false, @@ -268,15 +290,15 @@ "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 1533, + "id": 1566, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1532, + "id": 1565, "name": "_masterCopy", "nodeType": "VariableDeclaration", - "scope": 1546, + "scope": 1580, "src": "520:19:11", "stateVariable": false, "storageLocation": "default", @@ -285,7 +307,7 @@ "typeString": "address" }, "typeName": { - "id": 1531, + "id": 1564, "name": "address", "nodeType": "ElementaryTypeName", "src": "520:7:11", @@ -302,34 +324,34 @@ }, "payable": false, "returnParameters": { - "id": 1534, + "id": 1567, "nodeType": "ParameterList", "parameters": [], "src": "560:0:11" }, - "scope": 1568, - "src": "508:128:11", + "scope": 1602, + "src": "508:168:11", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1550, + "id": 1584, "nodeType": "Block", - "src": "786:470:11", + "src": "826:470:11", "statements": [ { "externalReferences": [], - "id": 1549, + "id": 1583, "nodeType": "InlineAssembly", "operations": "{\n let masterCopy := and(sload(0), 0xffffffffffffffffffffffffffffffffffffffff)\n calldatacopy(0, 0, calldatasize())\n let success := delegatecall(gas(), masterCopy, 0, calldatasize(), 0, 0)\n returndatacopy(0, 0, returndatasize())\n if eq(success, 0)\n {\n revert(0, returndatasize())\n }\n return(0, returndatasize())\n}", - "src": "860:396:11" + "src": "900:396:11" } ] }, "documentation": "@dev Fallback function forwards all transactions and returns all received return data.", - "id": 1551, + "id": 1585, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -337,53 +359,53 @@ "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 1547, + "id": 1581, "nodeType": "ParameterList", "parameters": [], - "src": "746:2:11" + "src": "786:2:11" }, "payable": true, "returnParameters": { - "id": 1548, + "id": 1582, "nodeType": "ParameterList", "parameters": [], - "src": "786:0:11" + "src": "826:0:11" }, - "scope": 1568, - "src": "737:519:11", + "scope": 1602, + "src": "777:519:11", "stateMutability": "payable", "superFunction": null, "visibility": "external" }, { "body": { - "id": 1558, + "id": 1592, "nodeType": "Block", - "src": "1346:34:11", + "src": "1386:34:11", "statements": [ { "expression": { "argumentTypes": null, - "id": 1556, + "id": 1590, "name": "masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1530, - "src": "1363:10:11", + "referencedDeclaration": 1563, + "src": "1403:10:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "functionReturnParameters": 1555, - "id": 1557, + "functionReturnParameters": 1589, + "id": 1591, "nodeType": "Return", - "src": "1356:17:11" + "src": "1396:17:11" } ] }, "documentation": null, - "id": 1559, + "id": 1593, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -391,23 +413,23 @@ "name": "implementation", "nodeType": "FunctionDefinition", "parameters": { - "id": 1552, + "id": 1586, "nodeType": "ParameterList", "parameters": [], - "src": "1285:2:11" + "src": "1325:2:11" }, "payable": false, "returnParameters": { - "id": 1555, + "id": 1589, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1554, + "id": 1588, "name": "", "nodeType": "VariableDeclaration", - "scope": 1559, - "src": "1333:7:11", + "scope": 1593, + "src": "1373:7:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -415,10 +437,10 @@ "typeString": "address" }, "typeName": { - "id": 1553, + "id": 1587, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1333:7:11", + "src": "1373:7:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -428,32 +450,32 @@ "visibility": "internal" } ], - "src": "1332:9:11" + "src": "1372:9:11" }, - "scope": 1568, - "src": "1262:118:11", + "scope": 1602, + "src": "1302:118:11", "stateMutability": "view", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1566, + "id": 1600, "nodeType": "Block", - "src": "1465:25:11", + "src": "1505:25:11", "statements": [ { "expression": { "argumentTypes": null, "hexValue": "32", - "id": 1564, + "id": 1598, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1482:1:11", + "src": "1522:1:11", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", @@ -461,15 +483,15 @@ }, "value": "2" }, - "functionReturnParameters": 1563, - "id": 1565, + "functionReturnParameters": 1597, + "id": 1599, "nodeType": "Return", - "src": "1475:8:11" + "src": "1515:8:11" } ] }, "documentation": null, - "id": 1567, + "id": 1601, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -477,23 +499,23 @@ "name": "proxyType", "nodeType": "FunctionDefinition", "parameters": { - "id": 1560, + "id": 1594, "nodeType": "ParameterList", "parameters": [], - "src": "1404:2:11" + "src": "1444:2:11" }, "payable": false, "returnParameters": { - "id": 1563, + "id": 1597, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1562, + "id": 1596, "name": "", "nodeType": "VariableDeclaration", - "scope": 1567, - "src": "1452:7:11", + "scope": 1601, + "src": "1492:7:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -501,10 +523,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1561, + "id": 1595, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1452:7:11", + "src": "1492:7:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -514,33 +536,33 @@ "visibility": "internal" } ], - "src": "1451:9:11" + "src": "1491:9:11" }, - "scope": 1568, - "src": "1386:104:11", + "scope": 1602, + "src": "1426:104:11", "stateMutability": "pure", "superFunction": null, "visibility": "public" } ], - "scope": 1569, - "src": "190:1302:11" + "scope": 1603, + "src": "190:1342:11" } ], - "src": "0:1493:11" + "src": "0:1533:11" }, "legacyAST": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Proxy.sol", "exportedSymbols": { "Proxy": [ - 1568 + 1602 ] }, - "id": 1569, + "id": 1603, "nodeType": "SourceUnit", "nodes": [ { - "id": 1528, + "id": 1561, "literals": [ "solidity", "0.4", @@ -555,19 +577,19 @@ "contractKind": "contract", "documentation": "@title Proxy - Generic proxy contract allows to execute all transactions applying the code of a master contract.\n @author Stefan George - ", "fullyImplemented": true, - "id": 1568, + "id": 1602, "linearizedBaseContracts": [ - 1568 + 1602 ], "name": "Proxy", "nodeType": "ContractDefinition", "nodes": [ { "constant": false, - "id": 1530, + "id": 1563, "name": "masterCopy", "nodeType": "VariableDeclaration", - "scope": 1568, + "scope": 1602, "src": "363:18:11", "stateVariable": true, "storageLocation": "default", @@ -576,7 +598,7 @@ "typeString": "address" }, "typeName": { - "id": 1529, + "id": 1562, "name": "address", "nodeType": "ElementaryTypeName", "src": "363:7:11", @@ -590,9 +612,9 @@ }, { "body": { - "id": 1545, + "id": 1579, "nodeType": "Block", - "src": "560:76:11", + "src": "560:116:11", "statements": [ { "expression": { @@ -604,18 +626,18 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1538, + "id": 1571, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1536, + "id": 1569, "name": "_masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1532, + "referencedDeclaration": 1565, "src": "578:11:11", "typeDescriptions": { "typeIdentifier": "t_address", @@ -627,7 +649,7 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1537, + "id": 1570, "isConstant": false, "isLValue": false, "isPure": true, @@ -647,6 +669,24 @@ "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "496e76616c6964206d617374657220636f707920616464726573732070726f7669646564", + "id": 1572, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "596:38:11", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_108d84599042957b954e89d43b52f80be89321dfc114a37800028eba58dafc87", + "typeString": "literal_string \"Invalid master copy address provided\"" + }, + "value": "Invalid master copy address provided" } ], "expression": { @@ -654,23 +694,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_108d84599042957b954e89d43b52f80be89321dfc114a37800028eba58dafc87", + "typeString": "literal_string \"Invalid master copy address provided\"" } ], - "id": 1535, + "id": 1568, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, + "referencedDeclaration": 2658, "src": "570:7:11", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 1539, + "id": 1573, "isConstant": false, "isLValue": false, "isPure": false, @@ -678,32 +722,32 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "570:25:11", + "src": "570:65:11", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1540, + "id": 1574, "nodeType": "ExpressionStatement", - "src": "570:25:11" + "src": "570:65:11" }, { "expression": { "argumentTypes": null, - "id": 1543, + "id": 1577, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1541, + "id": 1575, "name": "masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1530, - "src": "605:10:11", + "referencedDeclaration": 1563, + "src": "645:10:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -713,31 +757,31 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1542, + "id": 1576, "name": "_masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1532, - "src": "618:11:11", + "referencedDeclaration": 1565, + "src": "658:11:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "605:24:11", + "src": "645:24:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1544, + "id": 1578, "nodeType": "ExpressionStatement", - "src": "605:24:11" + "src": "645:24:11" } ] }, "documentation": "@dev Constructor function sets address of master copy contract.\n @param _masterCopy Master copy address.", - "id": 1546, + "id": 1580, "implemented": true, "isConstructor": true, "isDeclaredConst": false, @@ -745,15 +789,15 @@ "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 1533, + "id": 1566, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1532, + "id": 1565, "name": "_masterCopy", "nodeType": "VariableDeclaration", - "scope": 1546, + "scope": 1580, "src": "520:19:11", "stateVariable": false, "storageLocation": "default", @@ -762,7 +806,7 @@ "typeString": "address" }, "typeName": { - "id": 1531, + "id": 1564, "name": "address", "nodeType": "ElementaryTypeName", "src": "520:7:11", @@ -779,34 +823,34 @@ }, "payable": false, "returnParameters": { - "id": 1534, + "id": 1567, "nodeType": "ParameterList", "parameters": [], "src": "560:0:11" }, - "scope": 1568, - "src": "508:128:11", + "scope": 1602, + "src": "508:168:11", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1550, + "id": 1584, "nodeType": "Block", - "src": "786:470:11", + "src": "826:470:11", "statements": [ { "externalReferences": [], - "id": 1549, + "id": 1583, "nodeType": "InlineAssembly", "operations": "{\n let masterCopy := and(sload(0), 0xffffffffffffffffffffffffffffffffffffffff)\n calldatacopy(0, 0, calldatasize())\n let success := delegatecall(gas(), masterCopy, 0, calldatasize(), 0, 0)\n returndatacopy(0, 0, returndatasize())\n if eq(success, 0)\n {\n revert(0, returndatasize())\n }\n return(0, returndatasize())\n}", - "src": "860:396:11" + "src": "900:396:11" } ] }, "documentation": "@dev Fallback function forwards all transactions and returns all received return data.", - "id": 1551, + "id": 1585, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -814,53 +858,53 @@ "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 1547, + "id": 1581, "nodeType": "ParameterList", "parameters": [], - "src": "746:2:11" + "src": "786:2:11" }, "payable": true, "returnParameters": { - "id": 1548, + "id": 1582, "nodeType": "ParameterList", "parameters": [], - "src": "786:0:11" + "src": "826:0:11" }, - "scope": 1568, - "src": "737:519:11", + "scope": 1602, + "src": "777:519:11", "stateMutability": "payable", "superFunction": null, "visibility": "external" }, { "body": { - "id": 1558, + "id": 1592, "nodeType": "Block", - "src": "1346:34:11", + "src": "1386:34:11", "statements": [ { "expression": { "argumentTypes": null, - "id": 1556, + "id": 1590, "name": "masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1530, - "src": "1363:10:11", + "referencedDeclaration": 1563, + "src": "1403:10:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "functionReturnParameters": 1555, - "id": 1557, + "functionReturnParameters": 1589, + "id": 1591, "nodeType": "Return", - "src": "1356:17:11" + "src": "1396:17:11" } ] }, "documentation": null, - "id": 1559, + "id": 1593, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -868,23 +912,23 @@ "name": "implementation", "nodeType": "FunctionDefinition", "parameters": { - "id": 1552, + "id": 1586, "nodeType": "ParameterList", "parameters": [], - "src": "1285:2:11" + "src": "1325:2:11" }, "payable": false, "returnParameters": { - "id": 1555, + "id": 1589, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1554, + "id": 1588, "name": "", "nodeType": "VariableDeclaration", - "scope": 1559, - "src": "1333:7:11", + "scope": 1593, + "src": "1373:7:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -892,10 +936,10 @@ "typeString": "address" }, "typeName": { - "id": 1553, + "id": 1587, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1333:7:11", + "src": "1373:7:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -905,32 +949,32 @@ "visibility": "internal" } ], - "src": "1332:9:11" + "src": "1372:9:11" }, - "scope": 1568, - "src": "1262:118:11", + "scope": 1602, + "src": "1302:118:11", "stateMutability": "view", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1566, + "id": 1600, "nodeType": "Block", - "src": "1465:25:11", + "src": "1505:25:11", "statements": [ { "expression": { "argumentTypes": null, "hexValue": "32", - "id": 1564, + "id": 1598, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1482:1:11", + "src": "1522:1:11", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", @@ -938,15 +982,15 @@ }, "value": "2" }, - "functionReturnParameters": 1563, - "id": 1565, + "functionReturnParameters": 1597, + "id": 1599, "nodeType": "Return", - "src": "1475:8:11" + "src": "1515:8:11" } ] }, "documentation": null, - "id": 1567, + "id": 1601, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -954,23 +998,23 @@ "name": "proxyType", "nodeType": "FunctionDefinition", "parameters": { - "id": 1560, + "id": 1594, "nodeType": "ParameterList", "parameters": [], - "src": "1404:2:11" + "src": "1444:2:11" }, "payable": false, "returnParameters": { - "id": 1563, + "id": 1597, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1562, + "id": 1596, "name": "", "nodeType": "VariableDeclaration", - "scope": 1567, - "src": "1452:7:11", + "scope": 1601, + "src": "1492:7:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -978,10 +1022,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1561, + "id": 1595, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1452:7:11", + "src": "1492:7:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -991,20 +1035,20 @@ "visibility": "internal" } ], - "src": "1451:9:11" + "src": "1491:9:11" }, - "scope": 1568, - "src": "1386:104:11", + "scope": 1602, + "src": "1426:104:11", "stateMutability": "pure", "superFunction": null, "visibility": "public" } ], - "scope": 1569, - "src": "190:1302:11" + "scope": 1603, + "src": "190:1342:11" } ], - "src": "0:1493:11" + "src": "0:1533:11" }, "compiler": { "name": "solc", @@ -1012,5 +1056,5 @@ }, "networks": {}, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-27T11:12:45.583Z" + "updatedAt": "2018-05-28T05:59:52.706Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/ProxyFactory.json b/safe-contracts/build/contracts/ProxyFactory.json index faa58fb9..ac92cb35 100644 --- a/safe-contracts/build/contracts/ProxyFactory.json +++ b/safe-contracts/build/contracts/ProxyFactory.json @@ -37,8 +37,8 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b5061044e806100206000396000f300608060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806361b69abd14610046575b600080fd5b34801561005257600080fd5b506100cd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505061010f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60008261011a6101fe565b808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050604051809103906000f08015801561016c573d6000803e3d6000fd5b5090506000825111156101955760008060008451602086016000865af1141561019457600080fd5b5b7fa38789425dbeee0239e16ff2d2567e31720127fbc6430758c1a4efc6aef29f8081604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a192915050565b6040516102148061020f833901905600608060405234801561001057600080fd5b506040516020806102148339810180604052810190808051906020019092919050505060008173ffffffffffffffffffffffffffffffffffffffff161415151561005957600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505061016b806100a96000396000f30060806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680634555d5c91461008b5780635c60da1b146100b6575b73ffffffffffffffffffffffffffffffffffffffff600054163660008037600080366000845af43d6000803e6000811415610086573d6000fd5b3d6000f35b34801561009757600080fd5b506100a061010d565b6040518082815260200191505060405180910390f35b3480156100c257600080fd5b506100cb610116565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60006002905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050905600a165627a7a72305820cd7d1e9dd84eb221f79b1c8f72a39fad7d9f8ab7239d25c1fc563147abcaf4150029a165627a7a72305820894d1145d2178ea5a3debf7a1ffb29cfdf9100a5997f8e3b2c8640a6db5c5b120029", - "deployedBytecode": "0x608060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806361b69abd14610046575b600080fd5b34801561005257600080fd5b506100cd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505061010f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60008261011a6101fe565b808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050604051809103906000f08015801561016c573d6000803e3d6000fd5b5090506000825111156101955760008060008451602086016000865af1141561019457600080fd5b5b7fa38789425dbeee0239e16ff2d2567e31720127fbc6430758c1a4efc6aef29f8081604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a192915050565b6040516102148061020f833901905600608060405234801561001057600080fd5b506040516020806102148339810180604052810190808051906020019092919050505060008173ffffffffffffffffffffffffffffffffffffffff161415151561005957600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505061016b806100a96000396000f30060806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680634555d5c91461008b5780635c60da1b146100b6575b73ffffffffffffffffffffffffffffffffffffffff600054163660008037600080366000845af43d6000803e6000811415610086573d6000fd5b3d6000f35b34801561009757600080fd5b506100a061010d565b6040518082815260200191505060405180910390f35b3480156100c257600080fd5b506100cb610116565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60006002905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050905600a165627a7a72305820cd7d1e9dd84eb221f79b1c8f72a39fad7d9f8ab7239d25c1fc563147abcaf4150029a165627a7a72305820894d1145d2178ea5a3debf7a1ffb29cfdf9100a5997f8e3b2c8640a6db5c5b120029", + "bytecode": "0x608060405234801561001057600080fd5b506104dd806100206000396000f300608060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806361b69abd14610046575b600080fd5b34801561005257600080fd5b506100cd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505061010f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60008261011a6101fe565b808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050604051809103906000f08015801561016c573d6000803e3d6000fd5b5090506000825111156101955760008060008451602086016000865af1141561019457600080fd5b5b7fa38789425dbeee0239e16ff2d2567e31720127fbc6430758c1a4efc6aef29f8081604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a192915050565b6040516102a38061020f833901905600608060405234801561001057600080fd5b506040516020806102a38339810180604052810190808051906020019092919050505060008173ffffffffffffffffffffffffffffffffffffffff16141515156100e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f496e76616c6964206d617374657220636f707920616464726573732070726f7681526020017f696465640000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505061016b806101386000396000f30060806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680634555d5c91461008b5780635c60da1b146100b6575b73ffffffffffffffffffffffffffffffffffffffff600054163660008037600080366000845af43d6000803e6000811415610086573d6000fd5b3d6000f35b34801561009757600080fd5b506100a061010d565b6040518082815260200191505060405180910390f35b3480156100c257600080fd5b506100cb610116565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60006002905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050905600a165627a7a72305820fb8f7addc79801292900c520af66dd86a1f9d0b643abe5d3ef1ac03eeb2d04080029a165627a7a72305820c742bd15271cf4492803c598458497f17945465dfdcebd0ab4ff208e21d7becf0029", + "deployedBytecode": "0x608060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806361b69abd14610046575b600080fd5b34801561005257600080fd5b506100cd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505061010f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60008261011a6101fe565b808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050604051809103906000f08015801561016c573d6000803e3d6000fd5b5090506000825111156101955760008060008451602086016000865af1141561019457600080fd5b5b7fa38789425dbeee0239e16ff2d2567e31720127fbc6430758c1a4efc6aef29f8081604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a192915050565b6040516102a38061020f833901905600608060405234801561001057600080fd5b506040516020806102a38339810180604052810190808051906020019092919050505060008173ffffffffffffffffffffffffffffffffffffffff16141515156100e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f496e76616c6964206d617374657220636f707920616464726573732070726f7681526020017f696465640000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505061016b806101386000396000f30060806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680634555d5c91461008b5780635c60da1b146100b6575b73ffffffffffffffffffffffffffffffffffffffff600054163660008037600080366000845af43d6000803e6000811415610086573d6000fd5b3d6000f35b34801561009757600080fd5b506100a061010d565b6040518082815260200191505060405180910390f35b3480156100c257600080fd5b506100cb610116565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60006002905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050905600a165627a7a72305820fb8f7addc79801292900c520af66dd86a1f9d0b643abe5d3ef1ac03eeb2d04080029a165627a7a72305820c742bd15271cf4492803c598458497f17945465dfdcebd0ab4ff208e21d7becf0029", "sourceMap": "225:725:12:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;225:725:12;;;;;;;", "deployedSourceMap": "225:725:12:-;;;;;;;;;;;;;;;;;;;;;;;;532:416;;8:9:-1;5:2;;;30:1;27;20:12;5:2;532:416:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;617:11;662:10;652:21;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;652:21:12;644:29;;701:1;687:4;:11;:15;683:237;;;874:1;870;867;860:4;854:11;847:4;841;837:15;834:1;827:5;822:3;817:55;814:62;811:2;;;889:1;886;879:12;811:2;793:114;921:20;935:5;921:20;;;;;;;;;;;;;;;;;;;;;;532:416;;;;:::o;225:725::-;;;;;;;;;;:::o", "source": "pragma solidity 0.4.24;\nimport \"./Proxy.sol\";\n\n\n/// @title Proxy Factory - Allows to create new proxy contact and execute a message call to the new proxy within one transaction.\n/// @author Stefan George - \ncontract ProxyFactory {\n\n event ProxyCreation(Proxy proxy);\n\n /// @dev Allows to create new proxy contact and execute a message call to the new proxy within one transaction.\n /// @param masterCopy Address of master copy.\n /// @param data Payload for message call sent to new proxy contract.\n function createProxy(address masterCopy, bytes data)\n public\n returns (Proxy proxy)\n {\n proxy = new Proxy(masterCopy);\n if (data.length > 0)\n // solium-disable-next-line security/no-inline-assembly\n assembly {\n if eq(call(gas, proxy, 0, add(data, 0x20), mload(data), 0, 0), 0) { revert(0, 0) }\n }\n emit ProxyCreation(proxy);\n }\n}\n", @@ -47,14 +47,14 @@ "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/ProxyFactory.sol", "exportedSymbols": { "ProxyFactory": [ - 1603 + 1637 ] }, - "id": 1604, + "id": 1638, "nodeType": "SourceUnit", "nodes": [ { - "id": 1570, + "id": 1604, "literals": [ "solidity", "0.4", @@ -66,10 +66,10 @@ { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Proxy.sol", "file": "./Proxy.sol", - "id": 1571, + "id": 1605, "nodeType": "ImportDirective", - "scope": 1604, - "sourceUnit": 1569, + "scope": 1638, + "sourceUnit": 1603, "src": "24:21:12", "symbolAliases": [], "unitAlias": "" @@ -77,14 +77,14 @@ { "baseContracts": [], "contractDependencies": [ - 1568 + 1602 ], "contractKind": "contract", "documentation": "@title Proxy Factory - Allows to create new proxy contact and execute a message call to the new proxy within one transaction.\n @author Stefan George - ", "fullyImplemented": true, - "id": 1603, + "id": 1637, "linearizedBaseContracts": [ - 1603 + 1637 ], "name": "ProxyFactory", "nodeType": "ContractDefinition", @@ -92,36 +92,36 @@ { "anonymous": false, "documentation": null, - "id": 1575, + "id": 1609, "name": "ProxyCreation", "nodeType": "EventDefinition", "parameters": { - "id": 1574, + "id": 1608, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1573, + "id": 1607, "indexed": false, "name": "proxy", "nodeType": "VariableDeclaration", - "scope": 1575, + "scope": 1609, "src": "274:11:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1568", + "typeIdentifier": "t_contract$_Proxy_$1602", "typeString": "contract Proxy" }, "typeName": { "contractScope": null, - "id": 1572, + "id": 1606, "name": "Proxy", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1568, + "referencedDeclaration": 1602, "src": "274:5:12", "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1568", + "typeIdentifier": "t_contract$_Proxy_$1602", "typeString": "contract Proxy" } }, @@ -135,28 +135,28 @@ }, { "body": { - "id": 1601, + "id": 1635, "nodeType": "Block", "src": "634:314:12", "statements": [ { "expression": { "argumentTypes": null, - "id": 1589, + "id": 1623, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1584, + "id": 1618, "name": "proxy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1582, + "referencedDeclaration": 1616, "src": "644:5:12", "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1568", + "typeIdentifier": "t_contract$_Proxy_$1602", "typeString": "contract Proxy" } }, @@ -167,11 +167,11 @@ "arguments": [ { "argumentTypes": null, - "id": 1587, + "id": 1621, "name": "masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1577, + "referencedDeclaration": 1611, "src": "662:10:12", "typeDescriptions": { "typeIdentifier": "t_address", @@ -186,7 +186,7 @@ "typeString": "address" } ], - "id": 1586, + "id": 1620, "isConstant": false, "isLValue": false, "isPure": false, @@ -194,23 +194,23 @@ "nodeType": "NewExpression", "src": "652:9:12", "typeDescriptions": { - "typeIdentifier": "t_function_creation_nonpayable$_t_address_$returns$_t_contract$_Proxy_$1568_$", + "typeIdentifier": "t_function_creation_nonpayable$_t_address_$returns$_t_contract$_Proxy_$1602_$", "typeString": "function (address) returns (contract Proxy)" }, "typeName": { "contractScope": null, - "id": 1585, + "id": 1619, "name": "Proxy", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1568, + "referencedDeclaration": 1602, "src": "656:5:12", "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1568", + "typeIdentifier": "t_contract$_Proxy_$1602", "typeString": "contract Proxy" } } }, - "id": 1588, + "id": 1622, "isConstant": false, "isLValue": false, "isPure": false, @@ -220,17 +220,17 @@ "nodeType": "FunctionCall", "src": "652:21:12", "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1568", + "typeIdentifier": "t_contract$_Proxy_$1602", "typeString": "contract Proxy" } }, "src": "644:29:12", "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1568", + "typeIdentifier": "t_contract$_Proxy_$1602", "typeString": "contract Proxy" } }, - "id": 1590, + "id": 1624, "nodeType": "ExpressionStatement", "src": "644:29:12" }, @@ -241,7 +241,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1594, + "id": 1628, "isConstant": false, "isLValue": false, "isPure": false, @@ -250,18 +250,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1591, + "id": 1625, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1579, + "referencedDeclaration": 1613, "src": "687:4:12", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, - "id": 1592, + "id": 1626, "isConstant": false, "isLValue": false, "isPure": false, @@ -280,7 +280,7 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1593, + "id": 1627, "isConstant": false, "isLValue": false, "isPure": true, @@ -302,14 +302,14 @@ } }, "falseBody": null, - "id": 1596, + "id": 1630, "nodeType": "IfStatement", "src": "683:237:12", "trueBody": { "externalReferences": [ { "data": { - "declaration": 1579, + "declaration": 1613, "isOffset": false, "isSlot": false, "src": "860:4:12", @@ -318,7 +318,7 @@ }, { "proxy": { - "declaration": 1582, + "declaration": 1616, "isOffset": false, "isSlot": false, "src": "827:5:12", @@ -327,7 +327,7 @@ }, { "data": { - "declaration": 1579, + "declaration": 1613, "isOffset": false, "isSlot": false, "src": "841:4:12", @@ -335,7 +335,7 @@ } } ], - "id": 1595, + "id": 1629, "nodeType": "InlineAssembly", "operations": "{\n if eq(call(gas(), proxy, 0, add(data, 0x20), mload(data), 0, 0), 0)\n {\n revert(0, 0)\n }\n}", "src": "784:136:12" @@ -347,14 +347,14 @@ "arguments": [ { "argumentTypes": null, - "id": 1598, + "id": 1632, "name": "proxy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1582, + "referencedDeclaration": 1616, "src": "935:5:12", "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1568", + "typeIdentifier": "t_contract$_Proxy_$1602", "typeString": "contract Proxy" } } @@ -362,22 +362,22 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_Proxy_$1568", + "typeIdentifier": "t_contract$_Proxy_$1602", "typeString": "contract Proxy" } ], - "id": 1597, + "id": 1631, "name": "ProxyCreation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1575, + "referencedDeclaration": 1609, "src": "921:13:12", "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_contract$_Proxy_$1568_$returns$__$", + "typeIdentifier": "t_function_event_nonpayable$_t_contract$_Proxy_$1602_$returns$__$", "typeString": "function (contract Proxy)" } }, - "id": 1599, + "id": 1633, "isConstant": false, "isLValue": false, "isPure": false, @@ -391,14 +391,14 @@ "typeString": "tuple()" } }, - "id": 1600, + "id": 1634, "nodeType": "EmitStatement", "src": "916:25:12" } ] }, "documentation": "@dev Allows to create new proxy contact and execute a message call to the new proxy within one transaction.\n @param masterCopy Address of master copy.\n @param data Payload for message call sent to new proxy contract.", - "id": 1602, + "id": 1636, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -406,15 +406,15 @@ "name": "createProxy", "nodeType": "FunctionDefinition", "parameters": { - "id": 1580, + "id": 1614, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1577, + "id": 1611, "name": "masterCopy", "nodeType": "VariableDeclaration", - "scope": 1602, + "scope": 1636, "src": "553:18:12", "stateVariable": false, "storageLocation": "default", @@ -423,7 +423,7 @@ "typeString": "address" }, "typeName": { - "id": 1576, + "id": 1610, "name": "address", "nodeType": "ElementaryTypeName", "src": "553:7:12", @@ -437,10 +437,10 @@ }, { "constant": false, - "id": 1579, + "id": 1613, "name": "data", "nodeType": "VariableDeclaration", - "scope": 1602, + "scope": 1636, "src": "573:10:12", "stateVariable": false, "storageLocation": "default", @@ -449,7 +449,7 @@ "typeString": "bytes" }, "typeName": { - "id": 1578, + "id": 1612, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "573:5:12", @@ -466,31 +466,31 @@ }, "payable": false, "returnParameters": { - "id": 1583, + "id": 1617, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1582, + "id": 1616, "name": "proxy", "nodeType": "VariableDeclaration", - "scope": 1602, + "scope": 1636, "src": "617:11:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1568", + "typeIdentifier": "t_contract$_Proxy_$1602", "typeString": "contract Proxy" }, "typeName": { "contractScope": null, - "id": 1581, + "id": 1615, "name": "Proxy", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1568, + "referencedDeclaration": 1602, "src": "617:5:12", "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1568", + "typeIdentifier": "t_contract$_Proxy_$1602", "typeString": "contract Proxy" } }, @@ -500,14 +500,14 @@ ], "src": "616:13:12" }, - "scope": 1603, + "scope": 1637, "src": "532:416:12", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" } ], - "scope": 1604, + "scope": 1638, "src": "225:725:12" } ], @@ -517,14 +517,14 @@ "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/ProxyFactory.sol", "exportedSymbols": { "ProxyFactory": [ - 1603 + 1637 ] }, - "id": 1604, + "id": 1638, "nodeType": "SourceUnit", "nodes": [ { - "id": 1570, + "id": 1604, "literals": [ "solidity", "0.4", @@ -536,10 +536,10 @@ { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Proxy.sol", "file": "./Proxy.sol", - "id": 1571, + "id": 1605, "nodeType": "ImportDirective", - "scope": 1604, - "sourceUnit": 1569, + "scope": 1638, + "sourceUnit": 1603, "src": "24:21:12", "symbolAliases": [], "unitAlias": "" @@ -547,14 +547,14 @@ { "baseContracts": [], "contractDependencies": [ - 1568 + 1602 ], "contractKind": "contract", "documentation": "@title Proxy Factory - Allows to create new proxy contact and execute a message call to the new proxy within one transaction.\n @author Stefan George - ", "fullyImplemented": true, - "id": 1603, + "id": 1637, "linearizedBaseContracts": [ - 1603 + 1637 ], "name": "ProxyFactory", "nodeType": "ContractDefinition", @@ -562,36 +562,36 @@ { "anonymous": false, "documentation": null, - "id": 1575, + "id": 1609, "name": "ProxyCreation", "nodeType": "EventDefinition", "parameters": { - "id": 1574, + "id": 1608, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1573, + "id": 1607, "indexed": false, "name": "proxy", "nodeType": "VariableDeclaration", - "scope": 1575, + "scope": 1609, "src": "274:11:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1568", + "typeIdentifier": "t_contract$_Proxy_$1602", "typeString": "contract Proxy" }, "typeName": { "contractScope": null, - "id": 1572, + "id": 1606, "name": "Proxy", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1568, + "referencedDeclaration": 1602, "src": "274:5:12", "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1568", + "typeIdentifier": "t_contract$_Proxy_$1602", "typeString": "contract Proxy" } }, @@ -605,28 +605,28 @@ }, { "body": { - "id": 1601, + "id": 1635, "nodeType": "Block", "src": "634:314:12", "statements": [ { "expression": { "argumentTypes": null, - "id": 1589, + "id": 1623, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1584, + "id": 1618, "name": "proxy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1582, + "referencedDeclaration": 1616, "src": "644:5:12", "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1568", + "typeIdentifier": "t_contract$_Proxy_$1602", "typeString": "contract Proxy" } }, @@ -637,11 +637,11 @@ "arguments": [ { "argumentTypes": null, - "id": 1587, + "id": 1621, "name": "masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1577, + "referencedDeclaration": 1611, "src": "662:10:12", "typeDescriptions": { "typeIdentifier": "t_address", @@ -656,7 +656,7 @@ "typeString": "address" } ], - "id": 1586, + "id": 1620, "isConstant": false, "isLValue": false, "isPure": false, @@ -664,23 +664,23 @@ "nodeType": "NewExpression", "src": "652:9:12", "typeDescriptions": { - "typeIdentifier": "t_function_creation_nonpayable$_t_address_$returns$_t_contract$_Proxy_$1568_$", + "typeIdentifier": "t_function_creation_nonpayable$_t_address_$returns$_t_contract$_Proxy_$1602_$", "typeString": "function (address) returns (contract Proxy)" }, "typeName": { "contractScope": null, - "id": 1585, + "id": 1619, "name": "Proxy", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1568, + "referencedDeclaration": 1602, "src": "656:5:12", "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1568", + "typeIdentifier": "t_contract$_Proxy_$1602", "typeString": "contract Proxy" } } }, - "id": 1588, + "id": 1622, "isConstant": false, "isLValue": false, "isPure": false, @@ -690,17 +690,17 @@ "nodeType": "FunctionCall", "src": "652:21:12", "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1568", + "typeIdentifier": "t_contract$_Proxy_$1602", "typeString": "contract Proxy" } }, "src": "644:29:12", "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1568", + "typeIdentifier": "t_contract$_Proxy_$1602", "typeString": "contract Proxy" } }, - "id": 1590, + "id": 1624, "nodeType": "ExpressionStatement", "src": "644:29:12" }, @@ -711,7 +711,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1594, + "id": 1628, "isConstant": false, "isLValue": false, "isPure": false, @@ -720,18 +720,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1591, + "id": 1625, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1579, + "referencedDeclaration": 1613, "src": "687:4:12", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, - "id": 1592, + "id": 1626, "isConstant": false, "isLValue": false, "isPure": false, @@ -750,7 +750,7 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1593, + "id": 1627, "isConstant": false, "isLValue": false, "isPure": true, @@ -772,14 +772,14 @@ } }, "falseBody": null, - "id": 1596, + "id": 1630, "nodeType": "IfStatement", "src": "683:237:12", "trueBody": { "externalReferences": [ { "data": { - "declaration": 1579, + "declaration": 1613, "isOffset": false, "isSlot": false, "src": "860:4:12", @@ -788,7 +788,7 @@ }, { "proxy": { - "declaration": 1582, + "declaration": 1616, "isOffset": false, "isSlot": false, "src": "827:5:12", @@ -797,7 +797,7 @@ }, { "data": { - "declaration": 1579, + "declaration": 1613, "isOffset": false, "isSlot": false, "src": "841:4:12", @@ -805,7 +805,7 @@ } } ], - "id": 1595, + "id": 1629, "nodeType": "InlineAssembly", "operations": "{\n if eq(call(gas(), proxy, 0, add(data, 0x20), mload(data), 0, 0), 0)\n {\n revert(0, 0)\n }\n}", "src": "784:136:12" @@ -817,14 +817,14 @@ "arguments": [ { "argumentTypes": null, - "id": 1598, + "id": 1632, "name": "proxy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1582, + "referencedDeclaration": 1616, "src": "935:5:12", "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1568", + "typeIdentifier": "t_contract$_Proxy_$1602", "typeString": "contract Proxy" } } @@ -832,22 +832,22 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_Proxy_$1568", + "typeIdentifier": "t_contract$_Proxy_$1602", "typeString": "contract Proxy" } ], - "id": 1597, + "id": 1631, "name": "ProxyCreation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1575, + "referencedDeclaration": 1609, "src": "921:13:12", "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_contract$_Proxy_$1568_$returns$__$", + "typeIdentifier": "t_function_event_nonpayable$_t_contract$_Proxy_$1602_$returns$__$", "typeString": "function (contract Proxy)" } }, - "id": 1599, + "id": 1633, "isConstant": false, "isLValue": false, "isPure": false, @@ -861,14 +861,14 @@ "typeString": "tuple()" } }, - "id": 1600, + "id": 1634, "nodeType": "EmitStatement", "src": "916:25:12" } ] }, "documentation": "@dev Allows to create new proxy contact and execute a message call to the new proxy within one transaction.\n @param masterCopy Address of master copy.\n @param data Payload for message call sent to new proxy contract.", - "id": 1602, + "id": 1636, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -876,15 +876,15 @@ "name": "createProxy", "nodeType": "FunctionDefinition", "parameters": { - "id": 1580, + "id": 1614, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1577, + "id": 1611, "name": "masterCopy", "nodeType": "VariableDeclaration", - "scope": 1602, + "scope": 1636, "src": "553:18:12", "stateVariable": false, "storageLocation": "default", @@ -893,7 +893,7 @@ "typeString": "address" }, "typeName": { - "id": 1576, + "id": 1610, "name": "address", "nodeType": "ElementaryTypeName", "src": "553:7:12", @@ -907,10 +907,10 @@ }, { "constant": false, - "id": 1579, + "id": 1613, "name": "data", "nodeType": "VariableDeclaration", - "scope": 1602, + "scope": 1636, "src": "573:10:12", "stateVariable": false, "storageLocation": "default", @@ -919,7 +919,7 @@ "typeString": "bytes" }, "typeName": { - "id": 1578, + "id": 1612, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "573:5:12", @@ -936,31 +936,31 @@ }, "payable": false, "returnParameters": { - "id": 1583, + "id": 1617, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1582, + "id": 1616, "name": "proxy", "nodeType": "VariableDeclaration", - "scope": 1602, + "scope": 1636, "src": "617:11:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1568", + "typeIdentifier": "t_contract$_Proxy_$1602", "typeString": "contract Proxy" }, "typeName": { "contractScope": null, - "id": 1581, + "id": 1615, "name": "Proxy", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1568, + "referencedDeclaration": 1602, "src": "617:5:12", "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1568", + "typeIdentifier": "t_contract$_Proxy_$1602", "typeString": "contract Proxy" } }, @@ -970,14 +970,14 @@ ], "src": "616:13:12" }, - "scope": 1603, + "scope": 1637, "src": "532:416:12", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" } ], - "scope": 1604, + "scope": 1638, "src": "225:725:12" } ], @@ -991,22 +991,16 @@ "4": { "events": {}, "links": {}, - "address": "0x78b7e500f63afb4c692b9b6a43e092278cbffaa1", - "transactionHash": "0xebf1fca163a66fdf988707624fa744b57d1eeedcc9f7eaee66555d1fc474c01e" - }, - "1527316019334": { - "events": {}, - "links": {}, - "address": "0x63f96c3c48bf69ce28e8b8be3c092807d9cf75c3", - "transactionHash": "0xbf12ab2315082a4c3e20abe6305376e3669b7cdee1bbfc079934e41aad57f4f3" + "address": "0x5fae0ba38b6e532e97f064a5a28276071ba5841c", + "transactionHash": "0x336dee0e43b6d4defa98ac04db8294591e55361e725d3c1e2e85037e3671ed97" }, "1527420696956": { "events": {}, "links": {}, - "address": "0x7be7064be7fa89c37e849fe58d68967da7d912b6", - "transactionHash": "0xc64211adf2eafca94ba6fe1b59e2ddd73ab867efd20ed1db80ca6eee90591aaf" + "address": "0xac9c7e3390e950803f64d89033b844a248921cb9", + "transactionHash": "0x9e8ad0a8a820c5873b5bd340b74a0bc1c13f39929c67fba109070c785feb5661" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-27T11:31:46.235Z" + "updatedAt": "2018-05-28T06:08:59.451Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/SelfAuthorized.json b/safe-contracts/build/contracts/SelfAuthorized.json index 679b4831..2ac86b81 100644 --- a/safe-contracts/build/contracts/SelfAuthorized.json +++ b/safe-contracts/build/contracts/SelfAuthorized.json @@ -1,24 +1,24 @@ { "contractName": "SelfAuthorized", "abi": [], - "bytecode": "0x6080604052348015600f57600080fd5b50603580601d6000396000f3006080604052600080fd00a165627a7a72305820af9f772ea9919e0b590dbadc1d255c497a0a1031eaf00e4735e7b65b3f2e31520029", - "deployedBytecode": "0x6080604052600080fd00a165627a7a72305820af9f772ea9919e0b590dbadc1d255c497a0a1031eaf00e4735e7b65b3f2e31520029", - "sourceMap": "152:118:13:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;152:118:13;;;;;;;", - "deployedSourceMap": "152:118:13:-;;;;;", - "source": "pragma solidity 0.4.24;\n\n\n/// @title SelfAuthorized - authorizes current contract to perform actions\n/// @author Richard Meissner - \ncontract SelfAuthorized {\n modifier authorized() {\n require(msg.sender == address(this));\n _;\n }\n}\n", + "bytecode": "0x6080604052348015600f57600080fd5b50603580601d6000396000f3006080604052600080fd00a165627a7a72305820ec80f1b4520aa5197e4181778f1e2e4fc460002d4a40e2e8e6709c8986067c220029", + "deployedBytecode": "0x6080604052600080fd00a165627a7a72305820ec80f1b4520aa5197e4181778f1e2e4fc460002d4a40e2e8e6709c8986067c220029", + "sourceMap": "152:166:13:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;152:166:13;;;;;;;", + "deployedSourceMap": "152:166:13:-;;;;;", + "source": "pragma solidity 0.4.24;\n\n\n/// @title SelfAuthorized - authorizes current contract to perform actions\n/// @author Richard Meissner - \ncontract SelfAuthorized {\n modifier authorized() {\n require(msg.sender == address(this), \"Method can only be called from this contract\");\n _;\n }\n}\n", "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/SelfAuthorized.sol", "ast": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/SelfAuthorized.sol", "exportedSymbols": { "SelfAuthorized": [ - 1619 + 1654 ] }, - "id": 1620, + "id": 1655, "nodeType": "SourceUnit", "nodes": [ { - "id": 1605, + "id": 1639, "literals": [ "solidity", "0.4", @@ -33,18 +33,18 @@ "contractKind": "contract", "documentation": "@title SelfAuthorized - authorizes current contract to perform actions\n @author Richard Meissner - ", "fullyImplemented": true, - "id": 1619, + "id": 1654, "linearizedBaseContracts": [ - 1619 + 1654 ], "name": "SelfAuthorized", "nodeType": "ContractDefinition", "nodes": [ { "body": { - "id": 1617, + "id": 1652, "nodeType": "Block", - "src": "204:64:13", + "src": "204:112:13", "statements": [ { "expression": { @@ -56,7 +56,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1613, + "id": 1647, "isConstant": false, "isLValue": false, "isPure": false, @@ -65,18 +65,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1608, + "id": 1642, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2598, + "referencedDeclaration": 2654, "src": "222:3:13", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 1609, + "id": 1643, "isConstant": false, "isLValue": false, "isPure": false, @@ -97,14 +97,14 @@ "arguments": [ { "argumentTypes": null, - "id": 1611, + "id": 1645, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2617, + "referencedDeclaration": 2673, "src": "244:4:13", "typeDescriptions": { - "typeIdentifier": "t_contract$_SelfAuthorized_$1619", + "typeIdentifier": "t_contract$_SelfAuthorized_$1654", "typeString": "contract SelfAuthorized" } } @@ -112,11 +112,11 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_SelfAuthorized_$1619", + "typeIdentifier": "t_contract$_SelfAuthorized_$1654", "typeString": "contract SelfAuthorized" } ], - "id": 1610, + "id": 1644, "isConstant": false, "isLValue": false, "isPure": true, @@ -129,7 +129,7 @@ }, "typeName": "address" }, - "id": 1612, + "id": 1646, "isConstant": false, "isLValue": false, "isPure": false, @@ -148,6 +148,24 @@ "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207468697320636f6e7472616374", + "id": 1648, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "251:46:13", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c4780ef0a1d41d59bac8c510cf9ada421bccf2b90f75a8e4ba2e8c09e8d72733", + "typeString": "literal_string \"Method can only be called from this contract\"" + }, + "value": "Method can only be called from this contract" } ], "expression": { @@ -155,23 +173,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_c4780ef0a1d41d59bac8c510cf9ada421bccf2b90f75a8e4ba2e8c09e8d72733", + "typeString": "literal_string \"Method can only be called from this contract\"" } ], - "id": 1607, + "id": 1641, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, + "referencedDeclaration": 2658, "src": "214:7:13", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 1614, + "id": 1649, "isConstant": false, "isLValue": false, "isPure": false, @@ -179,55 +201,55 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "214:36:13", + "src": "214:84:13", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1615, + "id": 1650, "nodeType": "ExpressionStatement", - "src": "214:36:13" + "src": "214:84:13" }, { - "id": 1616, + "id": 1651, "nodeType": "PlaceholderStatement", - "src": "260:1:13" + "src": "308:1:13" } ] }, "documentation": null, - "id": 1618, + "id": 1653, "name": "authorized", "nodeType": "ModifierDefinition", "parameters": { - "id": 1606, + "id": 1640, "nodeType": "ParameterList", "parameters": [], "src": "201:2:13" }, - "src": "182:86:13", + "src": "182:134:13", "visibility": "internal" } ], - "scope": 1620, - "src": "152:118:13" + "scope": 1655, + "src": "152:166:13" } ], - "src": "0:271:13" + "src": "0:319:13" }, "legacyAST": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/SelfAuthorized.sol", "exportedSymbols": { "SelfAuthorized": [ - 1619 + 1654 ] }, - "id": 1620, + "id": 1655, "nodeType": "SourceUnit", "nodes": [ { - "id": 1605, + "id": 1639, "literals": [ "solidity", "0.4", @@ -242,18 +264,18 @@ "contractKind": "contract", "documentation": "@title SelfAuthorized - authorizes current contract to perform actions\n @author Richard Meissner - ", "fullyImplemented": true, - "id": 1619, + "id": 1654, "linearizedBaseContracts": [ - 1619 + 1654 ], "name": "SelfAuthorized", "nodeType": "ContractDefinition", "nodes": [ { "body": { - "id": 1617, + "id": 1652, "nodeType": "Block", - "src": "204:64:13", + "src": "204:112:13", "statements": [ { "expression": { @@ -265,7 +287,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1613, + "id": 1647, "isConstant": false, "isLValue": false, "isPure": false, @@ -274,18 +296,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1608, + "id": 1642, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2598, + "referencedDeclaration": 2654, "src": "222:3:13", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 1609, + "id": 1643, "isConstant": false, "isLValue": false, "isPure": false, @@ -306,14 +328,14 @@ "arguments": [ { "argumentTypes": null, - "id": 1611, + "id": 1645, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2617, + "referencedDeclaration": 2673, "src": "244:4:13", "typeDescriptions": { - "typeIdentifier": "t_contract$_SelfAuthorized_$1619", + "typeIdentifier": "t_contract$_SelfAuthorized_$1654", "typeString": "contract SelfAuthorized" } } @@ -321,11 +343,11 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_SelfAuthorized_$1619", + "typeIdentifier": "t_contract$_SelfAuthorized_$1654", "typeString": "contract SelfAuthorized" } ], - "id": 1610, + "id": 1644, "isConstant": false, "isLValue": false, "isPure": true, @@ -338,7 +360,7 @@ }, "typeName": "address" }, - "id": 1612, + "id": 1646, "isConstant": false, "isLValue": false, "isPure": false, @@ -357,6 +379,24 @@ "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207468697320636f6e7472616374", + "id": 1648, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "251:46:13", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c4780ef0a1d41d59bac8c510cf9ada421bccf2b90f75a8e4ba2e8c09e8d72733", + "typeString": "literal_string \"Method can only be called from this contract\"" + }, + "value": "Method can only be called from this contract" } ], "expression": { @@ -364,23 +404,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_c4780ef0a1d41d59bac8c510cf9ada421bccf2b90f75a8e4ba2e8c09e8d72733", + "typeString": "literal_string \"Method can only be called from this contract\"" } ], - "id": 1607, + "id": 1641, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, + "referencedDeclaration": 2658, "src": "214:7:13", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 1614, + "id": 1649, "isConstant": false, "isLValue": false, "isPure": false, @@ -388,42 +432,42 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "214:36:13", + "src": "214:84:13", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1615, + "id": 1650, "nodeType": "ExpressionStatement", - "src": "214:36:13" + "src": "214:84:13" }, { - "id": 1616, + "id": 1651, "nodeType": "PlaceholderStatement", - "src": "260:1:13" + "src": "308:1:13" } ] }, "documentation": null, - "id": 1618, + "id": 1653, "name": "authorized", "nodeType": "ModifierDefinition", "parameters": { - "id": 1606, + "id": 1640, "nodeType": "ParameterList", "parameters": [], "src": "201:2:13" }, - "src": "182:86:13", + "src": "182:134:13", "visibility": "internal" } ], - "scope": 1620, - "src": "152:118:13" + "scope": 1655, + "src": "152:166:13" } ], - "src": "0:271:13" + "src": "0:319:13" }, "compiler": { "name": "solc", @@ -431,5 +475,5 @@ }, "networks": {}, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-27T11:12:45.584Z" + "updatedAt": "2018-05-28T05:59:52.707Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/SocialRecoveryModule.json b/safe-contracts/build/contracts/SocialRecoveryModule.json index 1da04b63..3f0dcaa6 100644 --- a/safe-contracts/build/contracts/SocialRecoveryModule.json +++ b/safe-contracts/build/contracts/SocialRecoveryModule.json @@ -244,24 +244,24 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50611171806100206000396000f3006080604052600436106100d0576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680633cf5b309146100d557806342cde4e814610148578063481c6a751461017957806368125a1b146101d057806377231eaa1461022b57806379716e43146102ae5780637de7edef146102df5780639ca89d0d14610322578063a3f4df7e1461036b578063ae68b056146103fb578063b79ffaff14610480578063ce146828146104e9578063e52cb36a14610556578063ffa1ad741461059f575b600080fd5b3480156100e157600080fd5b5061014660048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803560ff16906020019092919050505061062f565b005b34801561015457600080fd5b5061015d6107a4565b604051808260ff1660ff16815260200191505060405180910390f35b34801561018557600080fd5b5061018e6107b7565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101dc57600080fd5b50610211600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107dd565b604051808215151515815260200191505060405180910390f35b34801561023757600080fd5b506102ac600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107fd565b005b3480156102ba57600080fd5b506102dd6004803603810190808035600019169060200190929190505050610bbe565b005b3480156102eb57600080fd5b50610320600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610cbf565b005b34801561032e57600080fd5b506103516004803603810190808035600019169060200190929190505050610d84565b604051808215151515815260200191505060405180910390f35b34801561037757600080fd5b50610380610e83565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103c05780820151818401526020810190506103a5565b50505050905090810190601f1680156103ed5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561040757600080fd5b50610462600480360381019080803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050610ebc565b60405180826000191660001916815260200191505060405180910390f35b34801561048c57600080fd5b506104cf6004803603810190808035600019169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f28565b604051808215151515815260200191505060405180910390f35b3480156104f557600080fd5b5061051460048036038101908080359060200190929190505050610f57565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561056257600080fd5b506105856004803603810190808035600019169060200190929190505050610f95565b604051808215151515815260200191505060405180910390f35b3480156105ab57600080fd5b506105b4610fb5565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156105f45780820151818401526020810190506105d9565b50505050905090810190601f1680156106215780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60008083518360ff161115151561064557600080fd5b60028360ff161015151561065857600080fd5b610660610fee565b600091505b835182101561076c57838281518110151561067c57fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff16141515156106ae57600080fd5b600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151561070757600080fd5b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508180600101925050610665565b8360029080519060200190610782929190611078565b5082600160146101000a81548160ff021916908360ff16021790555050505050565b600160149054906101000a900460ff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60036020528060005260406000206000915054906101000a900460ff1681565b60606000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561085957600080fd5b848484604051602401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200193505050506040516020818303038152906040527fe318b52b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050915061098682610ebc565b905060046000826000191660001916815260200190815260200160002060009054906101000a900460ff161515156109bd57600080fd5b6109c681610d84565b15156109d157600080fd5b600160046000836000191660001916815260200190815260200160002060006101000a81548160ff021916908315150217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a7600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660008560006040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200180602001836002811115610ae257fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b83811015610b22578082015181840152602081019050610b07565b50505050905090810190601f168015610b4f5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610b7157600080fd5b505af1158015610b85573d6000803e3d6000fd5b505050506040513d6020811015610b9b57600080fd5b81019080805190602001909291905050501515610bb757600080fd5b5050505050565b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515610c1657600080fd5b60046000826000191660001916815260200190815260200160002060009054906101000a900460ff16151515610c4b57600080fd5b600160056000836000191660001916815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610d1b57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515610d4157600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060008090505b600280549050811015610e77576005600085600019166000191681526020019081526020016000206000600283815481101515610dc657fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610e475781806001019250505b600160149054906101000a900460ff1660ff16821415610e6a5760019250610e7c565b8080600101915050610d8d565b600092505b5050919050565b6040805190810160405280601681526020017f536f6369616c205265636f76657279204d6f64756c650000000000000000000081525081565b6000816040518082805190602001908083835b602083101515610ef45780518252602082019150602081019050602083039250610ecf565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390209050919050565b60056020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b600281815481101515610f6657fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60046020528060005260406000206000915054906101000a900460ff1681565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561103557600080fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b8280548282559060005260206000209081019282156110f1579160200282015b828111156110f05782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190611098565b5b5090506110fe9190611102565b5090565b61114291905b8082111561113e57600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905550600101611108565b5090565b905600a165627a7a7230582016bbe219e7ccae5c600c8f48a1fc8b74cff478e1cbbcf8be80a150f855d6eb800029", - "deployedBytecode": "0x6080604052600436106100d0576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680633cf5b309146100d557806342cde4e814610148578063481c6a751461017957806368125a1b146101d057806377231eaa1461022b57806379716e43146102ae5780637de7edef146102df5780639ca89d0d14610322578063a3f4df7e1461036b578063ae68b056146103fb578063b79ffaff14610480578063ce146828146104e9578063e52cb36a14610556578063ffa1ad741461059f575b600080fd5b3480156100e157600080fd5b5061014660048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803560ff16906020019092919050505061062f565b005b34801561015457600080fd5b5061015d6107a4565b604051808260ff1660ff16815260200191505060405180910390f35b34801561018557600080fd5b5061018e6107b7565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101dc57600080fd5b50610211600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107dd565b604051808215151515815260200191505060405180910390f35b34801561023757600080fd5b506102ac600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107fd565b005b3480156102ba57600080fd5b506102dd6004803603810190808035600019169060200190929190505050610bbe565b005b3480156102eb57600080fd5b50610320600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610cbf565b005b34801561032e57600080fd5b506103516004803603810190808035600019169060200190929190505050610d84565b604051808215151515815260200191505060405180910390f35b34801561037757600080fd5b50610380610e83565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103c05780820151818401526020810190506103a5565b50505050905090810190601f1680156103ed5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561040757600080fd5b50610462600480360381019080803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050610ebc565b60405180826000191660001916815260200191505060405180910390f35b34801561048c57600080fd5b506104cf6004803603810190808035600019169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f28565b604051808215151515815260200191505060405180910390f35b3480156104f557600080fd5b5061051460048036038101908080359060200190929190505050610f57565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561056257600080fd5b506105856004803603810190808035600019169060200190929190505050610f95565b604051808215151515815260200191505060405180910390f35b3480156105ab57600080fd5b506105b4610fb5565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156105f45780820151818401526020810190506105d9565b50505050905090810190601f1680156106215780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60008083518360ff161115151561064557600080fd5b60028360ff161015151561065857600080fd5b610660610fee565b600091505b835182101561076c57838281518110151561067c57fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff16141515156106ae57600080fd5b600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151561070757600080fd5b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508180600101925050610665565b8360029080519060200190610782929190611078565b5082600160146101000a81548160ff021916908360ff16021790555050505050565b600160149054906101000a900460ff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60036020528060005260406000206000915054906101000a900460ff1681565b60606000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561085957600080fd5b848484604051602401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200193505050506040516020818303038152906040527fe318b52b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050915061098682610ebc565b905060046000826000191660001916815260200190815260200160002060009054906101000a900460ff161515156109bd57600080fd5b6109c681610d84565b15156109d157600080fd5b600160046000836000191660001916815260200190815260200160002060006101000a81548160ff021916908315150217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a7600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660008560006040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200180602001836002811115610ae257fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b83811015610b22578082015181840152602081019050610b07565b50505050905090810190601f168015610b4f5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610b7157600080fd5b505af1158015610b85573d6000803e3d6000fd5b505050506040513d6020811015610b9b57600080fd5b81019080805190602001909291905050501515610bb757600080fd5b5050505050565b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515610c1657600080fd5b60046000826000191660001916815260200190815260200160002060009054906101000a900460ff16151515610c4b57600080fd5b600160056000836000191660001916815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610d1b57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515610d4157600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060008090505b600280549050811015610e77576005600085600019166000191681526020019081526020016000206000600283815481101515610dc657fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610e475781806001019250505b600160149054906101000a900460ff1660ff16821415610e6a5760019250610e7c565b8080600101915050610d8d565b600092505b5050919050565b6040805190810160405280601681526020017f536f6369616c205265636f76657279204d6f64756c650000000000000000000081525081565b6000816040518082805190602001908083835b602083101515610ef45780518252602082019150602081019050602083039250610ecf565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390209050919050565b60056020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b600281815481101515610f6657fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60046020528060005260406000206000915054906101000a900460ff1681565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561103557600080fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b8280548282559060005260206000209081019282156110f1579160200282015b828111156110f05782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190611098565b5b5090506110fe9190611102565b5090565b61114291905b8082111561113e57600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905550600101611108565b5090565b905600a165627a7a7230582016bbe219e7ccae5c600c8f48a1fc8b74cff478e1cbbcf8be80a150f855d6eb800029", - "sourceMap": "306:3426:18:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;306:3426:18;;;;;;;", - "deployedSourceMap": "306:3426:18:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1175:494;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1175:494:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;460:22;;8:9:-1;5:2;;;30:1;27;20:12;5:2;460:22:18;;;;;;;;;;;;;;;;;;;;;;;;;;;262:28:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;262:28:7;;;;;;;;;;;;;;;;;;;;;;;;;;;583:41:18;;8:9:-1;5:2;;;30:1;27;20:12;5:2;583:41:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2296:609;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2296:609:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1782:181;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1782:181:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;626:208:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;626:208:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;3066:405:18;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3066:405:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;353:54;;8:9:-1;5:2;;;30:1;27;20:12;5:2;353:54: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;353:54:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3600:130;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3600:130:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;827:65;;8:9:-1;5:2;;;30:1;27;20:12;5:2;827:65:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;488:24;;8:9:-1;5:2;;;30:1;27;20:12;5:2;488:24:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;692:43;;8:9:-1;5:2;;;30:1;27;20:12;5:2;692:43:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;413:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;413:40: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;413:40:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1175:494;1398:9;1453:14;1279:8;:15;1265:10;:29;;;;1257:38;;;;;;;;1327:1;1313:10;:15;;;;1305:24;;;;;;;;1339:12;:10;:12::i;:::-;1410:1;1398:13;;1393:210;1417:8;:15;1413:1;:19;1393:210;;;1470:8;1479:1;1470:11;;;;;;;;;;;;;;;;;;1453:28;;1513:1;1503:6;:11;;;;1495:20;;;;;;;;1538:8;:16;1547:6;1538:16;;;;;;;;;;;;;;;;;;;;;;;;;1537:17;1529:26;;;;;;;;1588:4;1569:8;:16;1578:6;1569:16;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;1434:3;;;;;;;1393:210;;;1622:8;1612:7;:18;;;;;;;;;;;;:::i;:::-;;1652:10;1640:9;;:22;;;;;;;;;;;;;;;;;;1175:494;;;;:::o;460:22::-;;;;;;;;;;;;;:::o;262:28:7:-;;;;;;;;;;;;;:::o;583:41:18:-;;;;;;;;;;;;;;;;;;;;;;:::o;2296:609::-;2506:17;2628:16;2475:8;:20;2484:10;2475:20;;;;;;;;;;;;;;;;;;;;;;;;;2467:29;;;;;;;;2588:9;2599:8;2609;2526:92;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;2526:92:18;;;;;;;38:4:-1;29:7;25:18;67:10;61:17;96:58;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;2526:92:18;2506:112;;2647:17;2659:4;2647:11;:17::i;:::-;2628:36;;2683:10;:20;2694:8;2683:20;;;;;;;;;;;;;;;;;;;;;;;;;;;2682:21;2674:30;;;;;;;;2722:38;2751:8;2722:28;:38::i;:::-;2714:47;;;;;;;;2794:4;2771:10;:20;2782:8;2771:20;;;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;2816:7;;;;;;;;;;;:33;;;2858:7;;;;;;;;;;;2868:1;2871:4;2877:19;2816:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;2816:81:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2816:81:18;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2816:81:18;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2816:81:18;;;;;;;;;;;;;;;;2808:90;;;;;;;;2296:609;;;;;:::o;1782:181::-;939:8;:20;948:10;939:20;;;;;;;;;;;;;;;;;;;;;;;;;931:29;;;;;;;;1885:10;:20;1896:8;1885:20;;;;;;;;;;;;;;;;;;;;;;;;;;;1884:21;1876:30;;;;;;;;1952:4;1916:11;:21;1928:8;1916:21;;;;;;;;;;;;;;;;;:33;1938:10;1916:33;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;1782:181;:::o;626:208:5:-;359:7:7;;;;;;;;;;;337:30;;:10;:30;;;329:39;;;;;;;;791:1:5;776:11;:16;;;;768:25;;;;;;;;816:11;803:10;;:24;;;;;;;;;;;;;;;;;;626:208;:::o;3066:405:18:-;3167:4;3187:25;3227:9;3239:1;3227:13;;3222:221;3246:7;:14;;;;3242:1;:18;3222:221;;;3285:11;:21;3297:8;3285:21;;;;;;;;;;;;;;;;;:33;3307:7;3315:1;3307:10;;;;;;;;;;;;;;;;;;;;;;;;;;;3285:33;;;;;;;;;;;;;;;;;;;;;;;;;3281:74;;;3336:19;;;;;;;3281:74;3394:9;;;;;;;;;;;3373:30;;:17;:30;3369:63;;;3428:4;3421:11;;;;3369:63;3262:3;;;;;;;3222:221;;;3459:5;3452:12;;3066:405;;;;;;:::o;353:54::-;;;;;;;;;;;;;;;;;;;;:::o;3600:130::-;3678:7;3718:4;3708:15;;;;;;;;;;;;;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;;;3708:15:18;;;;;;;;;;;;;;;;3701:22;;3600:130;;;:::o;827:65::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;488:24::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;692:43::-;;;;;;;;;;;;;;;;;;;;;;:::o;413:40::-;;;;;;;;;;;;;;;;;;;;:::o;392:268:7:-;606:1;594:7;;;;;;;;;;;586:21;;;578:30;;;;;;;;642:10;618:7;;:35;;;;;;;;;;;;;;;;;;392:268::o;306:3426:18:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o", - "source": "pragma solidity 0.4.24;\nimport \"../Enum.sol\";\nimport \"../Module.sol\";\nimport \"../ModuleManager.sol\";\nimport \"../OwnerManager.sol\";\n\n\n/// @title Social Recovery Module - Allows to replace an owner without Safe confirmations if friends approve the replacement.\n/// @author Stefan George - \ncontract SocialRecoveryModule is Module {\n\n string public constant NAME = \"Social Recovery Module\";\n string public constant VERSION = \"0.0.1\";\n\n uint8 public threshold;\n address[] public friends;\n\n // isFriend mapping maps friend's address to friend status.\n mapping (address => bool) public isFriend;\n // isExecuted mapping maps data hash to execution status.\n mapping (bytes32 => bool) public isExecuted;\n // isConfirmed mapping maps data hash to friend's address to confirmation status.\n mapping (bytes32 => mapping (address => bool)) public isConfirmed;\n\n modifier onlyFriend() {\n require(isFriend[msg.sender]);\n _;\n }\n\n /// @dev Setup function sets initial storage of contract.\n /// @param _friends List of friends' addresses.\n /// @param _threshold Required number of friends to confirm replacement.\n function setup(address[] _friends, uint8 _threshold)\n public\n {\n require(_threshold <= _friends.length);\n require(_threshold >= 2);\n setManager();\n // Set allowed friends.\n for (uint256 i = 0; i < _friends.length; i++) {\n address friend = _friends[i];\n require(friend != 0);\n require(!isFriend[friend]);\n isFriend[friend] = true;\n }\n friends = _friends;\n threshold = _threshold;\n }\n\n /// @dev Allows a friend to confirm a Safe transaction.\n /// @param dataHash Safe transaction hash.\n function confirmTransaction(bytes32 dataHash)\n public\n onlyFriend\n {\n require(!isExecuted[dataHash]);\n isConfirmed[dataHash][msg.sender] = true;\n }\n\n /// @dev Returns if Safe transaction is a valid owner replacement transaction.\n /// @param prevOwner Owner that pointed to the owner to be replaced in the linked list\n /// @param oldOwner Owner address to be replaced.\n /// @param newOwner New owner address.\n /// @return Returns if transaction can be executed.\n function recoverAccess(address prevOwner, address oldOwner, address newOwner)\n public\n {\n // Only friends are allowed to execute the replacement.\n require(isFriend[msg.sender]);\n bytes memory data = abi.encodeWithSignature(\"swapOwner(address,address,address)\", prevOwner, oldOwner, newOwner);\n bytes32 dataHash = getDataHash(data);\n require(!isExecuted[dataHash]);\n require(isConfirmedByRequiredFriends(dataHash));\n isExecuted[dataHash] = true;\n require(manager.execTransactionFromModule(address(manager), 0, data, Enum.Operation.Call));\n }\n\n /// @dev Returns if Safe transaction is a valid owner replacement transaction.\n /// @param dataHash Data hash.\n /// @return Confirmation status.\n function isConfirmedByRequiredFriends(bytes32 dataHash)\n public\n view\n returns (bool)\n {\n uint256 confirmationCount;\n for (uint256 i = 0; i < friends.length; i++) {\n if (isConfirmed[dataHash][friends[i]])\n confirmationCount++;\n if (confirmationCount == threshold)\n return true;\n }\n return false;\n }\n\n /// @dev Returns hash of data encoding owner replacement.\n /// @param data Data payload.\n /// @return Data hash.\n function getDataHash(bytes data)\n public\n pure\n returns (bytes32)\n {\n return keccak256(data);\n }\n}\n", + "bytecode": "0x608060405234801561001057600080fd5b506117d0806100206000396000f3006080604052600436106100d0576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680633cf5b309146100d557806342cde4e814610148578063481c6a751461017957806368125a1b146101d057806377231eaa1461022b57806379716e43146102ae5780637de7edef146102df5780639ca89d0d14610322578063a3f4df7e1461036b578063ae68b056146103fb578063b79ffaff14610480578063ce146828146104e9578063e52cb36a14610556578063ffa1ad741461059f575b600080fd5b3480156100e157600080fd5b5061014660048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803560ff16906020019092919050505061062f565b005b34801561015457600080fd5b5061015d610994565b604051808260ff1660ff16815260200191505060405180910390f35b34801561018557600080fd5b5061018e6109a7565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101dc57600080fd5b50610211600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506109cd565b604051808215151515815260200191505060405180910390f35b34801561023757600080fd5b506102ac600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506109ed565b005b3480156102ba57600080fd5b506102dd6004803603810190808035600019169060200190929190505050610f9e565b005b3480156102eb57600080fd5b50610320600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611197565b005b34801561032e57600080fd5b50610351600480360381019080803560001916906020019092919050505061137a565b604051808215151515815260200191505060405180910390f35b34801561037757600080fd5b50610380611479565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103c05780820151818401526020810190506103a5565b50505050905090810190601f1680156103ed5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561040757600080fd5b50610462600480360381019080803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091929192905050506114b2565b60405180826000191660001916815260200191505060405180910390f35b34801561048c57600080fd5b506104cf6004803603810190808035600019169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061151e565b604051808215151515815260200191505060405180910390f35b3480156104f557600080fd5b506105146004803603810190808035906020019092919050505061154d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561056257600080fd5b50610585600480360381019080803560001916906020019092919050505061158b565b604051808215151515815260200191505060405180910390f35b3480156105ab57600080fd5b506105b46115ab565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156105f45780820151818401526020810190506105d9565b50505050905090810190601f1680156106215780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60008083518360ff16111515156106d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f5468726573686f6c642063616e6e6f742065786365656420667269656e64732081526020017f636f756e7400000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60028360ff1610151515610750576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4174206c65617374203220667269656e6473207265717569726564000000000081525060200191505060405180910390fd5b6107586115e4565b600091505b835182101561095c57838281518110151561077457fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff161415151561080f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f496e76616c696420667269656e6420616464726573732070726f76696465640081525060200191505060405180910390fd5b600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515156108f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f4475706c696361746520667269656e6420616464726573732070726f7669646581526020017f640000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550818060010192505061075d565b83600290805190602001906109729291906116d7565b5082600160146101000a81548160ff021916908360ff16021790555050505050565b600160149054906101000a900460ff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60036020528060005260406000206000915054906101000a900460ff1681565b60606000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515610ad8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642062792061206681526020017f7269656e6400000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b848484604051602401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200193505050506040516020818303038152906040527fe318b52b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050509150610c05826114b2565b905060046000826000191660001916815260200190815260200160002060009054906101000a900460ff16151515610ca5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f5265636f7665727920616c72656164792065786563757465640000000000000081525060200191505060405180910390fd5b610cae8161137a565b1515610d48576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f5265636f7665727920686173206e6f7420656e6f75676820636f6e6669726d6181526020017f74696f6e7300000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600160046000836000191660001916815260200190815260200160002060006101000a81548160ff021916908315150217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a7600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660008560006040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200180602001836002811115610e5957fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b83811015610e99578082015181840152602081019050610e7e565b50505050905090810190601f168015610ec65780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610ee857600080fd5b505af1158015610efc573d6000803e3d6000fd5b505050506040513d6020811015610f1257600080fd5b81019080805190602001909291905050501515610f97576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f436f756c64206e6f742065786563757465207265636f7665727900000000000081525060200191505060405180910390fd5b5050505050565b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515611085576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642062792061206681526020017f7269656e6400000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60046000826000191660001916815260200190815260200160002060009054906101000a900460ff16151515611123576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f5265636f7665727920616c72656164792065786563757465640000000000000081525060200191505060405180910390fd5b600160056000836000191660001916815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611282576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d206d81526020017f616e61676572000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515611337576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f496e76616c6964206d617374657220636f707920616464726573732070726f7681526020017f696465640000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060008090505b60028054905081101561146d5760056000856000191660001916815260200190815260200160002060006002838154811015156113bc57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561143d5781806001019250505b600160149054906101000a900460ff1660ff168214156114605760019250611472565b8080600101915050611383565b600092505b5050919050565b6040805190810160405280601681526020017f536f6369616c205265636f76657279204d6f64756c650000000000000000000081525081565b6000816040518082805190602001908083835b6020831015156114ea57805182526020820191506020810190506020830392506114c5565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390209050919050565b60056020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b60028181548110151561155c57fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60046020528060005260406000206000915054906101000a900460ff1681565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611694576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4d616e616765722068617320616c7265616479206265656e207365740000000081525060200191505060405180910390fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b828054828255906000526020600020908101928215611750579160200282015b8281111561174f5782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550916020019190600101906116f7565b5b50905061175d9190611761565b5090565b6117a191905b8082111561179d57600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905550600101611767565b5090565b905600a165627a7a723058207c28a4bb149561707233d76584fca490cb6b4e8b09d0aa9f0fde95274022c75f0029", + "deployedBytecode": "0x6080604052600436106100d0576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680633cf5b309146100d557806342cde4e814610148578063481c6a751461017957806368125a1b146101d057806377231eaa1461022b57806379716e43146102ae5780637de7edef146102df5780639ca89d0d14610322578063a3f4df7e1461036b578063ae68b056146103fb578063b79ffaff14610480578063ce146828146104e9578063e52cb36a14610556578063ffa1ad741461059f575b600080fd5b3480156100e157600080fd5b5061014660048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803560ff16906020019092919050505061062f565b005b34801561015457600080fd5b5061015d610994565b604051808260ff1660ff16815260200191505060405180910390f35b34801561018557600080fd5b5061018e6109a7565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101dc57600080fd5b50610211600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506109cd565b604051808215151515815260200191505060405180910390f35b34801561023757600080fd5b506102ac600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506109ed565b005b3480156102ba57600080fd5b506102dd6004803603810190808035600019169060200190929190505050610f9e565b005b3480156102eb57600080fd5b50610320600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611197565b005b34801561032e57600080fd5b50610351600480360381019080803560001916906020019092919050505061137a565b604051808215151515815260200191505060405180910390f35b34801561037757600080fd5b50610380611479565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103c05780820151818401526020810190506103a5565b50505050905090810190601f1680156103ed5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561040757600080fd5b50610462600480360381019080803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091929192905050506114b2565b60405180826000191660001916815260200191505060405180910390f35b34801561048c57600080fd5b506104cf6004803603810190808035600019169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061151e565b604051808215151515815260200191505060405180910390f35b3480156104f557600080fd5b506105146004803603810190808035906020019092919050505061154d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561056257600080fd5b50610585600480360381019080803560001916906020019092919050505061158b565b604051808215151515815260200191505060405180910390f35b3480156105ab57600080fd5b506105b46115ab565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156105f45780820151818401526020810190506105d9565b50505050905090810190601f1680156106215780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60008083518360ff16111515156106d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f5468726573686f6c642063616e6e6f742065786365656420667269656e64732081526020017f636f756e7400000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60028360ff1610151515610750576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4174206c65617374203220667269656e6473207265717569726564000000000081525060200191505060405180910390fd5b6107586115e4565b600091505b835182101561095c57838281518110151561077457fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff161415151561080f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f496e76616c696420667269656e6420616464726573732070726f76696465640081525060200191505060405180910390fd5b600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515156108f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f4475706c696361746520667269656e6420616464726573732070726f7669646581526020017f640000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550818060010192505061075d565b83600290805190602001906109729291906116d7565b5082600160146101000a81548160ff021916908360ff16021790555050505050565b600160149054906101000a900460ff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60036020528060005260406000206000915054906101000a900460ff1681565b60606000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515610ad8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642062792061206681526020017f7269656e6400000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b848484604051602401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200193505050506040516020818303038152906040527fe318b52b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050509150610c05826114b2565b905060046000826000191660001916815260200190815260200160002060009054906101000a900460ff16151515610ca5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f5265636f7665727920616c72656164792065786563757465640000000000000081525060200191505060405180910390fd5b610cae8161137a565b1515610d48576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f5265636f7665727920686173206e6f7420656e6f75676820636f6e6669726d6181526020017f74696f6e7300000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600160046000836000191660001916815260200190815260200160002060006101000a81548160ff021916908315150217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a7600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660008560006040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200180602001836002811115610e5957fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b83811015610e99578082015181840152602081019050610e7e565b50505050905090810190601f168015610ec65780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610ee857600080fd5b505af1158015610efc573d6000803e3d6000fd5b505050506040513d6020811015610f1257600080fd5b81019080805190602001909291905050501515610f97576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f436f756c64206e6f742065786563757465207265636f7665727900000000000081525060200191505060405180910390fd5b5050505050565b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515611085576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642062792061206681526020017f7269656e6400000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60046000826000191660001916815260200190815260200160002060009054906101000a900460ff16151515611123576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f5265636f7665727920616c72656164792065786563757465640000000000000081525060200191505060405180910390fd5b600160056000836000191660001916815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611282576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d206d81526020017f616e61676572000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515611337576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f496e76616c6964206d617374657220636f707920616464726573732070726f7681526020017f696465640000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060008090505b60028054905081101561146d5760056000856000191660001916815260200190815260200160002060006002838154811015156113bc57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561143d5781806001019250505b600160149054906101000a900460ff1660ff168214156114605760019250611472565b8080600101915050611383565b600092505b5050919050565b6040805190810160405280601681526020017f536f6369616c205265636f76657279204d6f64756c650000000000000000000081525081565b6000816040518082805190602001908083835b6020831015156114ea57805182526020820191506020810190506020830392506114c5565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390209050919050565b60056020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b60028181548110151561155c57fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60046020528060005260406000206000915054906101000a900460ff1681565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611694576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4d616e616765722068617320616c7265616479206265656e207365740000000081525060200191505060405180910390fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b828054828255906000526020600020908101928215611750579160200282015b8281111561174f5782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550916020019190600101906116f7565b5b50905061175d9190611761565b5090565b6117a191905b8082111561179d57600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905550600101611767565b5090565b905600a165627a7a723058207c28a4bb149561707233d76584fca490cb6b4e8b09d0aa9f0fde95274022c75f0029", + "sourceMap": "306:3656:18:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;306:3656:18;;;;;;;", + "deployedSourceMap": "306:3656:18:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1216:638;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1216:638:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;460:22;;8:9:-1;5:2;;;30:1;27;20:12;5:2;460:22:18;;;;;;;;;;;;;;;;;;;;;;;;;;;262:28:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;262:28:7;;;;;;;;;;;;;;;;;;;;;;;;;;;583:41:18;;8:9:-1;5:2;;;30:1;27;20:12;5:2;583:41:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2510:625;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2510:625:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1967:210;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1967:210:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;626:248:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;626:248:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;3296:405:18;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3296:405:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;353:54;;8:9:-1;5:2;;;30:1;27;20:12;5:2;353:54: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;353:54:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3830:130;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3830:130:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;827:65;;8:9:-1;5:2;;;30:1;27;20:12;5:2;827:65:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;488:24;;8:9:-1;5:2;;;30:1;27;20:12;5:2;488:24:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;692:43;;8:9:-1;5:2;;;30:1;27;20:12;5:2;692:43:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;413:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;413:40: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;413:40:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1216:638;1511:9;1566:14;1320:8;:15;1306:10;:29;;;;1298:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1409:1;1395:10;:15;;;;1387:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1452:12;:10;:12::i;:::-;1523:1;1511:13;;1506:282;1530:8;:15;1526:1;:19;1506:282;;;1583:8;1592:1;1583:11;;;;;;;;;;;;;;;;;;1566:28;;1626:1;1616:6;:11;;;;1608:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1686:8;:16;1695:6;1686:16;;;;;;;;;;;;;;;;;;;;;;;;;1685:17;1677:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1773:4;1754:8;:16;1763:6;1754:16;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;1547:3;;;;;;;1506:282;;;1807:8;1797:7;:18;;;;;;;;;;;;:::i;:::-;;1837:10;1825:9;;:22;;;;;;;;;;;;;;;;;;1216:638;;;;:::o;460:22::-;;;;;;;;;;;;;:::o;262:28:7:-;;;;;;;;;;;;;:::o;583:41:18:-;;;;;;;;;;;;;;;;;;;;;;:::o;2510:625::-;2636:17;2758:16;939:8;:20;948:10;939:20;;;;;;;;;;;;;;;;;;;;;;;;;931:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2718:9;2729:8;2739;2656:92;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;2656:92:18;;;;;;;38:4:-1;29:7;25:18;67:10;61:17;96:58;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;2656:92:18;2636:112;;2777:17;2789:4;2777:11;:17::i;:::-;2758:36;;2813:10;:20;2824:8;2813:20;;;;;;;;;;;;;;;;;;;;;;;;;;;2812:21;2804:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2881:38;2910:8;2881:28;:38::i;:::-;2873:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2994:4;2971:10;:20;2982:8;2971:20;;;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;3016:7;;;;;;;;;;;:33;;;3058:7;;;;;;;;;;;3068:1;3071:4;3077:19;3016:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;3016:81:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3016:81:18;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3016:81:18;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3016:81:18;;;;;;;;;;;;;;;;3008:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2510:625;;;;;:::o;1967:210::-;939:8;:20;948:10;939:20;;;;;;;;;;;;;;;;;;;;;;;;;931:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2070:10;:20;2081:8;2070:20;;;;;;;;;;;;;;;;;;;;;;;;;;;2069:21;2061:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2166:4;2130:11;:21;2142:8;2130:21;;;;;;;;;;;;;;;;;:33;2152:10;2130:33;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;1967:210;:::o;626:248:5:-;359:7:7;;;;;;;;;;;337:30;;:10;:30;;;329:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;791:1:5;776:11;:16;;;;768:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;856:11;843:10;;:24;;;;;;;;;;;;;;;;;;626:248;:::o;3296:405:18:-;3397:4;3417:25;3457:9;3469:1;3457:13;;3452:221;3476:7;:14;;;;3472:1;:18;3452:221;;;3515:11;:21;3527:8;3515:21;;;;;;;;;;;;;;;;;:33;3537:7;3545:1;3537:10;;;;;;;;;;;;;;;;;;;;;;;;;;;3515:33;;;;;;;;;;;;;;;;;;;;;;;;;3511:74;;;3566:19;;;;;;;3511:74;3624:9;;;;;;;;;;;3603:30;;:17;:30;3599:63;;;3658:4;3651:11;;;;3599:63;3492:3;;;;;;;3452:221;;;3689:5;3682:12;;3296:405;;;;;;:::o;353:54::-;;;;;;;;;;;;;;;;;;;;:::o;3830:130::-;3908:7;3948:4;3938:15;;;;;;;;;;;;;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;;;3938:15:18;;;;;;;;;;;;;;;;3931:22;;3830:130;;;:::o;827:65::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;488:24::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;692:43::-;;;;;;;;;;;;;;;;;;;;;;:::o;413:40::-;;;;;;;;;;;;;;;;;;;;:::o;434:300:7:-;648:1;636:7;;;;;;;;;;;628:21;;;620:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;716:10;692:7;;:35;;;;;;;;;;;;;;;;;;434:300::o;306:3656:18:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o", + "source": "pragma solidity 0.4.24;\nimport \"../Enum.sol\";\nimport \"../Module.sol\";\nimport \"../ModuleManager.sol\";\nimport \"../OwnerManager.sol\";\n\n\n/// @title Social Recovery Module - Allows to replace an owner without Safe confirmations if friends approve the replacement.\n/// @author Stefan George - \ncontract SocialRecoveryModule is Module {\n\n string public constant NAME = \"Social Recovery Module\";\n string public constant VERSION = \"0.0.1\";\n\n uint8 public threshold;\n address[] public friends;\n\n // isFriend mapping maps friend's address to friend status.\n mapping (address => bool) public isFriend;\n // isExecuted mapping maps data hash to execution status.\n mapping (bytes32 => bool) public isExecuted;\n // isConfirmed mapping maps data hash to friend's address to confirmation status.\n mapping (bytes32 => mapping (address => bool)) public isConfirmed;\n\n modifier onlyFriend() {\n require(isFriend[msg.sender], \"Method can only be called by a friend\");\n _;\n }\n\n /// @dev Setup function sets initial storage of contract.\n /// @param _friends List of friends' addresses.\n /// @param _threshold Required number of friends to confirm replacement.\n function setup(address[] _friends, uint8 _threshold)\n public\n {\n require(_threshold <= _friends.length, \"Threshold cannot exceed friends count\");\n require(_threshold >= 2, \"At least 2 friends required\");\n setManager();\n // Set allowed friends.\n for (uint256 i = 0; i < _friends.length; i++) {\n address friend = _friends[i];\n require(friend != 0, \"Invalid friend address provided\");\n require(!isFriend[friend], \"Duplicate friend address provided\");\n isFriend[friend] = true;\n }\n friends = _friends;\n threshold = _threshold;\n }\n\n /// @dev Allows a friend to confirm a Safe transaction.\n /// @param dataHash Safe transaction hash.\n function confirmTransaction(bytes32 dataHash)\n public\n onlyFriend\n {\n require(!isExecuted[dataHash], \"Recovery already executed\");\n isConfirmed[dataHash][msg.sender] = true;\n }\n\n /// @dev Returns if Safe transaction is a valid owner replacement transaction.\n /// @param prevOwner Owner that pointed to the owner to be replaced in the linked list\n /// @param oldOwner Owner address to be replaced.\n /// @param newOwner New owner address.\n /// @return Returns if transaction can be executed.\n function recoverAccess(address prevOwner, address oldOwner, address newOwner)\n public\n onlyFriend\n {\n bytes memory data = abi.encodeWithSignature(\"swapOwner(address,address,address)\", prevOwner, oldOwner, newOwner);\n bytes32 dataHash = getDataHash(data);\n require(!isExecuted[dataHash], \"Recovery already executed\");\n require(isConfirmedByRequiredFriends(dataHash), \"Recovery has not enough confirmations\");\n isExecuted[dataHash] = true;\n require(manager.execTransactionFromModule(address(manager), 0, data, Enum.Operation.Call), \"Could not execute recovery\");\n }\n\n /// @dev Returns if Safe transaction is a valid owner replacement transaction.\n /// @param dataHash Data hash.\n /// @return Confirmation status.\n function isConfirmedByRequiredFriends(bytes32 dataHash)\n public\n view\n returns (bool)\n {\n uint256 confirmationCount;\n for (uint256 i = 0; i < friends.length; i++) {\n if (isConfirmed[dataHash][friends[i]])\n confirmationCount++;\n if (confirmationCount == threshold)\n return true;\n }\n return false;\n }\n\n /// @dev Returns hash of data encoding owner replacement.\n /// @param data Data payload.\n /// @return Data hash.\n function getDataHash(bytes data)\n public\n pure\n returns (bytes32)\n {\n return keccak256(data);\n }\n}\n", "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/modules/SocialRecoveryModule.sol", "ast": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/modules/SocialRecoveryModule.sol", "exportedSymbols": { "SocialRecoveryModule": [ - 2234 + 2279 ] }, - "id": 2235, + "id": 2280, "nodeType": "SourceUnit", "nodes": [ { - "id": 1975, + "id": 2016, "literals": [ "solidity", "0.4", @@ -273,9 +273,9 @@ { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Enum.sol", "file": "../Enum.sol", - "id": 1976, + "id": 2017, "nodeType": "ImportDirective", - "scope": 2235, + "scope": 2280, "sourceUnit": 31, "src": "24:21:18", "symbolAliases": [], @@ -284,10 +284,10 @@ { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Module.sol", "file": "../Module.sol", - "id": 1977, + "id": 2018, "nodeType": "ImportDirective", - "scope": 2235, - "sourceUnit": 751, + "scope": 2280, + "sourceUnit": 763, "src": "46:23:18", "symbolAliases": [], "unitAlias": "" @@ -295,10 +295,10 @@ { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/ModuleManager.sol", "file": "../ModuleManager.sol", - "id": 1978, + "id": 2019, "nodeType": "ImportDirective", - "scope": 2235, - "sourceUnit": 1101, + "scope": 2280, + "sourceUnit": 1119, "src": "70:30:18", "symbolAliases": [], "unitAlias": "" @@ -306,10 +306,10 @@ { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/OwnerManager.sol", "file": "../OwnerManager.sol", - "id": 1979, + "id": 2020, "nodeType": "ImportDirective", - "scope": 2235, - "sourceUnit": 1473, + "scope": 2280, + "sourceUnit": 1505, "src": "101:29:18", "symbolAliases": [], "unitAlias": "" @@ -320,45 +320,45 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 1980, + "id": 2021, "name": "Module", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 750, + "referencedDeclaration": 762, "src": "339:6:18", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$750", + "typeIdentifier": "t_contract$_Module_$762", "typeString": "contract Module" } }, - "id": 1981, + "id": 2022, "nodeType": "InheritanceSpecifier", "src": "339:6:18" } ], "contractDependencies": [ - 652, - 750, - 1619 + 662, + 762, + 1654 ], "contractKind": "contract", "documentation": "@title Social Recovery Module - Allows to replace an owner without Safe confirmations if friends approve the replacement.\n @author Stefan George - ", "fullyImplemented": true, - "id": 2234, + "id": 2279, "linearizedBaseContracts": [ - 2234, - 750, - 652, - 1619 + 2279, + 762, + 662, + 1654 ], "name": "SocialRecoveryModule", "nodeType": "ContractDefinition", "nodes": [ { "constant": true, - "id": 1984, + "id": 2025, "name": "NAME", "nodeType": "VariableDeclaration", - "scope": 2234, + "scope": 2279, "src": "353:54:18", "stateVariable": true, "storageLocation": "default", @@ -367,7 +367,7 @@ "typeString": "string" }, "typeName": { - "id": 1982, + "id": 2023, "name": "string", "nodeType": "ElementaryTypeName", "src": "353:6:18", @@ -379,7 +379,7 @@ "value": { "argumentTypes": null, "hexValue": "536f6369616c205265636f76657279204d6f64756c65", - "id": 1983, + "id": 2024, "isConstant": false, "isLValue": false, "isPure": true, @@ -398,10 +398,10 @@ }, { "constant": true, - "id": 1987, + "id": 2028, "name": "VERSION", "nodeType": "VariableDeclaration", - "scope": 2234, + "scope": 2279, "src": "413:40:18", "stateVariable": true, "storageLocation": "default", @@ -410,7 +410,7 @@ "typeString": "string" }, "typeName": { - "id": 1985, + "id": 2026, "name": "string", "nodeType": "ElementaryTypeName", "src": "413:6:18", @@ -422,7 +422,7 @@ "value": { "argumentTypes": null, "hexValue": "302e302e31", - "id": 1986, + "id": 2027, "isConstant": false, "isLValue": false, "isPure": true, @@ -441,10 +441,10 @@ }, { "constant": false, - "id": 1989, + "id": 2030, "name": "threshold", "nodeType": "VariableDeclaration", - "scope": 2234, + "scope": 2279, "src": "460:22:18", "stateVariable": true, "storageLocation": "default", @@ -453,7 +453,7 @@ "typeString": "uint8" }, "typeName": { - "id": 1988, + "id": 2029, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "460:5:18", @@ -467,10 +467,10 @@ }, { "constant": false, - "id": 1992, + "id": 2033, "name": "friends", "nodeType": "VariableDeclaration", - "scope": 2234, + "scope": 2279, "src": "488:24:18", "stateVariable": true, "storageLocation": "default", @@ -480,7 +480,7 @@ }, "typeName": { "baseType": { - "id": 1990, + "id": 2031, "name": "address", "nodeType": "ElementaryTypeName", "src": "488:7:18", @@ -489,7 +489,7 @@ "typeString": "address" } }, - "id": 1991, + "id": 2032, "length": null, "nodeType": "ArrayTypeName", "src": "488:9:18", @@ -503,10 +503,10 @@ }, { "constant": false, - "id": 1996, + "id": 2037, "name": "isFriend", "nodeType": "VariableDeclaration", - "scope": 2234, + "scope": 2279, "src": "583:41:18", "stateVariable": true, "storageLocation": "default", @@ -515,9 +515,9 @@ "typeString": "mapping(address => bool)" }, "typeName": { - "id": 1995, + "id": 2036, "keyType": { - "id": 1993, + "id": 2034, "name": "address", "nodeType": "ElementaryTypeName", "src": "592:7:18", @@ -533,7 +533,7 @@ "typeString": "mapping(address => bool)" }, "valueType": { - "id": 1994, + "id": 2035, "name": "bool", "nodeType": "ElementaryTypeName", "src": "603:4:18", @@ -548,10 +548,10 @@ }, { "constant": false, - "id": 2000, + "id": 2041, "name": "isExecuted", "nodeType": "VariableDeclaration", - "scope": 2234, + "scope": 2279, "src": "692:43:18", "stateVariable": true, "storageLocation": "default", @@ -560,9 +560,9 @@ "typeString": "mapping(bytes32 => bool)" }, "typeName": { - "id": 1999, + "id": 2040, "keyType": { - "id": 1997, + "id": 2038, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "701:7:18", @@ -578,7 +578,7 @@ "typeString": "mapping(bytes32 => bool)" }, "valueType": { - "id": 1998, + "id": 2039, "name": "bool", "nodeType": "ElementaryTypeName", "src": "712:4:18", @@ -593,10 +593,10 @@ }, { "constant": false, - "id": 2006, + "id": 2047, "name": "isConfirmed", "nodeType": "VariableDeclaration", - "scope": 2234, + "scope": 2279, "src": "827:65:18", "stateVariable": true, "storageLocation": "default", @@ -605,9 +605,9 @@ "typeString": "mapping(bytes32 => mapping(address => bool))" }, "typeName": { - "id": 2005, + "id": 2046, "keyType": { - "id": 2001, + "id": 2042, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "836:7:18", @@ -623,9 +623,9 @@ "typeString": "mapping(bytes32 => mapping(address => bool))" }, "valueType": { - "id": 2004, + "id": 2045, "keyType": { - "id": 2002, + "id": 2043, "name": "address", "nodeType": "ElementaryTypeName", "src": "856:7:18", @@ -641,7 +641,7 @@ "typeString": "mapping(address => bool)" }, "valueType": { - "id": 2003, + "id": 2044, "name": "bool", "nodeType": "ElementaryTypeName", "src": "867:4:18", @@ -657,9 +657,9 @@ }, { "body": { - "id": 2016, + "id": 2058, "nodeType": "Block", - "src": "921:57:18", + "src": "921:98:18", "statements": [ { "expression": { @@ -669,34 +669,34 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2009, + "id": 2050, "name": "isFriend", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1996, + "referencedDeclaration": 2037, "src": "939:8:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 2012, + "id": 2053, "indexExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2010, + "id": 2051, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2598, + "referencedDeclaration": 2654, "src": "948:3:18", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 2011, + "id": 2052, "isConstant": false, "isLValue": false, "isPure": false, @@ -720,6 +720,24 @@ "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "4d6574686f642063616e206f6e6c792062652063616c6c6564206279206120667269656e64", + "id": 2054, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "961:39:18", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_b1b9fb59ab33eb5ed22c2a9ea6a84e946973f30df026a85494e13c73883cce0a", + "typeString": "literal_string \"Method can only be called by a friend\"" + }, + "value": "Method can only be called by a friend" } ], "expression": { @@ -727,23 +745,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_b1b9fb59ab33eb5ed22c2a9ea6a84e946973f30df026a85494e13c73883cce0a", + "typeString": "literal_string \"Method can only be called by a friend\"" } ], - "id": 2008, + "id": 2049, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, + "referencedDeclaration": 2658, "src": "931:7:18", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 2013, + "id": 2055, "isConstant": false, "isLValue": false, "isPure": false, @@ -751,41 +773,41 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "931:29:18", + "src": "931:70:18", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2014, + "id": 2056, "nodeType": "ExpressionStatement", - "src": "931:29:18" + "src": "931:70:18" }, { - "id": 2015, + "id": 2057, "nodeType": "PlaceholderStatement", - "src": "970:1:18" + "src": "1011:1:18" } ] }, "documentation": null, - "id": 2017, + "id": 2059, "name": "onlyFriend", "nodeType": "ModifierDefinition", "parameters": { - "id": 2007, + "id": 2048, "nodeType": "ParameterList", "parameters": [], "src": "918:2:18" }, - "src": "899:79:18", + "src": "899:120:18", "visibility": "internal" }, { "body": { - "id": 2087, + "id": 2133, "nodeType": "Block", - "src": "1247:422:18", + "src": "1288:566:18", "statements": [ { "expression": { @@ -797,19 +819,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 2029, + "id": 2071, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 2026, + "id": 2068, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2022, - "src": "1265:10:18", + "referencedDeclaration": 2064, + "src": "1306:10:18", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -821,18 +843,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2027, + "id": 2069, "name": "_friends", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2020, - "src": "1279:8:18", + "referencedDeclaration": 2062, + "src": "1320:8:18", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 2028, + "id": 2070, "isConstant": false, "isLValue": false, "isPure": false, @@ -840,17 +862,35 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1279:15:18", + "src": "1320:15:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1265:29:18", + "src": "1306:29:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "5468726573686f6c642063616e6e6f742065786365656420667269656e647320636f756e74", + "id": 2072, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1337:39:18", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_8268a65eab991df6bae5d0e671467a9ef945396e4d495dc52153cedea41ef257", + "typeString": "literal_string \"Threshold cannot exceed friends count\"" + }, + "value": "Threshold cannot exceed friends count" } ], "expression": { @@ -858,23 +898,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_8268a65eab991df6bae5d0e671467a9ef945396e4d495dc52153cedea41ef257", + "typeString": "literal_string \"Threshold cannot exceed friends count\"" } ], - "id": 2025, + "id": 2067, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "1257:7:18", + "referencedDeclaration": 2658, + "src": "1298:7:18", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 2030, + "id": 2073, "isConstant": false, "isLValue": false, "isPure": false, @@ -882,15 +926,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1257:38:18", + "src": "1298:79:18", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2031, + "id": 2074, "nodeType": "ExpressionStatement", - "src": "1257:38:18" + "src": "1298:79:18" }, { "expression": { @@ -902,19 +946,19 @@ "typeIdentifier": "t_uint8", "typeString": "uint8" }, - "id": 2035, + "id": 2078, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 2033, + "id": 2076, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2022, - "src": "1313:10:18", + "referencedDeclaration": 2064, + "src": "1395:10:18", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -925,14 +969,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "32", - "id": 2034, + "id": 2077, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1327:1:18", + "src": "1409:1:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", @@ -940,11 +984,29 @@ }, "value": "2" }, - "src": "1313:15:18", + "src": "1395:15:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "4174206c65617374203220667269656e6473207265717569726564", + "id": 2079, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1412:29:18", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_2dca24eb5124987015b2480219c9ac2baf747f0e8ae6537e9852d3e3b2773773", + "typeString": "literal_string \"At least 2 friends required\"" + }, + "value": "At least 2 friends required" } ], "expression": { @@ -952,23 +1014,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_2dca24eb5124987015b2480219c9ac2baf747f0e8ae6537e9852d3e3b2773773", + "typeString": "literal_string \"At least 2 friends required\"" } ], - "id": 2032, + "id": 2075, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "1305:7:18", + "referencedDeclaration": 2658, + "src": "1387:7:18", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 2036, + "id": 2080, "isConstant": false, "isLValue": false, "isPure": false, @@ -976,15 +1042,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1305:24:18", + "src": "1387:55:18", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2037, + "id": 2081, "nodeType": "ExpressionStatement", - "src": "1305:24:18" + "src": "1387:55:18" }, { "expression": { @@ -992,18 +1058,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 2038, + "id": 2082, "name": "setManager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 749, - "src": "1339:10:18", + "referencedDeclaration": 761, + "src": "1452:10:18", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()" } }, - "id": 2039, + "id": 2083, "isConstant": false, "isLValue": false, "isPure": false, @@ -1011,34 +1077,34 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1339:12:18", + "src": "1452:12:18", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2040, + "id": 2084, "nodeType": "ExpressionStatement", - "src": "1339:12:18" + "src": "1452:12:18" }, { "body": { - "id": 2077, + "id": 2123, "nodeType": "Block", - "src": "1439:164:18", + "src": "1552:236:18", "statements": [ { "assignments": [ - 2053 + 2097 ], "declarations": [ { "constant": false, - "id": 2053, + "id": 2097, "name": "friend", "nodeType": "VariableDeclaration", - "scope": 2088, - "src": "1453:14:18", + "scope": 2134, + "src": "1566:14:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1046,10 +1112,10 @@ "typeString": "address" }, "typeName": { - "id": 2052, + "id": 2096, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1453:7:18", + "src": "1566:7:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1059,31 +1125,31 @@ "visibility": "internal" } ], - "id": 2057, + "id": 2101, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2054, + "id": 2098, "name": "_friends", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2020, - "src": "1470:8:18", + "referencedDeclaration": 2062, + "src": "1583:8:18", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 2056, + "id": 2100, "indexExpression": { "argumentTypes": null, - "id": 2055, + "id": 2099, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2042, - "src": "1479:1:18", + "referencedDeclaration": 2086, + "src": "1592:1:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1094,14 +1160,14 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1470:11:18", + "src": "1583:11:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", - "src": "1453:28:18" + "src": "1566:28:18" }, { "expression": { @@ -1113,19 +1179,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 2061, + "id": 2105, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 2059, + "id": 2103, "name": "friend", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2053, - "src": "1503:6:18", + "referencedDeclaration": 2097, + "src": "1616:6:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1136,14 +1202,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 2060, + "id": 2104, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1513:1:18", + "src": "1626:1:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -1151,11 +1217,29 @@ }, "value": "0" }, - "src": "1503:11:18", + "src": "1616:11:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "496e76616c696420667269656e6420616464726573732070726f7669646564", + "id": 2106, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1629:33:18", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_5d50911068dfec2dd53f3e08d7dec23b50affd69b91cf3e5d1e699c56bca7a55", + "typeString": "literal_string \"Invalid friend address provided\"" + }, + "value": "Invalid friend address provided" } ], "expression": { @@ -1163,23 +1247,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_5d50911068dfec2dd53f3e08d7dec23b50affd69b91cf3e5d1e699c56bca7a55", + "typeString": "literal_string \"Invalid friend address provided\"" } ], - "id": 2058, + "id": 2102, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "1495:7:18", + "referencedDeclaration": 2658, + "src": "1608:7:18", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 2062, + "id": 2107, "isConstant": false, "isLValue": false, "isPure": false, @@ -1187,15 +1275,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1495:20:18", + "src": "1608:55:18", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2063, + "id": 2108, "nodeType": "ExpressionStatement", - "src": "1495:20:18" + "src": "1608:55:18" }, { "expression": { @@ -1203,7 +1291,7 @@ "arguments": [ { "argumentTypes": null, - "id": 2068, + "id": 2113, "isConstant": false, "isLValue": false, "isPure": false, @@ -1211,31 +1299,31 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "1537:17:18", + "src": "1685:17:18", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2065, + "id": 2110, "name": "isFriend", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1996, - "src": "1538:8:18", + "referencedDeclaration": 2037, + "src": "1686:8:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 2067, + "id": 2112, "indexExpression": { "argumentTypes": null, - "id": 2066, + "id": 2111, "name": "friend", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2053, - "src": "1547:6:18", + "referencedDeclaration": 2097, + "src": "1695:6:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1246,7 +1334,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1538:16:18", + "src": "1686:16:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1256,6 +1344,24 @@ "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "4475706c696361746520667269656e6420616464726573732070726f7669646564", + "id": 2114, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1704:35:18", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_78a0468a6f4bfa8018f886880a93f836f50f407cd02c2e42c43779f87d3af4d3", + "typeString": "literal_string \"Duplicate friend address provided\"" + }, + "value": "Duplicate friend address provided" } ], "expression": { @@ -1263,23 +1369,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_78a0468a6f4bfa8018f886880a93f836f50f407cd02c2e42c43779f87d3af4d3", + "typeString": "literal_string \"Duplicate friend address provided\"" } ], - "id": 2064, + "id": 2109, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "1529:7:18", + "referencedDeclaration": 2658, + "src": "1677:7:18", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 2069, + "id": 2115, "isConstant": false, "isLValue": false, "isPure": false, @@ -1287,20 +1397,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1529:26:18", + "src": "1677:63:18", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2070, + "id": 2116, "nodeType": "ExpressionStatement", - "src": "1529:26:18" + "src": "1677:63:18" }, { "expression": { "argumentTypes": null, - "id": 2075, + "id": 2121, "isConstant": false, "isLValue": false, "isPure": false, @@ -1309,26 +1419,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2071, + "id": 2117, "name": "isFriend", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1996, - "src": "1569:8:18", + "referencedDeclaration": 2037, + "src": "1754:8:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 2073, + "id": 2119, "indexExpression": { "argumentTypes": null, - "id": 2072, + "id": 2118, "name": "friend", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2053, - "src": "1578:6:18", + "referencedDeclaration": 2097, + "src": "1763:6:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1339,7 +1449,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1569:16:18", + "src": "1754:16:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1350,14 +1460,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 2074, + "id": 2120, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "1588:4:18", + "src": "1773:4:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -1365,15 +1475,15 @@ }, "value": "true" }, - "src": "1569:23:18", + "src": "1754:23:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 2076, + "id": 2122, "nodeType": "ExpressionStatement", - "src": "1569:23:18" + "src": "1754:23:18" } ] }, @@ -1383,19 +1493,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 2048, + "id": 2092, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 2045, + "id": 2089, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2042, - "src": "1413:1:18", + "referencedDeclaration": 2086, + "src": "1526:1:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1407,18 +1517,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2046, + "id": 2090, "name": "_friends", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2020, - "src": "1417:8:18", + "referencedDeclaration": 2062, + "src": "1530:8:18", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 2047, + "id": 2091, "isConstant": false, "isLValue": false, "isPure": false, @@ -1426,31 +1536,31 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1417:15:18", + "src": "1530:15:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1413:19:18", + "src": "1526:19:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 2078, + "id": 2124, "initializationExpression": { "assignments": [ - 2042 + 2086 ], "declarations": [ { "constant": false, - "id": 2042, + "id": 2086, "name": "i", "nodeType": "VariableDeclaration", - "scope": 2088, - "src": "1398:9:18", + "scope": 2134, + "src": "1511:9:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1458,10 +1568,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2041, + "id": 2085, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1398:7:18", + "src": "1511:7:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1471,18 +1581,18 @@ "visibility": "internal" } ], - "id": 2044, + "id": 2088, "initialValue": { "argumentTypes": null, "hexValue": "30", - "id": 2043, + "id": 2087, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1410:1:18", + "src": "1523:1:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -1491,12 +1601,12 @@ "value": "0" }, "nodeType": "VariableDeclarationStatement", - "src": "1398:13:18" + "src": "1511:13:18" }, "loopExpression": { "expression": { "argumentTypes": null, - "id": 2050, + "id": 2094, "isConstant": false, "isLValue": false, "isPure": false, @@ -1504,15 +1614,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "1434:3:18", + "src": "1547:3:18", "subExpression": { "argumentTypes": null, - "id": 2049, + "id": 2093, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2042, - "src": "1434:1:18", + "referencedDeclaration": 2086, + "src": "1547:1:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1523,29 +1633,29 @@ "typeString": "uint256" } }, - "id": 2051, + "id": 2095, "nodeType": "ExpressionStatement", - "src": "1434:3:18" + "src": "1547:3:18" }, "nodeType": "ForStatement", - "src": "1393:210:18" + "src": "1506:282:18" }, { "expression": { "argumentTypes": null, - "id": 2081, + "id": 2127, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 2079, + "id": 2125, "name": "friends", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1992, - "src": "1612:7:18", + "referencedDeclaration": 2033, + "src": "1797:7:18", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" @@ -1555,43 +1665,43 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 2080, + "id": 2126, "name": "_friends", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2020, - "src": "1622:8:18", + "referencedDeclaration": 2062, + "src": "1807:8:18", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "src": "1612:18:18", + "src": "1797:18:18", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, - "id": 2082, + "id": 2128, "nodeType": "ExpressionStatement", - "src": "1612:18:18" + "src": "1797:18:18" }, { "expression": { "argumentTypes": null, - "id": 2085, + "id": 2131, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 2083, + "id": 2129, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1989, - "src": "1640:9:18", + "referencedDeclaration": 2030, + "src": "1825:9:18", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -1601,31 +1711,31 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 2084, + "id": 2130, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2022, - "src": "1652:10:18", + "referencedDeclaration": 2064, + "src": "1837:10:18", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "src": "1640:22:18", + "src": "1825:22:18", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "id": 2086, + "id": 2132, "nodeType": "ExpressionStatement", - "src": "1640:22:18" + "src": "1825:22:18" } ] }, "documentation": "@dev Setup function sets initial storage of contract.\n @param _friends List of friends' addresses.\n @param _threshold Required number of friends to confirm replacement.", - "id": 2088, + "id": 2134, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -1633,16 +1743,16 @@ "name": "setup", "nodeType": "FunctionDefinition", "parameters": { - "id": 2023, + "id": 2065, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2020, + "id": 2062, "name": "_friends", "nodeType": "VariableDeclaration", - "scope": 2088, - "src": "1190:18:18", + "scope": 2134, + "src": "1231:18:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1651,19 +1761,19 @@ }, "typeName": { "baseType": { - "id": 2018, + "id": 2060, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1190:7:18", + "src": "1231:7:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 2019, + "id": 2061, "length": null, "nodeType": "ArrayTypeName", - "src": "1190:9:18", + "src": "1231:9:18", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" @@ -1674,11 +1784,11 @@ }, { "constant": false, - "id": 2022, + "id": 2064, "name": "_threshold", "nodeType": "VariableDeclaration", - "scope": 2088, - "src": "1210:16:18", + "scope": 2134, + "src": "1251:16:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1686,10 +1796,10 @@ "typeString": "uint8" }, "typeName": { - "id": 2021, + "id": 2063, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "1210:5:18", + "src": "1251:5:18", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -1699,26 +1809,26 @@ "visibility": "internal" } ], - "src": "1189:38:18" + "src": "1230:38:18" }, "payable": false, "returnParameters": { - "id": 2024, + "id": 2066, "nodeType": "ParameterList", "parameters": [], - "src": "1247:0:18" + "src": "1288:0:18" }, - "scope": 2234, - "src": "1175:494:18", + "scope": 2279, + "src": "1216:638:18", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 2111, + "id": 2158, "nodeType": "Block", - "src": "1866:97:18", + "src": "2051:126:18", "statements": [ { "expression": { @@ -1726,7 +1836,7 @@ "arguments": [ { "argumentTypes": null, - "id": 2099, + "id": 2145, "isConstant": false, "isLValue": false, "isPure": false, @@ -1734,31 +1844,31 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "1884:21:18", + "src": "2069:21:18", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2096, + "id": 2142, "name": "isExecuted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2000, - "src": "1885:10:18", + "referencedDeclaration": 2041, + "src": "2070:10:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" } }, - "id": 2098, + "id": 2144, "indexExpression": { "argumentTypes": null, - "id": 2097, + "id": 2143, "name": "dataHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2090, - "src": "1896:8:18", + "referencedDeclaration": 2136, + "src": "2081:8:18", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1769,7 +1879,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1885:20:18", + "src": "2070:20:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1779,6 +1889,24 @@ "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "5265636f7665727920616c7265616479206578656375746564", + "id": 2146, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2092:27:18", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c2f19da1619c37eda5c6f4f3abcc466ec30065da4e2523bb6c81cc850dedac38", + "typeString": "literal_string \"Recovery already executed\"" + }, + "value": "Recovery already executed" } ], "expression": { @@ -1786,23 +1914,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_c2f19da1619c37eda5c6f4f3abcc466ec30065da4e2523bb6c81cc850dedac38", + "typeString": "literal_string \"Recovery already executed\"" } ], - "id": 2095, + "id": 2141, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "1876:7:18", + "referencedDeclaration": 2658, + "src": "2061:7:18", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 2100, + "id": 2147, "isConstant": false, "isLValue": false, "isPure": false, @@ -1810,20 +1942,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1876:30:18", + "src": "2061:59:18", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2101, + "id": 2148, "nodeType": "ExpressionStatement", - "src": "1876:30:18" + "src": "2061:59:18" }, { "expression": { "argumentTypes": null, - "id": 2109, + "id": 2156, "isConstant": false, "isLValue": false, "isPure": false, @@ -1834,26 +1966,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2102, + "id": 2149, "name": "isConfirmed", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2006, - "src": "1916:11:18", + "referencedDeclaration": 2047, + "src": "2130:11:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", "typeString": "mapping(bytes32 => mapping(address => bool))" } }, - "id": 2106, + "id": 2153, "indexExpression": { "argumentTypes": null, - "id": 2103, + "id": 2150, "name": "dataHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2090, - "src": "1928:8:18", + "referencedDeclaration": 2136, + "src": "2142:8:18", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1864,29 +1996,29 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1916:21:18", + "src": "2130:21:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 2107, + "id": 2154, "indexExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2104, + "id": 2151, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2598, - "src": "1938:3:18", + "referencedDeclaration": 2654, + "src": "2152:3:18", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 2105, + "id": 2152, "isConstant": false, "isLValue": false, "isPure": false, @@ -1894,7 +2026,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1938:10:18", + "src": "2152:10:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1905,7 +2037,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1916:33:18", + "src": "2130:33:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1916,14 +2048,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 2108, + "id": 2155, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "1952:4:18", + "src": "2166:4:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -1931,57 +2063,57 @@ }, "value": "true" }, - "src": "1916:40:18", + "src": "2130:40:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 2110, + "id": 2157, "nodeType": "ExpressionStatement", - "src": "1916:40:18" + "src": "2130:40:18" } ] }, "documentation": "@dev Allows a friend to confirm a Safe transaction.\n @param dataHash Safe transaction hash.", - "id": 2112, + "id": 2159, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 2093, + "id": 2139, "modifierName": { "argumentTypes": null, - "id": 2092, + "id": 2138, "name": "onlyFriend", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2017, - "src": "1851:10:18", + "referencedDeclaration": 2059, + "src": "2036:10:18", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "1851:10:18" + "src": "2036:10:18" } ], "name": "confirmTransaction", "nodeType": "FunctionDefinition", "parameters": { - "id": 2091, + "id": 2137, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2090, + "id": 2136, "name": "dataHash", "nodeType": "VariableDeclaration", - "scope": 2112, - "src": "1810:16:18", + "scope": 2159, + "src": "1995:16:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1989,10 +2121,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 2089, + "id": 2135, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "1810:7:18", + "src": "1995:7:18", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -2002,139 +2134,39 @@ "visibility": "internal" } ], - "src": "1809:18:18" + "src": "1994:18:18" }, "payable": false, "returnParameters": { - "id": 2094, + "id": 2140, "nodeType": "ParameterList", "parameters": [], - "src": "1866:0:18" + "src": "2051:0:18" }, - "scope": 2234, - "src": "1782:181:18", + "scope": 2279, + "src": "1967:210:18", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 2177, + "id": 2222, "nodeType": "Block", - "src": "2393:512:18", + "src": "2626:509:18", "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 2122, - "name": "isFriend", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1996, - "src": "2475:8:18", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 2125, - "indexExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 2123, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2598, - "src": "2484:3:18", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 2124, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "2484:10:18", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2475:20:18", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 2121, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 2601, - 2602 - ], - "referencedDeclaration": 2601, - "src": "2467:7:18", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 2126, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2467:29:18", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 2127, - "nodeType": "ExpressionStatement", - "src": "2467:29:18" - }, { "assignments": [ - 2129 + 2171 ], "declarations": [ { "constant": false, - "id": 2129, + "id": 2171, "name": "data", "nodeType": "VariableDeclaration", - "scope": 2178, - "src": "2506:17:18", + "scope": 2223, + "src": "2636:17:18", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -2142,10 +2174,10 @@ "typeString": "bytes" }, "typeName": { - "id": 2128, + "id": 2170, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "2506:5:18", + "src": "2636:5:18", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -2155,21 +2187,21 @@ "visibility": "internal" } ], - "id": 2137, + "id": 2179, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "737761704f776e657228616464726573732c616464726573732c6164647265737329", - "id": 2132, + "id": 2174, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2550:36:18", + "src": "2680:36:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_e318b52b9bee2870ac7ee0af86866eb2e8f9569b34de6028eb487e7983ba6df8", @@ -2179,12 +2211,12 @@ }, { "argumentTypes": null, - "id": 2133, + "id": 2175, "name": "prevOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2114, - "src": "2588:9:18", + "referencedDeclaration": 2161, + "src": "2718:9:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2192,12 +2224,12 @@ }, { "argumentTypes": null, - "id": 2134, + "id": 2176, "name": "oldOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2116, - "src": "2599:8:18", + "referencedDeclaration": 2163, + "src": "2729:8:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2205,12 +2237,12 @@ }, { "argumentTypes": null, - "id": 2135, + "id": 2177, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2118, - "src": "2609:8:18", + "referencedDeclaration": 2165, + "src": "2739:8:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2238,18 +2270,18 @@ ], "expression": { "argumentTypes": null, - "id": 2130, + "id": 2172, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2585, - "src": "2526:3:18", + "referencedDeclaration": 2641, + "src": "2656:3:18", "typeDescriptions": { "typeIdentifier": "t_magic_abi", "typeString": "abi" } }, - "id": 2131, + "id": 2173, "isConstant": false, "isLValue": false, "isPure": true, @@ -2257,13 +2289,13 @@ "memberName": "encodeWithSignature", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2526:23:18", + "src": "2656:23:18", "typeDescriptions": { "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$", "typeString": "function (string memory) pure returns (bytes memory)" } }, - "id": 2136, + "id": 2178, "isConstant": false, "isLValue": false, "isPure": false, @@ -2271,27 +2303,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2526:92:18", + "src": "2656:92:18", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, "nodeType": "VariableDeclarationStatement", - "src": "2506:112:18" + "src": "2636:112:18" }, { "assignments": [ - 2139 + 2181 ], "declarations": [ { "constant": false, - "id": 2139, + "id": 2181, "name": "dataHash", "nodeType": "VariableDeclaration", - "scope": 2178, - "src": "2628:16:18", + "scope": 2223, + "src": "2758:16:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2299,10 +2331,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 2138, + "id": 2180, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "2628:7:18", + "src": "2758:7:18", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -2312,18 +2344,18 @@ "visibility": "internal" } ], - "id": 2143, + "id": 2185, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 2141, + "id": 2183, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2129, - "src": "2659:4:18", + "referencedDeclaration": 2171, + "src": "2789:4:18", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -2337,18 +2369,18 @@ "typeString": "bytes memory" } ], - "id": 2140, + "id": 2182, "name": "getDataHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2233, - "src": "2647:11:18", + "referencedDeclaration": 2278, + "src": "2777:11:18", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)" } }, - "id": 2142, + "id": 2184, "isConstant": false, "isLValue": false, "isPure": false, @@ -2356,14 +2388,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2647:17:18", + "src": "2777:17:18", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "VariableDeclarationStatement", - "src": "2628:36:18" + "src": "2758:36:18" }, { "expression": { @@ -2371,7 +2403,7 @@ "arguments": [ { "argumentTypes": null, - "id": 2148, + "id": 2190, "isConstant": false, "isLValue": false, "isPure": false, @@ -2379,31 +2411,31 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "2682:21:18", + "src": "2812:21:18", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2145, + "id": 2187, "name": "isExecuted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2000, - "src": "2683:10:18", + "referencedDeclaration": 2041, + "src": "2813:10:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" } }, - "id": 2147, + "id": 2189, "indexExpression": { "argumentTypes": null, - "id": 2146, + "id": 2188, "name": "dataHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2139, - "src": "2694:8:18", + "referencedDeclaration": 2181, + "src": "2824:8:18", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -2414,7 +2446,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2683:20:18", + "src": "2813:20:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2424,6 +2456,24 @@ "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "5265636f7665727920616c7265616479206578656375746564", + "id": 2191, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2835:27:18", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c2f19da1619c37eda5c6f4f3abcc466ec30065da4e2523bb6c81cc850dedac38", + "typeString": "literal_string \"Recovery already executed\"" + }, + "value": "Recovery already executed" } ], "expression": { @@ -2431,23 +2481,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_c2f19da1619c37eda5c6f4f3abcc466ec30065da4e2523bb6c81cc850dedac38", + "typeString": "literal_string \"Recovery already executed\"" } ], - "id": 2144, + "id": 2186, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "2674:7:18", + "referencedDeclaration": 2658, + "src": "2804:7:18", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 2149, + "id": 2192, "isConstant": false, "isLValue": false, "isPure": false, @@ -2455,15 +2509,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2674:30:18", + "src": "2804:59:18", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2150, + "id": 2193, "nodeType": "ExpressionStatement", - "src": "2674:30:18" + "src": "2804:59:18" }, { "expression": { @@ -2474,12 +2528,12 @@ "arguments": [ { "argumentTypes": null, - "id": 2153, + "id": 2196, "name": "dataHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2139, - "src": "2751:8:18", + "referencedDeclaration": 2181, + "src": "2910:8:18", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -2493,18 +2547,18 @@ "typeString": "bytes32" } ], - "id": 2152, + "id": 2195, "name": "isConfirmedByRequiredFriends", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2221, - "src": "2722:28:18", + "referencedDeclaration": 2266, + "src": "2881:28:18", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bool_$", "typeString": "function (bytes32) view returns (bool)" } }, - "id": 2154, + "id": 2197, "isConstant": false, "isLValue": false, "isPure": false, @@ -2512,11 +2566,29 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2722:38:18", + "src": "2881:38:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "5265636f7665727920686173206e6f7420656e6f75676820636f6e6669726d6174696f6e73", + "id": 2198, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2921:39:18", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_cb12b81371f920ba15a762526f9a95cbe925aecb372a64dbeac8ce5c02e0c0e8", + "typeString": "literal_string \"Recovery has not enough confirmations\"" + }, + "value": "Recovery has not enough confirmations" } ], "expression": { @@ -2524,23 +2596,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_cb12b81371f920ba15a762526f9a95cbe925aecb372a64dbeac8ce5c02e0c0e8", + "typeString": "literal_string \"Recovery has not enough confirmations\"" } ], - "id": 2151, + "id": 2194, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "2714:7:18", + "referencedDeclaration": 2658, + "src": "2873:7:18", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 2155, + "id": 2199, "isConstant": false, "isLValue": false, "isPure": false, @@ -2548,20 +2624,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2714:47:18", + "src": "2873:88:18", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2156, + "id": 2200, "nodeType": "ExpressionStatement", - "src": "2714:47:18" + "src": "2873:88:18" }, { "expression": { "argumentTypes": null, - "id": 2161, + "id": 2205, "isConstant": false, "isLValue": false, "isPure": false, @@ -2570,26 +2646,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2157, + "id": 2201, "name": "isExecuted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2000, - "src": "2771:10:18", + "referencedDeclaration": 2041, + "src": "2971:10:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" } }, - "id": 2159, + "id": 2203, "indexExpression": { "argumentTypes": null, - "id": 2158, + "id": 2202, "name": "dataHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2139, - "src": "2782:8:18", + "referencedDeclaration": 2181, + "src": "2982:8:18", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -2600,7 +2676,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "2771:20:18", + "src": "2971:20:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2611,14 +2687,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 2160, + "id": 2204, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "2794:4:18", + "src": "2994:4:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -2626,15 +2702,15 @@ }, "value": "true" }, - "src": "2771:27:18", + "src": "2971:27:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 2162, + "id": 2206, "nodeType": "ExpressionStatement", - "src": "2771:27:18" + "src": "2971:27:18" }, { "expression": { @@ -2648,14 +2724,14 @@ "arguments": [ { "argumentTypes": null, - "id": 2167, + "id": 2211, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 717, - "src": "2858:7:18", + "referencedDeclaration": 727, + "src": "3058:7:18", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1100", + "typeIdentifier": "t_contract$_ModuleManager_$1118", "typeString": "contract ModuleManager" } } @@ -2663,24 +2739,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_ModuleManager_$1100", + "typeIdentifier": "t_contract$_ModuleManager_$1118", "typeString": "contract ModuleManager" } ], - "id": 2166, + "id": 2210, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2850:7:18", + "src": "3050:7:18", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 2168, + "id": 2212, "isConstant": false, "isLValue": false, "isPure": false, @@ -2688,7 +2764,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2850:16:18", + "src": "3050:16:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2697,14 +2773,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 2169, + "id": 2213, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2868:1:18", + "src": "3068:1:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -2714,12 +2790,12 @@ }, { "argumentTypes": null, - "id": 2170, + "id": 2214, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2129, - "src": "2871:4:18", + "referencedDeclaration": 2171, + "src": "3071:4:18", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -2731,18 +2807,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2171, + "id": 2215, "name": "Enum", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 30, - "src": "2877:4:18", + "src": "3077:4:18", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_Enum_$30_$", "typeString": "type(contract Enum)" } }, - "id": 2172, + "id": 2216, "isConstant": false, "isLValue": false, "isPure": false, @@ -2750,13 +2826,13 @@ "memberName": "Operation", "nodeType": "MemberAccess", "referencedDeclaration": 29, - "src": "2877:14:18", + "src": "3077:14:18", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_Operation_$29_$", "typeString": "type(enum Enum.Operation)" } }, - "id": 2173, + "id": 2217, "isConstant": false, "isLValue": false, "isPure": true, @@ -2764,7 +2840,7 @@ "memberName": "Call", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2877:19:18", + "src": "3077:19:18", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" @@ -2792,32 +2868,32 @@ ], "expression": { "argumentTypes": null, - "id": 2164, + "id": 2208, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 717, - "src": "2816:7:18", + "referencedDeclaration": 727, + "src": "3016:7:18", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1100", + "typeIdentifier": "t_contract$_ModuleManager_$1118", "typeString": "contract ModuleManager" } }, - "id": 2165, + "id": 2209, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "execTransactionFromModule", "nodeType": "MemberAccess", - "referencedDeclaration": 927, - "src": "2816:33:18", + "referencedDeclaration": 945, + "src": "3016:33:18", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$returns$_t_bool_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation) external returns (bool)" } }, - "id": 2174, + "id": 2218, "isConstant": false, "isLValue": false, "isPure": false, @@ -2825,11 +2901,29 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2816:81:18", + "src": "3016:81:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "436f756c64206e6f742065786563757465207265636f76657279", + "id": 2219, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3099:28:18", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_3515587d60c3ee9920dfa4bee22a25e99aacbb3cec35d7cbe6c839f5b9ffdff1", + "typeString": "literal_string \"Could not execute recovery\"" + }, + "value": "Could not execute recovery" } ], "expression": { @@ -2837,23 +2931,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_3515587d60c3ee9920dfa4bee22a25e99aacbb3cec35d7cbe6c839f5b9ffdff1", + "typeString": "literal_string \"Could not execute recovery\"" } ], - "id": 2163, + "id": 2207, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "2808:7:18", + "referencedDeclaration": 2658, + "src": "3008:7:18", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 2175, + "id": 2220, "isConstant": false, "isLValue": false, "isPure": false, @@ -2861,37 +2959,57 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2808:90:18", + "src": "3008:120:18", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2176, + "id": 2221, "nodeType": "ExpressionStatement", - "src": "2808:90:18" + "src": "3008:120:18" } ] }, "documentation": "@dev Returns if Safe transaction is a valid owner replacement transaction.\n @param prevOwner Owner that pointed to the owner to be replaced in the linked list\n @param oldOwner Owner address to be replaced.\n @param newOwner New owner address.\n @return Returns if transaction can be executed.", - "id": 2178, + "id": 2223, "implemented": true, "isConstructor": false, "isDeclaredConst": false, - "modifiers": [], + "modifiers": [ + { + "arguments": null, + "id": 2168, + "modifierName": { + "argumentTypes": null, + "id": 2167, + "name": "onlyFriend", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2059, + "src": "2611:10:18", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "2611:10:18" + } + ], "name": "recoverAccess", "nodeType": "FunctionDefinition", "parameters": { - "id": 2119, + "id": 2166, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2114, + "id": 2161, "name": "prevOwner", "nodeType": "VariableDeclaration", - "scope": 2178, - "src": "2319:17:18", + "scope": 2223, + "src": "2533:17:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2899,10 +3017,10 @@ "typeString": "address" }, "typeName": { - "id": 2113, + "id": 2160, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2319:7:18", + "src": "2533:7:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2913,11 +3031,11 @@ }, { "constant": false, - "id": 2116, + "id": 2163, "name": "oldOwner", "nodeType": "VariableDeclaration", - "scope": 2178, - "src": "2338:16:18", + "scope": 2223, + "src": "2552:16:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2925,10 +3043,10 @@ "typeString": "address" }, "typeName": { - "id": 2115, + "id": 2162, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2338:7:18", + "src": "2552:7:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2939,11 +3057,11 @@ }, { "constant": false, - "id": 2118, + "id": 2165, "name": "newOwner", "nodeType": "VariableDeclaration", - "scope": 2178, - "src": "2356:16:18", + "scope": 2223, + "src": "2570:16:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2951,10 +3069,10 @@ "typeString": "address" }, "typeName": { - "id": 2117, + "id": 2164, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2356:7:18", + "src": "2570:7:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2964,37 +3082,37 @@ "visibility": "internal" } ], - "src": "2318:55:18" + "src": "2532:55:18" }, "payable": false, "returnParameters": { - "id": 2120, + "id": 2169, "nodeType": "ParameterList", "parameters": [], - "src": "2393:0:18" + "src": "2626:0:18" }, - "scope": 2234, - "src": "2296:609:18", + "scope": 2279, + "src": "2510:625:18", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 2220, + "id": 2265, "nodeType": "Block", - "src": "3177:294:18", + "src": "3407:294:18", "statements": [ { "assignments": [], "declarations": [ { "constant": false, - "id": 2186, + "id": 2231, "name": "confirmationCount", "nodeType": "VariableDeclaration", - "scope": 2221, - "src": "3187:25:18", + "scope": 2266, + "src": "3417:25:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3002,10 +3120,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2185, + "id": 2230, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3187:7:18", + "src": "3417:7:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3015,16 +3133,16 @@ "visibility": "internal" } ], - "id": 2187, + "id": 2232, "initialValue": null, "nodeType": "VariableDeclarationStatement", - "src": "3187:25:18" + "src": "3417:25:18" }, { "body": { - "id": 2216, + "id": 2261, "nodeType": "Block", - "src": "3267:176:18", + "src": "3497:176:18", "statements": [ { "condition": { @@ -3033,26 +3151,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2199, + "id": 2244, "name": "isConfirmed", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2006, - "src": "3285:11:18", + "referencedDeclaration": 2047, + "src": "3515:11:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", "typeString": "mapping(bytes32 => mapping(address => bool))" } }, - "id": 2201, + "id": 2246, "indexExpression": { "argumentTypes": null, - "id": 2200, + "id": 2245, "name": "dataHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2180, - "src": "3297:8:18", + "referencedDeclaration": 2225, + "src": "3527:8:18", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -3063,37 +3181,37 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3285:21:18", + "src": "3515:21:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 2205, + "id": 2250, "indexExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2202, + "id": 2247, "name": "friends", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1992, - "src": "3307:7:18", + "referencedDeclaration": 2033, + "src": "3537:7:18", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, - "id": 2204, + "id": 2249, "indexExpression": { "argumentTypes": null, - "id": 2203, + "id": 2248, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2189, - "src": "3315:1:18", + "referencedDeclaration": 2234, + "src": "3545:1:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3104,7 +3222,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3307:10:18", + "src": "3537:10:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3115,20 +3233,20 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3285:33:18", + "src": "3515:33:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 2209, + "id": 2254, "nodeType": "IfStatement", - "src": "3281:74:18", + "src": "3511:74:18", "trueBody": { "expression": { "argumentTypes": null, - "id": 2207, + "id": 2252, "isConstant": false, "isLValue": false, "isPure": false, @@ -3136,15 +3254,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "3336:19:18", + "src": "3566:19:18", "subExpression": { "argumentTypes": null, - "id": 2206, + "id": 2251, "name": "confirmationCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2186, - "src": "3336:17:18", + "referencedDeclaration": 2231, + "src": "3566:17:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3155,9 +3273,9 @@ "typeString": "uint256" } }, - "id": 2208, + "id": 2253, "nodeType": "ExpressionStatement", - "src": "3336:19:18" + "src": "3566:19:18" } }, { @@ -3167,19 +3285,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 2212, + "id": 2257, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 2210, + "id": 2255, "name": "confirmationCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2186, - "src": "3373:17:18", + "referencedDeclaration": 2231, + "src": "3603:17:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3189,39 +3307,39 @@ "operator": "==", "rightExpression": { "argumentTypes": null, - "id": 2211, + "id": 2256, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1989, - "src": "3394:9:18", + "referencedDeclaration": 2030, + "src": "3624:9:18", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "src": "3373:30:18", + "src": "3603:30:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 2215, + "id": 2260, "nodeType": "IfStatement", - "src": "3369:63:18", + "src": "3599:63:18", "trueBody": { "expression": { "argumentTypes": null, "hexValue": "74727565", - "id": 2213, + "id": 2258, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "3428:4:18", + "src": "3658:4:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -3229,10 +3347,10 @@ }, "value": "true" }, - "functionReturnParameters": 2184, - "id": 2214, + "functionReturnParameters": 2229, + "id": 2259, "nodeType": "Return", - "src": "3421:11:18" + "src": "3651:11:18" } } ] @@ -3243,19 +3361,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 2195, + "id": 2240, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 2192, + "id": 2237, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2189, - "src": "3242:1:18", + "referencedDeclaration": 2234, + "src": "3472:1:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3267,18 +3385,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2193, + "id": 2238, "name": "friends", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1992, - "src": "3246:7:18", + "referencedDeclaration": 2033, + "src": "3476:7:18", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, - "id": 2194, + "id": 2239, "isConstant": false, "isLValue": true, "isPure": false, @@ -3286,31 +3404,31 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "3246:14:18", + "src": "3476:14:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3242:18:18", + "src": "3472:18:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 2217, + "id": 2262, "initializationExpression": { "assignments": [ - 2189 + 2234 ], "declarations": [ { "constant": false, - "id": 2189, + "id": 2234, "name": "i", "nodeType": "VariableDeclaration", - "scope": 2221, - "src": "3227:9:18", + "scope": 2266, + "src": "3457:9:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3318,10 +3436,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2188, + "id": 2233, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3227:7:18", + "src": "3457:7:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3331,18 +3449,18 @@ "visibility": "internal" } ], - "id": 2191, + "id": 2236, "initialValue": { "argumentTypes": null, "hexValue": "30", - "id": 2190, + "id": 2235, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3239:1:18", + "src": "3469:1:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -3351,12 +3469,12 @@ "value": "0" }, "nodeType": "VariableDeclarationStatement", - "src": "3227:13:18" + "src": "3457:13:18" }, "loopExpression": { "expression": { "argumentTypes": null, - "id": 2197, + "id": 2242, "isConstant": false, "isLValue": false, "isPure": false, @@ -3364,15 +3482,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "3262:3:18", + "src": "3492:3:18", "subExpression": { "argumentTypes": null, - "id": 2196, + "id": 2241, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2189, - "src": "3262:1:18", + "referencedDeclaration": 2234, + "src": "3492:1:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3383,25 +3501,25 @@ "typeString": "uint256" } }, - "id": 2198, + "id": 2243, "nodeType": "ExpressionStatement", - "src": "3262:3:18" + "src": "3492:3:18" }, "nodeType": "ForStatement", - "src": "3222:221:18" + "src": "3452:221:18" }, { "expression": { "argumentTypes": null, "hexValue": "66616c7365", - "id": 2218, + "id": 2263, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "3459:5:18", + "src": "3689:5:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -3409,15 +3527,15 @@ }, "value": "false" }, - "functionReturnParameters": 2184, - "id": 2219, + "functionReturnParameters": 2229, + "id": 2264, "nodeType": "Return", - "src": "3452:12:18" + "src": "3682:12:18" } ] }, "documentation": "@dev Returns if Safe transaction is a valid owner replacement transaction.\n @param dataHash Data hash.\n @return Confirmation status.", - "id": 2221, + "id": 2266, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -3425,16 +3543,16 @@ "name": "isConfirmedByRequiredFriends", "nodeType": "FunctionDefinition", "parameters": { - "id": 2181, + "id": 2226, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2180, + "id": 2225, "name": "dataHash", "nodeType": "VariableDeclaration", - "scope": 2221, - "src": "3104:16:18", + "scope": 2266, + "src": "3334:16:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3442,10 +3560,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 2179, + "id": 2224, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "3104:7:18", + "src": "3334:7:18", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -3455,20 +3573,20 @@ "visibility": "internal" } ], - "src": "3103:18:18" + "src": "3333:18:18" }, "payable": false, "returnParameters": { - "id": 2184, + "id": 2229, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2183, + "id": 2228, "name": "", "nodeType": "VariableDeclaration", - "scope": 2221, - "src": "3167:4:18", + "scope": 2266, + "src": "3397:4:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3476,10 +3594,10 @@ "typeString": "bool" }, "typeName": { - "id": 2182, + "id": 2227, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "3167:4:18", + "src": "3397:4:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3489,19 +3607,19 @@ "visibility": "internal" } ], - "src": "3166:6:18" + "src": "3396:6:18" }, - "scope": 2234, - "src": "3066:405:18", + "scope": 2279, + "src": "3296:405:18", "stateMutability": "view", "superFunction": null, "visibility": "public" }, { "body": { - "id": 2232, + "id": 2277, "nodeType": "Block", - "src": "3691:39:18", + "src": "3921:39:18", "statements": [ { "expression": { @@ -3509,12 +3627,12 @@ "arguments": [ { "argumentTypes": null, - "id": 2229, + "id": 2274, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2223, - "src": "3718:4:18", + "referencedDeclaration": 2268, + "src": "3948:4:18", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -3528,18 +3646,18 @@ "typeString": "bytes memory" } ], - "id": 2228, + "id": 2273, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2592, - "src": "3708:9:18", + "referencedDeclaration": 2648, + "src": "3938:9:18", "typeDescriptions": { "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", "typeString": "function () pure returns (bytes32)" } }, - "id": 2230, + "id": 2275, "isConstant": false, "isLValue": false, "isPure": false, @@ -3547,21 +3665,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3708:15:18", + "src": "3938:15:18", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "functionReturnParameters": 2227, - "id": 2231, + "functionReturnParameters": 2272, + "id": 2276, "nodeType": "Return", - "src": "3701:22:18" + "src": "3931:22:18" } ] }, "documentation": "@dev Returns hash of data encoding owner replacement.\n @param data Data payload.\n @return Data hash.", - "id": 2233, + "id": 2278, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -3569,16 +3687,16 @@ "name": "getDataHash", "nodeType": "FunctionDefinition", "parameters": { - "id": 2224, + "id": 2269, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2223, + "id": 2268, "name": "data", "nodeType": "VariableDeclaration", - "scope": 2233, - "src": "3621:10:18", + "scope": 2278, + "src": "3851:10:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3586,10 +3704,10 @@ "typeString": "bytes" }, "typeName": { - "id": 2222, + "id": 2267, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "3621:5:18", + "src": "3851:5:18", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -3599,20 +3717,20 @@ "visibility": "internal" } ], - "src": "3620:12:18" + "src": "3850:12:18" }, "payable": false, "returnParameters": { - "id": 2227, + "id": 2272, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2226, + "id": 2271, "name": "", "nodeType": "VariableDeclaration", - "scope": 2233, - "src": "3678:7:18", + "scope": 2278, + "src": "3908:7:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3620,10 +3738,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 2225, + "id": 2270, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "3678:7:18", + "src": "3908:7:18", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -3633,33 +3751,33 @@ "visibility": "internal" } ], - "src": "3677:9:18" + "src": "3907:9:18" }, - "scope": 2234, - "src": "3600:130:18", + "scope": 2279, + "src": "3830:130:18", "stateMutability": "pure", "superFunction": null, "visibility": "public" } ], - "scope": 2235, - "src": "306:3426:18" + "scope": 2280, + "src": "306:3656:18" } ], - "src": "0:3733:18" + "src": "0:3963:18" }, "legacyAST": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/modules/SocialRecoveryModule.sol", "exportedSymbols": { "SocialRecoveryModule": [ - 2234 + 2279 ] }, - "id": 2235, + "id": 2280, "nodeType": "SourceUnit", "nodes": [ { - "id": 1975, + "id": 2016, "literals": [ "solidity", "0.4", @@ -3671,9 +3789,9 @@ { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Enum.sol", "file": "../Enum.sol", - "id": 1976, + "id": 2017, "nodeType": "ImportDirective", - "scope": 2235, + "scope": 2280, "sourceUnit": 31, "src": "24:21:18", "symbolAliases": [], @@ -3682,10 +3800,10 @@ { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Module.sol", "file": "../Module.sol", - "id": 1977, + "id": 2018, "nodeType": "ImportDirective", - "scope": 2235, - "sourceUnit": 751, + "scope": 2280, + "sourceUnit": 763, "src": "46:23:18", "symbolAliases": [], "unitAlias": "" @@ -3693,10 +3811,10 @@ { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/ModuleManager.sol", "file": "../ModuleManager.sol", - "id": 1978, + "id": 2019, "nodeType": "ImportDirective", - "scope": 2235, - "sourceUnit": 1101, + "scope": 2280, + "sourceUnit": 1119, "src": "70:30:18", "symbolAliases": [], "unitAlias": "" @@ -3704,10 +3822,10 @@ { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/OwnerManager.sol", "file": "../OwnerManager.sol", - "id": 1979, + "id": 2020, "nodeType": "ImportDirective", - "scope": 2235, - "sourceUnit": 1473, + "scope": 2280, + "sourceUnit": 1505, "src": "101:29:18", "symbolAliases": [], "unitAlias": "" @@ -3718,45 +3836,45 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 1980, + "id": 2021, "name": "Module", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 750, + "referencedDeclaration": 762, "src": "339:6:18", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$750", + "typeIdentifier": "t_contract$_Module_$762", "typeString": "contract Module" } }, - "id": 1981, + "id": 2022, "nodeType": "InheritanceSpecifier", "src": "339:6:18" } ], "contractDependencies": [ - 652, - 750, - 1619 + 662, + 762, + 1654 ], "contractKind": "contract", "documentation": "@title Social Recovery Module - Allows to replace an owner without Safe confirmations if friends approve the replacement.\n @author Stefan George - ", "fullyImplemented": true, - "id": 2234, + "id": 2279, "linearizedBaseContracts": [ - 2234, - 750, - 652, - 1619 + 2279, + 762, + 662, + 1654 ], "name": "SocialRecoveryModule", "nodeType": "ContractDefinition", "nodes": [ { "constant": true, - "id": 1984, + "id": 2025, "name": "NAME", "nodeType": "VariableDeclaration", - "scope": 2234, + "scope": 2279, "src": "353:54:18", "stateVariable": true, "storageLocation": "default", @@ -3765,7 +3883,7 @@ "typeString": "string" }, "typeName": { - "id": 1982, + "id": 2023, "name": "string", "nodeType": "ElementaryTypeName", "src": "353:6:18", @@ -3777,7 +3895,7 @@ "value": { "argumentTypes": null, "hexValue": "536f6369616c205265636f76657279204d6f64756c65", - "id": 1983, + "id": 2024, "isConstant": false, "isLValue": false, "isPure": true, @@ -3796,10 +3914,10 @@ }, { "constant": true, - "id": 1987, + "id": 2028, "name": "VERSION", "nodeType": "VariableDeclaration", - "scope": 2234, + "scope": 2279, "src": "413:40:18", "stateVariable": true, "storageLocation": "default", @@ -3808,7 +3926,7 @@ "typeString": "string" }, "typeName": { - "id": 1985, + "id": 2026, "name": "string", "nodeType": "ElementaryTypeName", "src": "413:6:18", @@ -3820,7 +3938,7 @@ "value": { "argumentTypes": null, "hexValue": "302e302e31", - "id": 1986, + "id": 2027, "isConstant": false, "isLValue": false, "isPure": true, @@ -3839,10 +3957,10 @@ }, { "constant": false, - "id": 1989, + "id": 2030, "name": "threshold", "nodeType": "VariableDeclaration", - "scope": 2234, + "scope": 2279, "src": "460:22:18", "stateVariable": true, "storageLocation": "default", @@ -3851,7 +3969,7 @@ "typeString": "uint8" }, "typeName": { - "id": 1988, + "id": 2029, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "460:5:18", @@ -3865,10 +3983,10 @@ }, { "constant": false, - "id": 1992, + "id": 2033, "name": "friends", "nodeType": "VariableDeclaration", - "scope": 2234, + "scope": 2279, "src": "488:24:18", "stateVariable": true, "storageLocation": "default", @@ -3878,7 +3996,7 @@ }, "typeName": { "baseType": { - "id": 1990, + "id": 2031, "name": "address", "nodeType": "ElementaryTypeName", "src": "488:7:18", @@ -3887,7 +4005,7 @@ "typeString": "address" } }, - "id": 1991, + "id": 2032, "length": null, "nodeType": "ArrayTypeName", "src": "488:9:18", @@ -3901,10 +4019,10 @@ }, { "constant": false, - "id": 1996, + "id": 2037, "name": "isFriend", "nodeType": "VariableDeclaration", - "scope": 2234, + "scope": 2279, "src": "583:41:18", "stateVariable": true, "storageLocation": "default", @@ -3913,9 +4031,9 @@ "typeString": "mapping(address => bool)" }, "typeName": { - "id": 1995, + "id": 2036, "keyType": { - "id": 1993, + "id": 2034, "name": "address", "nodeType": "ElementaryTypeName", "src": "592:7:18", @@ -3931,7 +4049,7 @@ "typeString": "mapping(address => bool)" }, "valueType": { - "id": 1994, + "id": 2035, "name": "bool", "nodeType": "ElementaryTypeName", "src": "603:4:18", @@ -3946,10 +4064,10 @@ }, { "constant": false, - "id": 2000, + "id": 2041, "name": "isExecuted", "nodeType": "VariableDeclaration", - "scope": 2234, + "scope": 2279, "src": "692:43:18", "stateVariable": true, "storageLocation": "default", @@ -3958,9 +4076,9 @@ "typeString": "mapping(bytes32 => bool)" }, "typeName": { - "id": 1999, + "id": 2040, "keyType": { - "id": 1997, + "id": 2038, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "701:7:18", @@ -3976,7 +4094,7 @@ "typeString": "mapping(bytes32 => bool)" }, "valueType": { - "id": 1998, + "id": 2039, "name": "bool", "nodeType": "ElementaryTypeName", "src": "712:4:18", @@ -3991,10 +4109,10 @@ }, { "constant": false, - "id": 2006, + "id": 2047, "name": "isConfirmed", "nodeType": "VariableDeclaration", - "scope": 2234, + "scope": 2279, "src": "827:65:18", "stateVariable": true, "storageLocation": "default", @@ -4003,9 +4121,9 @@ "typeString": "mapping(bytes32 => mapping(address => bool))" }, "typeName": { - "id": 2005, + "id": 2046, "keyType": { - "id": 2001, + "id": 2042, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "836:7:18", @@ -4021,9 +4139,9 @@ "typeString": "mapping(bytes32 => mapping(address => bool))" }, "valueType": { - "id": 2004, + "id": 2045, "keyType": { - "id": 2002, + "id": 2043, "name": "address", "nodeType": "ElementaryTypeName", "src": "856:7:18", @@ -4039,7 +4157,7 @@ "typeString": "mapping(address => bool)" }, "valueType": { - "id": 2003, + "id": 2044, "name": "bool", "nodeType": "ElementaryTypeName", "src": "867:4:18", @@ -4055,9 +4173,9 @@ }, { "body": { - "id": 2016, + "id": 2058, "nodeType": "Block", - "src": "921:57:18", + "src": "921:98:18", "statements": [ { "expression": { @@ -4067,34 +4185,34 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2009, + "id": 2050, "name": "isFriend", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1996, + "referencedDeclaration": 2037, "src": "939:8:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 2012, + "id": 2053, "indexExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2010, + "id": 2051, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2598, + "referencedDeclaration": 2654, "src": "948:3:18", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 2011, + "id": 2052, "isConstant": false, "isLValue": false, "isPure": false, @@ -4118,6 +4236,24 @@ "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "4d6574686f642063616e206f6e6c792062652063616c6c6564206279206120667269656e64", + "id": 2054, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "961:39:18", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_b1b9fb59ab33eb5ed22c2a9ea6a84e946973f30df026a85494e13c73883cce0a", + "typeString": "literal_string \"Method can only be called by a friend\"" + }, + "value": "Method can only be called by a friend" } ], "expression": { @@ -4125,23 +4261,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_b1b9fb59ab33eb5ed22c2a9ea6a84e946973f30df026a85494e13c73883cce0a", + "typeString": "literal_string \"Method can only be called by a friend\"" } ], - "id": 2008, + "id": 2049, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, + "referencedDeclaration": 2658, "src": "931:7:18", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 2013, + "id": 2055, "isConstant": false, "isLValue": false, "isPure": false, @@ -4149,41 +4289,41 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "931:29:18", + "src": "931:70:18", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2014, + "id": 2056, "nodeType": "ExpressionStatement", - "src": "931:29:18" + "src": "931:70:18" }, { - "id": 2015, + "id": 2057, "nodeType": "PlaceholderStatement", - "src": "970:1:18" + "src": "1011:1:18" } ] }, "documentation": null, - "id": 2017, + "id": 2059, "name": "onlyFriend", "nodeType": "ModifierDefinition", "parameters": { - "id": 2007, + "id": 2048, "nodeType": "ParameterList", "parameters": [], "src": "918:2:18" }, - "src": "899:79:18", + "src": "899:120:18", "visibility": "internal" }, { "body": { - "id": 2087, + "id": 2133, "nodeType": "Block", - "src": "1247:422:18", + "src": "1288:566:18", "statements": [ { "expression": { @@ -4195,19 +4335,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 2029, + "id": 2071, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 2026, + "id": 2068, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2022, - "src": "1265:10:18", + "referencedDeclaration": 2064, + "src": "1306:10:18", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -4219,18 +4359,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2027, + "id": 2069, "name": "_friends", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2020, - "src": "1279:8:18", + "referencedDeclaration": 2062, + "src": "1320:8:18", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 2028, + "id": 2070, "isConstant": false, "isLValue": false, "isPure": false, @@ -4238,17 +4378,35 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1279:15:18", + "src": "1320:15:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1265:29:18", + "src": "1306:29:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "5468726573686f6c642063616e6e6f742065786365656420667269656e647320636f756e74", + "id": 2072, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1337:39:18", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_8268a65eab991df6bae5d0e671467a9ef945396e4d495dc52153cedea41ef257", + "typeString": "literal_string \"Threshold cannot exceed friends count\"" + }, + "value": "Threshold cannot exceed friends count" } ], "expression": { @@ -4256,23 +4414,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_8268a65eab991df6bae5d0e671467a9ef945396e4d495dc52153cedea41ef257", + "typeString": "literal_string \"Threshold cannot exceed friends count\"" } ], - "id": 2025, + "id": 2067, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "1257:7:18", + "referencedDeclaration": 2658, + "src": "1298:7:18", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 2030, + "id": 2073, "isConstant": false, "isLValue": false, "isPure": false, @@ -4280,15 +4442,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1257:38:18", + "src": "1298:79:18", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2031, + "id": 2074, "nodeType": "ExpressionStatement", - "src": "1257:38:18" + "src": "1298:79:18" }, { "expression": { @@ -4300,19 +4462,19 @@ "typeIdentifier": "t_uint8", "typeString": "uint8" }, - "id": 2035, + "id": 2078, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 2033, + "id": 2076, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2022, - "src": "1313:10:18", + "referencedDeclaration": 2064, + "src": "1395:10:18", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -4323,14 +4485,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "32", - "id": 2034, + "id": 2077, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1327:1:18", + "src": "1409:1:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", @@ -4338,11 +4500,29 @@ }, "value": "2" }, - "src": "1313:15:18", + "src": "1395:15:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "4174206c65617374203220667269656e6473207265717569726564", + "id": 2079, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1412:29:18", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_2dca24eb5124987015b2480219c9ac2baf747f0e8ae6537e9852d3e3b2773773", + "typeString": "literal_string \"At least 2 friends required\"" + }, + "value": "At least 2 friends required" } ], "expression": { @@ -4350,23 +4530,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_2dca24eb5124987015b2480219c9ac2baf747f0e8ae6537e9852d3e3b2773773", + "typeString": "literal_string \"At least 2 friends required\"" } ], - "id": 2032, + "id": 2075, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "1305:7:18", + "referencedDeclaration": 2658, + "src": "1387:7:18", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 2036, + "id": 2080, "isConstant": false, "isLValue": false, "isPure": false, @@ -4374,15 +4558,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1305:24:18", + "src": "1387:55:18", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2037, + "id": 2081, "nodeType": "ExpressionStatement", - "src": "1305:24:18" + "src": "1387:55:18" }, { "expression": { @@ -4390,18 +4574,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 2038, + "id": 2082, "name": "setManager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 749, - "src": "1339:10:18", + "referencedDeclaration": 761, + "src": "1452:10:18", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()" } }, - "id": 2039, + "id": 2083, "isConstant": false, "isLValue": false, "isPure": false, @@ -4409,34 +4593,34 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1339:12:18", + "src": "1452:12:18", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2040, + "id": 2084, "nodeType": "ExpressionStatement", - "src": "1339:12:18" + "src": "1452:12:18" }, { "body": { - "id": 2077, + "id": 2123, "nodeType": "Block", - "src": "1439:164:18", + "src": "1552:236:18", "statements": [ { "assignments": [ - 2053 + 2097 ], "declarations": [ { "constant": false, - "id": 2053, + "id": 2097, "name": "friend", "nodeType": "VariableDeclaration", - "scope": 2088, - "src": "1453:14:18", + "scope": 2134, + "src": "1566:14:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4444,10 +4628,10 @@ "typeString": "address" }, "typeName": { - "id": 2052, + "id": 2096, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1453:7:18", + "src": "1566:7:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4457,31 +4641,31 @@ "visibility": "internal" } ], - "id": 2057, + "id": 2101, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2054, + "id": 2098, "name": "_friends", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2020, - "src": "1470:8:18", + "referencedDeclaration": 2062, + "src": "1583:8:18", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 2056, + "id": 2100, "indexExpression": { "argumentTypes": null, - "id": 2055, + "id": 2099, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2042, - "src": "1479:1:18", + "referencedDeclaration": 2086, + "src": "1592:1:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4492,14 +4676,14 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1470:11:18", + "src": "1583:11:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", - "src": "1453:28:18" + "src": "1566:28:18" }, { "expression": { @@ -4511,19 +4695,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 2061, + "id": 2105, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 2059, + "id": 2103, "name": "friend", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2053, - "src": "1503:6:18", + "referencedDeclaration": 2097, + "src": "1616:6:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4534,14 +4718,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 2060, + "id": 2104, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1513:1:18", + "src": "1626:1:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -4549,11 +4733,29 @@ }, "value": "0" }, - "src": "1503:11:18", + "src": "1616:11:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "496e76616c696420667269656e6420616464726573732070726f7669646564", + "id": 2106, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1629:33:18", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_5d50911068dfec2dd53f3e08d7dec23b50affd69b91cf3e5d1e699c56bca7a55", + "typeString": "literal_string \"Invalid friend address provided\"" + }, + "value": "Invalid friend address provided" } ], "expression": { @@ -4561,23 +4763,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_5d50911068dfec2dd53f3e08d7dec23b50affd69b91cf3e5d1e699c56bca7a55", + "typeString": "literal_string \"Invalid friend address provided\"" } ], - "id": 2058, + "id": 2102, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "1495:7:18", + "referencedDeclaration": 2658, + "src": "1608:7:18", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 2062, + "id": 2107, "isConstant": false, "isLValue": false, "isPure": false, @@ -4585,15 +4791,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1495:20:18", + "src": "1608:55:18", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2063, + "id": 2108, "nodeType": "ExpressionStatement", - "src": "1495:20:18" + "src": "1608:55:18" }, { "expression": { @@ -4601,7 +4807,7 @@ "arguments": [ { "argumentTypes": null, - "id": 2068, + "id": 2113, "isConstant": false, "isLValue": false, "isPure": false, @@ -4609,31 +4815,31 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "1537:17:18", + "src": "1685:17:18", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2065, + "id": 2110, "name": "isFriend", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1996, - "src": "1538:8:18", + "referencedDeclaration": 2037, + "src": "1686:8:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 2067, + "id": 2112, "indexExpression": { "argumentTypes": null, - "id": 2066, + "id": 2111, "name": "friend", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2053, - "src": "1547:6:18", + "referencedDeclaration": 2097, + "src": "1695:6:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4644,7 +4850,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1538:16:18", + "src": "1686:16:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4654,6 +4860,24 @@ "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "4475706c696361746520667269656e6420616464726573732070726f7669646564", + "id": 2114, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1704:35:18", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_78a0468a6f4bfa8018f886880a93f836f50f407cd02c2e42c43779f87d3af4d3", + "typeString": "literal_string \"Duplicate friend address provided\"" + }, + "value": "Duplicate friend address provided" } ], "expression": { @@ -4661,23 +4885,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_78a0468a6f4bfa8018f886880a93f836f50f407cd02c2e42c43779f87d3af4d3", + "typeString": "literal_string \"Duplicate friend address provided\"" } ], - "id": 2064, + "id": 2109, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "1529:7:18", + "referencedDeclaration": 2658, + "src": "1677:7:18", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 2069, + "id": 2115, "isConstant": false, "isLValue": false, "isPure": false, @@ -4685,20 +4913,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1529:26:18", + "src": "1677:63:18", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2070, + "id": 2116, "nodeType": "ExpressionStatement", - "src": "1529:26:18" + "src": "1677:63:18" }, { "expression": { "argumentTypes": null, - "id": 2075, + "id": 2121, "isConstant": false, "isLValue": false, "isPure": false, @@ -4707,26 +4935,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2071, + "id": 2117, "name": "isFriend", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1996, - "src": "1569:8:18", + "referencedDeclaration": 2037, + "src": "1754:8:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 2073, + "id": 2119, "indexExpression": { "argumentTypes": null, - "id": 2072, + "id": 2118, "name": "friend", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2053, - "src": "1578:6:18", + "referencedDeclaration": 2097, + "src": "1763:6:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4737,7 +4965,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1569:16:18", + "src": "1754:16:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4748,14 +4976,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 2074, + "id": 2120, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "1588:4:18", + "src": "1773:4:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -4763,15 +4991,15 @@ }, "value": "true" }, - "src": "1569:23:18", + "src": "1754:23:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 2076, + "id": 2122, "nodeType": "ExpressionStatement", - "src": "1569:23:18" + "src": "1754:23:18" } ] }, @@ -4781,19 +5009,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 2048, + "id": 2092, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 2045, + "id": 2089, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2042, - "src": "1413:1:18", + "referencedDeclaration": 2086, + "src": "1526:1:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4805,18 +5033,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2046, + "id": 2090, "name": "_friends", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2020, - "src": "1417:8:18", + "referencedDeclaration": 2062, + "src": "1530:8:18", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 2047, + "id": 2091, "isConstant": false, "isLValue": false, "isPure": false, @@ -4824,31 +5052,31 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1417:15:18", + "src": "1530:15:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1413:19:18", + "src": "1526:19:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 2078, + "id": 2124, "initializationExpression": { "assignments": [ - 2042 + 2086 ], "declarations": [ { "constant": false, - "id": 2042, + "id": 2086, "name": "i", "nodeType": "VariableDeclaration", - "scope": 2088, - "src": "1398:9:18", + "scope": 2134, + "src": "1511:9:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4856,10 +5084,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2041, + "id": 2085, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1398:7:18", + "src": "1511:7:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4869,18 +5097,18 @@ "visibility": "internal" } ], - "id": 2044, + "id": 2088, "initialValue": { "argumentTypes": null, "hexValue": "30", - "id": 2043, + "id": 2087, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1410:1:18", + "src": "1523:1:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -4889,12 +5117,12 @@ "value": "0" }, "nodeType": "VariableDeclarationStatement", - "src": "1398:13:18" + "src": "1511:13:18" }, "loopExpression": { "expression": { "argumentTypes": null, - "id": 2050, + "id": 2094, "isConstant": false, "isLValue": false, "isPure": false, @@ -4902,15 +5130,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "1434:3:18", + "src": "1547:3:18", "subExpression": { "argumentTypes": null, - "id": 2049, + "id": 2093, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2042, - "src": "1434:1:18", + "referencedDeclaration": 2086, + "src": "1547:1:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4921,29 +5149,29 @@ "typeString": "uint256" } }, - "id": 2051, + "id": 2095, "nodeType": "ExpressionStatement", - "src": "1434:3:18" + "src": "1547:3:18" }, "nodeType": "ForStatement", - "src": "1393:210:18" + "src": "1506:282:18" }, { "expression": { "argumentTypes": null, - "id": 2081, + "id": 2127, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 2079, + "id": 2125, "name": "friends", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1992, - "src": "1612:7:18", + "referencedDeclaration": 2033, + "src": "1797:7:18", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" @@ -4953,43 +5181,43 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 2080, + "id": 2126, "name": "_friends", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2020, - "src": "1622:8:18", + "referencedDeclaration": 2062, + "src": "1807:8:18", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "src": "1612:18:18", + "src": "1797:18:18", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, - "id": 2082, + "id": 2128, "nodeType": "ExpressionStatement", - "src": "1612:18:18" + "src": "1797:18:18" }, { "expression": { "argumentTypes": null, - "id": 2085, + "id": 2131, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 2083, + "id": 2129, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1989, - "src": "1640:9:18", + "referencedDeclaration": 2030, + "src": "1825:9:18", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -4999,31 +5227,31 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 2084, + "id": 2130, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2022, - "src": "1652:10:18", + "referencedDeclaration": 2064, + "src": "1837:10:18", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "src": "1640:22:18", + "src": "1825:22:18", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "id": 2086, + "id": 2132, "nodeType": "ExpressionStatement", - "src": "1640:22:18" + "src": "1825:22:18" } ] }, "documentation": "@dev Setup function sets initial storage of contract.\n @param _friends List of friends' addresses.\n @param _threshold Required number of friends to confirm replacement.", - "id": 2088, + "id": 2134, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -5031,16 +5259,16 @@ "name": "setup", "nodeType": "FunctionDefinition", "parameters": { - "id": 2023, + "id": 2065, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2020, + "id": 2062, "name": "_friends", "nodeType": "VariableDeclaration", - "scope": 2088, - "src": "1190:18:18", + "scope": 2134, + "src": "1231:18:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5049,19 +5277,19 @@ }, "typeName": { "baseType": { - "id": 2018, + "id": 2060, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1190:7:18", + "src": "1231:7:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 2019, + "id": 2061, "length": null, "nodeType": "ArrayTypeName", - "src": "1190:9:18", + "src": "1231:9:18", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" @@ -5072,11 +5300,11 @@ }, { "constant": false, - "id": 2022, + "id": 2064, "name": "_threshold", "nodeType": "VariableDeclaration", - "scope": 2088, - "src": "1210:16:18", + "scope": 2134, + "src": "1251:16:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5084,10 +5312,10 @@ "typeString": "uint8" }, "typeName": { - "id": 2021, + "id": 2063, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "1210:5:18", + "src": "1251:5:18", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -5097,26 +5325,26 @@ "visibility": "internal" } ], - "src": "1189:38:18" + "src": "1230:38:18" }, "payable": false, "returnParameters": { - "id": 2024, + "id": 2066, "nodeType": "ParameterList", "parameters": [], - "src": "1247:0:18" + "src": "1288:0:18" }, - "scope": 2234, - "src": "1175:494:18", + "scope": 2279, + "src": "1216:638:18", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 2111, + "id": 2158, "nodeType": "Block", - "src": "1866:97:18", + "src": "2051:126:18", "statements": [ { "expression": { @@ -5124,7 +5352,7 @@ "arguments": [ { "argumentTypes": null, - "id": 2099, + "id": 2145, "isConstant": false, "isLValue": false, "isPure": false, @@ -5132,31 +5360,31 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "1884:21:18", + "src": "2069:21:18", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2096, + "id": 2142, "name": "isExecuted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2000, - "src": "1885:10:18", + "referencedDeclaration": 2041, + "src": "2070:10:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" } }, - "id": 2098, + "id": 2144, "indexExpression": { "argumentTypes": null, - "id": 2097, + "id": 2143, "name": "dataHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2090, - "src": "1896:8:18", + "referencedDeclaration": 2136, + "src": "2081:8:18", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -5167,7 +5395,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1885:20:18", + "src": "2070:20:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5177,6 +5405,24 @@ "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "5265636f7665727920616c7265616479206578656375746564", + "id": 2146, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2092:27:18", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c2f19da1619c37eda5c6f4f3abcc466ec30065da4e2523bb6c81cc850dedac38", + "typeString": "literal_string \"Recovery already executed\"" + }, + "value": "Recovery already executed" } ], "expression": { @@ -5184,23 +5430,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_c2f19da1619c37eda5c6f4f3abcc466ec30065da4e2523bb6c81cc850dedac38", + "typeString": "literal_string \"Recovery already executed\"" } ], - "id": 2095, + "id": 2141, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "1876:7:18", + "referencedDeclaration": 2658, + "src": "2061:7:18", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 2100, + "id": 2147, "isConstant": false, "isLValue": false, "isPure": false, @@ -5208,20 +5458,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1876:30:18", + "src": "2061:59:18", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2101, + "id": 2148, "nodeType": "ExpressionStatement", - "src": "1876:30:18" + "src": "2061:59:18" }, { "expression": { "argumentTypes": null, - "id": 2109, + "id": 2156, "isConstant": false, "isLValue": false, "isPure": false, @@ -5232,26 +5482,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2102, + "id": 2149, "name": "isConfirmed", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2006, - "src": "1916:11:18", + "referencedDeclaration": 2047, + "src": "2130:11:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", "typeString": "mapping(bytes32 => mapping(address => bool))" } }, - "id": 2106, + "id": 2153, "indexExpression": { "argumentTypes": null, - "id": 2103, + "id": 2150, "name": "dataHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2090, - "src": "1928:8:18", + "referencedDeclaration": 2136, + "src": "2142:8:18", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -5262,29 +5512,29 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1916:21:18", + "src": "2130:21:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 2107, + "id": 2154, "indexExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2104, + "id": 2151, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2598, - "src": "1938:3:18", + "referencedDeclaration": 2654, + "src": "2152:3:18", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 2105, + "id": 2152, "isConstant": false, "isLValue": false, "isPure": false, @@ -5292,7 +5542,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1938:10:18", + "src": "2152:10:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5303,7 +5553,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1916:33:18", + "src": "2130:33:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5314,14 +5564,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 2108, + "id": 2155, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "1952:4:18", + "src": "2166:4:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -5329,57 +5579,57 @@ }, "value": "true" }, - "src": "1916:40:18", + "src": "2130:40:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 2110, + "id": 2157, "nodeType": "ExpressionStatement", - "src": "1916:40:18" + "src": "2130:40:18" } ] }, "documentation": "@dev Allows a friend to confirm a Safe transaction.\n @param dataHash Safe transaction hash.", - "id": 2112, + "id": 2159, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 2093, + "id": 2139, "modifierName": { "argumentTypes": null, - "id": 2092, + "id": 2138, "name": "onlyFriend", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2017, - "src": "1851:10:18", + "referencedDeclaration": 2059, + "src": "2036:10:18", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "1851:10:18" + "src": "2036:10:18" } ], "name": "confirmTransaction", "nodeType": "FunctionDefinition", "parameters": { - "id": 2091, + "id": 2137, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2090, + "id": 2136, "name": "dataHash", "nodeType": "VariableDeclaration", - "scope": 2112, - "src": "1810:16:18", + "scope": 2159, + "src": "1995:16:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5387,10 +5637,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 2089, + "id": 2135, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "1810:7:18", + "src": "1995:7:18", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -5400,139 +5650,39 @@ "visibility": "internal" } ], - "src": "1809:18:18" + "src": "1994:18:18" }, "payable": false, "returnParameters": { - "id": 2094, + "id": 2140, "nodeType": "ParameterList", "parameters": [], - "src": "1866:0:18" + "src": "2051:0:18" }, - "scope": 2234, - "src": "1782:181:18", + "scope": 2279, + "src": "1967:210:18", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 2177, + "id": 2222, "nodeType": "Block", - "src": "2393:512:18", + "src": "2626:509:18", "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 2122, - "name": "isFriend", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1996, - "src": "2475:8:18", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 2125, - "indexExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 2123, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2598, - "src": "2484:3:18", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 2124, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "2484:10:18", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2475:20:18", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 2121, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 2601, - 2602 - ], - "referencedDeclaration": 2601, - "src": "2467:7:18", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 2126, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2467:29:18", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 2127, - "nodeType": "ExpressionStatement", - "src": "2467:29:18" - }, { "assignments": [ - 2129 + 2171 ], "declarations": [ { "constant": false, - "id": 2129, + "id": 2171, "name": "data", "nodeType": "VariableDeclaration", - "scope": 2178, - "src": "2506:17:18", + "scope": 2223, + "src": "2636:17:18", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -5540,10 +5690,10 @@ "typeString": "bytes" }, "typeName": { - "id": 2128, + "id": 2170, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "2506:5:18", + "src": "2636:5:18", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -5553,21 +5703,21 @@ "visibility": "internal" } ], - "id": 2137, + "id": 2179, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "737761704f776e657228616464726573732c616464726573732c6164647265737329", - "id": 2132, + "id": 2174, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2550:36:18", + "src": "2680:36:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_e318b52b9bee2870ac7ee0af86866eb2e8f9569b34de6028eb487e7983ba6df8", @@ -5577,12 +5727,12 @@ }, { "argumentTypes": null, - "id": 2133, + "id": 2175, "name": "prevOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2114, - "src": "2588:9:18", + "referencedDeclaration": 2161, + "src": "2718:9:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5590,12 +5740,12 @@ }, { "argumentTypes": null, - "id": 2134, + "id": 2176, "name": "oldOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2116, - "src": "2599:8:18", + "referencedDeclaration": 2163, + "src": "2729:8:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5603,12 +5753,12 @@ }, { "argumentTypes": null, - "id": 2135, + "id": 2177, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2118, - "src": "2609:8:18", + "referencedDeclaration": 2165, + "src": "2739:8:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5636,18 +5786,18 @@ ], "expression": { "argumentTypes": null, - "id": 2130, + "id": 2172, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2585, - "src": "2526:3:18", + "referencedDeclaration": 2641, + "src": "2656:3:18", "typeDescriptions": { "typeIdentifier": "t_magic_abi", "typeString": "abi" } }, - "id": 2131, + "id": 2173, "isConstant": false, "isLValue": false, "isPure": true, @@ -5655,13 +5805,13 @@ "memberName": "encodeWithSignature", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2526:23:18", + "src": "2656:23:18", "typeDescriptions": { "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$", "typeString": "function (string memory) pure returns (bytes memory)" } }, - "id": 2136, + "id": 2178, "isConstant": false, "isLValue": false, "isPure": false, @@ -5669,27 +5819,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2526:92:18", + "src": "2656:92:18", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, "nodeType": "VariableDeclarationStatement", - "src": "2506:112:18" + "src": "2636:112:18" }, { "assignments": [ - 2139 + 2181 ], "declarations": [ { "constant": false, - "id": 2139, + "id": 2181, "name": "dataHash", "nodeType": "VariableDeclaration", - "scope": 2178, - "src": "2628:16:18", + "scope": 2223, + "src": "2758:16:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5697,10 +5847,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 2138, + "id": 2180, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "2628:7:18", + "src": "2758:7:18", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -5710,18 +5860,18 @@ "visibility": "internal" } ], - "id": 2143, + "id": 2185, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 2141, + "id": 2183, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2129, - "src": "2659:4:18", + "referencedDeclaration": 2171, + "src": "2789:4:18", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -5735,18 +5885,18 @@ "typeString": "bytes memory" } ], - "id": 2140, + "id": 2182, "name": "getDataHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2233, - "src": "2647:11:18", + "referencedDeclaration": 2278, + "src": "2777:11:18", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)" } }, - "id": 2142, + "id": 2184, "isConstant": false, "isLValue": false, "isPure": false, @@ -5754,14 +5904,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2647:17:18", + "src": "2777:17:18", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "VariableDeclarationStatement", - "src": "2628:36:18" + "src": "2758:36:18" }, { "expression": { @@ -5769,7 +5919,7 @@ "arguments": [ { "argumentTypes": null, - "id": 2148, + "id": 2190, "isConstant": false, "isLValue": false, "isPure": false, @@ -5777,31 +5927,31 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "2682:21:18", + "src": "2812:21:18", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2145, + "id": 2187, "name": "isExecuted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2000, - "src": "2683:10:18", + "referencedDeclaration": 2041, + "src": "2813:10:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" } }, - "id": 2147, + "id": 2189, "indexExpression": { "argumentTypes": null, - "id": 2146, + "id": 2188, "name": "dataHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2139, - "src": "2694:8:18", + "referencedDeclaration": 2181, + "src": "2824:8:18", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -5812,7 +5962,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2683:20:18", + "src": "2813:20:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5822,6 +5972,24 @@ "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "5265636f7665727920616c7265616479206578656375746564", + "id": 2191, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2835:27:18", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c2f19da1619c37eda5c6f4f3abcc466ec30065da4e2523bb6c81cc850dedac38", + "typeString": "literal_string \"Recovery already executed\"" + }, + "value": "Recovery already executed" } ], "expression": { @@ -5829,23 +5997,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_c2f19da1619c37eda5c6f4f3abcc466ec30065da4e2523bb6c81cc850dedac38", + "typeString": "literal_string \"Recovery already executed\"" } ], - "id": 2144, + "id": 2186, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "2674:7:18", + "referencedDeclaration": 2658, + "src": "2804:7:18", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 2149, + "id": 2192, "isConstant": false, "isLValue": false, "isPure": false, @@ -5853,15 +6025,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2674:30:18", + "src": "2804:59:18", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2150, + "id": 2193, "nodeType": "ExpressionStatement", - "src": "2674:30:18" + "src": "2804:59:18" }, { "expression": { @@ -5872,12 +6044,12 @@ "arguments": [ { "argumentTypes": null, - "id": 2153, + "id": 2196, "name": "dataHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2139, - "src": "2751:8:18", + "referencedDeclaration": 2181, + "src": "2910:8:18", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -5891,18 +6063,18 @@ "typeString": "bytes32" } ], - "id": 2152, + "id": 2195, "name": "isConfirmedByRequiredFriends", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2221, - "src": "2722:28:18", + "referencedDeclaration": 2266, + "src": "2881:28:18", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bool_$", "typeString": "function (bytes32) view returns (bool)" } }, - "id": 2154, + "id": 2197, "isConstant": false, "isLValue": false, "isPure": false, @@ -5910,11 +6082,29 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2722:38:18", + "src": "2881:38:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "5265636f7665727920686173206e6f7420656e6f75676820636f6e6669726d6174696f6e73", + "id": 2198, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2921:39:18", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_cb12b81371f920ba15a762526f9a95cbe925aecb372a64dbeac8ce5c02e0c0e8", + "typeString": "literal_string \"Recovery has not enough confirmations\"" + }, + "value": "Recovery has not enough confirmations" } ], "expression": { @@ -5922,23 +6112,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_cb12b81371f920ba15a762526f9a95cbe925aecb372a64dbeac8ce5c02e0c0e8", + "typeString": "literal_string \"Recovery has not enough confirmations\"" } ], - "id": 2151, + "id": 2194, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "2714:7:18", + "referencedDeclaration": 2658, + "src": "2873:7:18", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 2155, + "id": 2199, "isConstant": false, "isLValue": false, "isPure": false, @@ -5946,20 +6140,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2714:47:18", + "src": "2873:88:18", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2156, + "id": 2200, "nodeType": "ExpressionStatement", - "src": "2714:47:18" + "src": "2873:88:18" }, { "expression": { "argumentTypes": null, - "id": 2161, + "id": 2205, "isConstant": false, "isLValue": false, "isPure": false, @@ -5968,26 +6162,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2157, + "id": 2201, "name": "isExecuted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2000, - "src": "2771:10:18", + "referencedDeclaration": 2041, + "src": "2971:10:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" } }, - "id": 2159, + "id": 2203, "indexExpression": { "argumentTypes": null, - "id": 2158, + "id": 2202, "name": "dataHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2139, - "src": "2782:8:18", + "referencedDeclaration": 2181, + "src": "2982:8:18", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -5998,7 +6192,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "2771:20:18", + "src": "2971:20:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6009,14 +6203,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 2160, + "id": 2204, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "2794:4:18", + "src": "2994:4:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -6024,15 +6218,15 @@ }, "value": "true" }, - "src": "2771:27:18", + "src": "2971:27:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 2162, + "id": 2206, "nodeType": "ExpressionStatement", - "src": "2771:27:18" + "src": "2971:27:18" }, { "expression": { @@ -6046,14 +6240,14 @@ "arguments": [ { "argumentTypes": null, - "id": 2167, + "id": 2211, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 717, - "src": "2858:7:18", + "referencedDeclaration": 727, + "src": "3058:7:18", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1100", + "typeIdentifier": "t_contract$_ModuleManager_$1118", "typeString": "contract ModuleManager" } } @@ -6061,24 +6255,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_ModuleManager_$1100", + "typeIdentifier": "t_contract$_ModuleManager_$1118", "typeString": "contract ModuleManager" } ], - "id": 2166, + "id": 2210, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2850:7:18", + "src": "3050:7:18", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 2168, + "id": 2212, "isConstant": false, "isLValue": false, "isPure": false, @@ -6086,7 +6280,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2850:16:18", + "src": "3050:16:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6095,14 +6289,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 2169, + "id": 2213, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2868:1:18", + "src": "3068:1:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -6112,12 +6306,12 @@ }, { "argumentTypes": null, - "id": 2170, + "id": 2214, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2129, - "src": "2871:4:18", + "referencedDeclaration": 2171, + "src": "3071:4:18", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -6129,18 +6323,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2171, + "id": 2215, "name": "Enum", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 30, - "src": "2877:4:18", + "src": "3077:4:18", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_Enum_$30_$", "typeString": "type(contract Enum)" } }, - "id": 2172, + "id": 2216, "isConstant": false, "isLValue": false, "isPure": false, @@ -6148,13 +6342,13 @@ "memberName": "Operation", "nodeType": "MemberAccess", "referencedDeclaration": 29, - "src": "2877:14:18", + "src": "3077:14:18", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_Operation_$29_$", "typeString": "type(enum Enum.Operation)" } }, - "id": 2173, + "id": 2217, "isConstant": false, "isLValue": false, "isPure": true, @@ -6162,7 +6356,7 @@ "memberName": "Call", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2877:19:18", + "src": "3077:19:18", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" @@ -6190,32 +6384,32 @@ ], "expression": { "argumentTypes": null, - "id": 2164, + "id": 2208, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 717, - "src": "2816:7:18", + "referencedDeclaration": 727, + "src": "3016:7:18", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1100", + "typeIdentifier": "t_contract$_ModuleManager_$1118", "typeString": "contract ModuleManager" } }, - "id": 2165, + "id": 2209, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "execTransactionFromModule", "nodeType": "MemberAccess", - "referencedDeclaration": 927, - "src": "2816:33:18", + "referencedDeclaration": 945, + "src": "3016:33:18", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$returns$_t_bool_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation) external returns (bool)" } }, - "id": 2174, + "id": 2218, "isConstant": false, "isLValue": false, "isPure": false, @@ -6223,11 +6417,29 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2816:81:18", + "src": "3016:81:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "436f756c64206e6f742065786563757465207265636f76657279", + "id": 2219, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3099:28:18", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_3515587d60c3ee9920dfa4bee22a25e99aacbb3cec35d7cbe6c839f5b9ffdff1", + "typeString": "literal_string \"Could not execute recovery\"" + }, + "value": "Could not execute recovery" } ], "expression": { @@ -6235,23 +6447,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_3515587d60c3ee9920dfa4bee22a25e99aacbb3cec35d7cbe6c839f5b9ffdff1", + "typeString": "literal_string \"Could not execute recovery\"" } ], - "id": 2163, + "id": 2207, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "2808:7:18", + "referencedDeclaration": 2658, + "src": "3008:7:18", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 2175, + "id": 2220, "isConstant": false, "isLValue": false, "isPure": false, @@ -6259,37 +6475,57 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2808:90:18", + "src": "3008:120:18", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2176, + "id": 2221, "nodeType": "ExpressionStatement", - "src": "2808:90:18" + "src": "3008:120:18" } ] }, "documentation": "@dev Returns if Safe transaction is a valid owner replacement transaction.\n @param prevOwner Owner that pointed to the owner to be replaced in the linked list\n @param oldOwner Owner address to be replaced.\n @param newOwner New owner address.\n @return Returns if transaction can be executed.", - "id": 2178, + "id": 2223, "implemented": true, "isConstructor": false, "isDeclaredConst": false, - "modifiers": [], + "modifiers": [ + { + "arguments": null, + "id": 2168, + "modifierName": { + "argumentTypes": null, + "id": 2167, + "name": "onlyFriend", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2059, + "src": "2611:10:18", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "2611:10:18" + } + ], "name": "recoverAccess", "nodeType": "FunctionDefinition", "parameters": { - "id": 2119, + "id": 2166, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2114, + "id": 2161, "name": "prevOwner", "nodeType": "VariableDeclaration", - "scope": 2178, - "src": "2319:17:18", + "scope": 2223, + "src": "2533:17:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6297,10 +6533,10 @@ "typeString": "address" }, "typeName": { - "id": 2113, + "id": 2160, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2319:7:18", + "src": "2533:7:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6311,11 +6547,11 @@ }, { "constant": false, - "id": 2116, + "id": 2163, "name": "oldOwner", "nodeType": "VariableDeclaration", - "scope": 2178, - "src": "2338:16:18", + "scope": 2223, + "src": "2552:16:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6323,10 +6559,10 @@ "typeString": "address" }, "typeName": { - "id": 2115, + "id": 2162, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2338:7:18", + "src": "2552:7:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6337,11 +6573,11 @@ }, { "constant": false, - "id": 2118, + "id": 2165, "name": "newOwner", "nodeType": "VariableDeclaration", - "scope": 2178, - "src": "2356:16:18", + "scope": 2223, + "src": "2570:16:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6349,10 +6585,10 @@ "typeString": "address" }, "typeName": { - "id": 2117, + "id": 2164, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2356:7:18", + "src": "2570:7:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6362,37 +6598,37 @@ "visibility": "internal" } ], - "src": "2318:55:18" + "src": "2532:55:18" }, "payable": false, "returnParameters": { - "id": 2120, + "id": 2169, "nodeType": "ParameterList", "parameters": [], - "src": "2393:0:18" + "src": "2626:0:18" }, - "scope": 2234, - "src": "2296:609:18", + "scope": 2279, + "src": "2510:625:18", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 2220, + "id": 2265, "nodeType": "Block", - "src": "3177:294:18", + "src": "3407:294:18", "statements": [ { "assignments": [], "declarations": [ { "constant": false, - "id": 2186, + "id": 2231, "name": "confirmationCount", "nodeType": "VariableDeclaration", - "scope": 2221, - "src": "3187:25:18", + "scope": 2266, + "src": "3417:25:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6400,10 +6636,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2185, + "id": 2230, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3187:7:18", + "src": "3417:7:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6413,16 +6649,16 @@ "visibility": "internal" } ], - "id": 2187, + "id": 2232, "initialValue": null, "nodeType": "VariableDeclarationStatement", - "src": "3187:25:18" + "src": "3417:25:18" }, { "body": { - "id": 2216, + "id": 2261, "nodeType": "Block", - "src": "3267:176:18", + "src": "3497:176:18", "statements": [ { "condition": { @@ -6431,26 +6667,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2199, + "id": 2244, "name": "isConfirmed", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2006, - "src": "3285:11:18", + "referencedDeclaration": 2047, + "src": "3515:11:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", "typeString": "mapping(bytes32 => mapping(address => bool))" } }, - "id": 2201, + "id": 2246, "indexExpression": { "argumentTypes": null, - "id": 2200, + "id": 2245, "name": "dataHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2180, - "src": "3297:8:18", + "referencedDeclaration": 2225, + "src": "3527:8:18", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -6461,37 +6697,37 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3285:21:18", + "src": "3515:21:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 2205, + "id": 2250, "indexExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2202, + "id": 2247, "name": "friends", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1992, - "src": "3307:7:18", + "referencedDeclaration": 2033, + "src": "3537:7:18", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, - "id": 2204, + "id": 2249, "indexExpression": { "argumentTypes": null, - "id": 2203, + "id": 2248, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2189, - "src": "3315:1:18", + "referencedDeclaration": 2234, + "src": "3545:1:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6502,7 +6738,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3307:10:18", + "src": "3537:10:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6513,20 +6749,20 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3285:33:18", + "src": "3515:33:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 2209, + "id": 2254, "nodeType": "IfStatement", - "src": "3281:74:18", + "src": "3511:74:18", "trueBody": { "expression": { "argumentTypes": null, - "id": 2207, + "id": 2252, "isConstant": false, "isLValue": false, "isPure": false, @@ -6534,15 +6770,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "3336:19:18", + "src": "3566:19:18", "subExpression": { "argumentTypes": null, - "id": 2206, + "id": 2251, "name": "confirmationCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2186, - "src": "3336:17:18", + "referencedDeclaration": 2231, + "src": "3566:17:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6553,9 +6789,9 @@ "typeString": "uint256" } }, - "id": 2208, + "id": 2253, "nodeType": "ExpressionStatement", - "src": "3336:19:18" + "src": "3566:19:18" } }, { @@ -6565,19 +6801,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 2212, + "id": 2257, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 2210, + "id": 2255, "name": "confirmationCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2186, - "src": "3373:17:18", + "referencedDeclaration": 2231, + "src": "3603:17:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6587,39 +6823,39 @@ "operator": "==", "rightExpression": { "argumentTypes": null, - "id": 2211, + "id": 2256, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1989, - "src": "3394:9:18", + "referencedDeclaration": 2030, + "src": "3624:9:18", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "src": "3373:30:18", + "src": "3603:30:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 2215, + "id": 2260, "nodeType": "IfStatement", - "src": "3369:63:18", + "src": "3599:63:18", "trueBody": { "expression": { "argumentTypes": null, "hexValue": "74727565", - "id": 2213, + "id": 2258, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "3428:4:18", + "src": "3658:4:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -6627,10 +6863,10 @@ }, "value": "true" }, - "functionReturnParameters": 2184, - "id": 2214, + "functionReturnParameters": 2229, + "id": 2259, "nodeType": "Return", - "src": "3421:11:18" + "src": "3651:11:18" } } ] @@ -6641,19 +6877,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 2195, + "id": 2240, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 2192, + "id": 2237, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2189, - "src": "3242:1:18", + "referencedDeclaration": 2234, + "src": "3472:1:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6665,18 +6901,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2193, + "id": 2238, "name": "friends", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1992, - "src": "3246:7:18", + "referencedDeclaration": 2033, + "src": "3476:7:18", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, - "id": 2194, + "id": 2239, "isConstant": false, "isLValue": true, "isPure": false, @@ -6684,31 +6920,31 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "3246:14:18", + "src": "3476:14:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3242:18:18", + "src": "3472:18:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 2217, + "id": 2262, "initializationExpression": { "assignments": [ - 2189 + 2234 ], "declarations": [ { "constant": false, - "id": 2189, + "id": 2234, "name": "i", "nodeType": "VariableDeclaration", - "scope": 2221, - "src": "3227:9:18", + "scope": 2266, + "src": "3457:9:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6716,10 +6952,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2188, + "id": 2233, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3227:7:18", + "src": "3457:7:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6729,18 +6965,18 @@ "visibility": "internal" } ], - "id": 2191, + "id": 2236, "initialValue": { "argumentTypes": null, "hexValue": "30", - "id": 2190, + "id": 2235, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3239:1:18", + "src": "3469:1:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -6749,12 +6985,12 @@ "value": "0" }, "nodeType": "VariableDeclarationStatement", - "src": "3227:13:18" + "src": "3457:13:18" }, "loopExpression": { "expression": { "argumentTypes": null, - "id": 2197, + "id": 2242, "isConstant": false, "isLValue": false, "isPure": false, @@ -6762,15 +6998,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "3262:3:18", + "src": "3492:3:18", "subExpression": { "argumentTypes": null, - "id": 2196, + "id": 2241, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2189, - "src": "3262:1:18", + "referencedDeclaration": 2234, + "src": "3492:1:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6781,25 +7017,25 @@ "typeString": "uint256" } }, - "id": 2198, + "id": 2243, "nodeType": "ExpressionStatement", - "src": "3262:3:18" + "src": "3492:3:18" }, "nodeType": "ForStatement", - "src": "3222:221:18" + "src": "3452:221:18" }, { "expression": { "argumentTypes": null, "hexValue": "66616c7365", - "id": 2218, + "id": 2263, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "3459:5:18", + "src": "3689:5:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -6807,15 +7043,15 @@ }, "value": "false" }, - "functionReturnParameters": 2184, - "id": 2219, + "functionReturnParameters": 2229, + "id": 2264, "nodeType": "Return", - "src": "3452:12:18" + "src": "3682:12:18" } ] }, "documentation": "@dev Returns if Safe transaction is a valid owner replacement transaction.\n @param dataHash Data hash.\n @return Confirmation status.", - "id": 2221, + "id": 2266, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -6823,16 +7059,16 @@ "name": "isConfirmedByRequiredFriends", "nodeType": "FunctionDefinition", "parameters": { - "id": 2181, + "id": 2226, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2180, + "id": 2225, "name": "dataHash", "nodeType": "VariableDeclaration", - "scope": 2221, - "src": "3104:16:18", + "scope": 2266, + "src": "3334:16:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6840,10 +7076,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 2179, + "id": 2224, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "3104:7:18", + "src": "3334:7:18", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -6853,20 +7089,20 @@ "visibility": "internal" } ], - "src": "3103:18:18" + "src": "3333:18:18" }, "payable": false, "returnParameters": { - "id": 2184, + "id": 2229, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2183, + "id": 2228, "name": "", "nodeType": "VariableDeclaration", - "scope": 2221, - "src": "3167:4:18", + "scope": 2266, + "src": "3397:4:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6874,10 +7110,10 @@ "typeString": "bool" }, "typeName": { - "id": 2182, + "id": 2227, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "3167:4:18", + "src": "3397:4:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6887,19 +7123,19 @@ "visibility": "internal" } ], - "src": "3166:6:18" + "src": "3396:6:18" }, - "scope": 2234, - "src": "3066:405:18", + "scope": 2279, + "src": "3296:405:18", "stateMutability": "view", "superFunction": null, "visibility": "public" }, { "body": { - "id": 2232, + "id": 2277, "nodeType": "Block", - "src": "3691:39:18", + "src": "3921:39:18", "statements": [ { "expression": { @@ -6907,12 +7143,12 @@ "arguments": [ { "argumentTypes": null, - "id": 2229, + "id": 2274, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2223, - "src": "3718:4:18", + "referencedDeclaration": 2268, + "src": "3948:4:18", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -6926,18 +7162,18 @@ "typeString": "bytes memory" } ], - "id": 2228, + "id": 2273, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2592, - "src": "3708:9:18", + "referencedDeclaration": 2648, + "src": "3938:9:18", "typeDescriptions": { "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", "typeString": "function () pure returns (bytes32)" } }, - "id": 2230, + "id": 2275, "isConstant": false, "isLValue": false, "isPure": false, @@ -6945,21 +7181,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3708:15:18", + "src": "3938:15:18", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "functionReturnParameters": 2227, - "id": 2231, + "functionReturnParameters": 2272, + "id": 2276, "nodeType": "Return", - "src": "3701:22:18" + "src": "3931:22:18" } ] }, "documentation": "@dev Returns hash of data encoding owner replacement.\n @param data Data payload.\n @return Data hash.", - "id": 2233, + "id": 2278, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -6967,16 +7203,16 @@ "name": "getDataHash", "nodeType": "FunctionDefinition", "parameters": { - "id": 2224, + "id": 2269, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2223, + "id": 2268, "name": "data", "nodeType": "VariableDeclaration", - "scope": 2233, - "src": "3621:10:18", + "scope": 2278, + "src": "3851:10:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6984,10 +7220,10 @@ "typeString": "bytes" }, "typeName": { - "id": 2222, + "id": 2267, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "3621:5:18", + "src": "3851:5:18", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -6997,20 +7233,20 @@ "visibility": "internal" } ], - "src": "3620:12:18" + "src": "3850:12:18" }, "payable": false, "returnParameters": { - "id": 2227, + "id": 2272, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2226, + "id": 2271, "name": "", "nodeType": "VariableDeclaration", - "scope": 2233, - "src": "3678:7:18", + "scope": 2278, + "src": "3908:7:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7018,10 +7254,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 2225, + "id": 2270, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "3678:7:18", + "src": "3908:7:18", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -7031,20 +7267,20 @@ "visibility": "internal" } ], - "src": "3677:9:18" + "src": "3907:9:18" }, - "scope": 2234, - "src": "3600:130:18", + "scope": 2279, + "src": "3830:130:18", "stateMutability": "pure", "superFunction": null, "visibility": "public" } ], - "scope": 2235, - "src": "306:3426:18" + "scope": 2280, + "src": "306:3656:18" } ], - "src": "0:3733:18" + "src": "0:3963:18" }, "compiler": { "name": "solc", @@ -7054,22 +7290,16 @@ "4": { "events": {}, "links": {}, - "address": "0xf1f0987c2fb0a6fc7ca75465e34318ff64fb24c6", - "transactionHash": "0x9a1262d8d385b0ec7979a9141249dc703f74e98cf9c9f4060ad16ecd92f67dad" - }, - "1527316019334": { - "events": {}, - "links": {}, - "address": "0x268518ad20d3faa34e233e8685d726ad2ec10b4b", - "transactionHash": "0x3b404f9bf2e58e33eeaba336d431c1d819a719b0765dfe2a33831b97d9036a2e" + "address": "0xfb8c65f09f551b6c00a536ad391f61afe44e460e", + "transactionHash": "0x77a932885adfcce576f0a86d0e018698522df33375d4f0da06b7712cb447e68c" }, "1527420696956": { "events": {}, "links": {}, - "address": "0x99d67fc14c6d86cf065a844515916bfbb3ec764d", - "transactionHash": "0x05db0b84de2c38f22917f5a5372ee159959c99ae966e9b07fb99c11a3e099d4d" + "address": "0x4a5d199c1ab0fbd9050ab73c9ba76ae8917b7034", + "transactionHash": "0xe3892577f4aaae9af20ac6bab117e9f6459576dda208c8290ab8fb55c23d0b99" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-27T11:31:46.341Z" + "updatedAt": "2018-05-28T06:08:59.486Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/StateChannelModule.json b/safe-contracts/build/contracts/StateChannelModule.json index 04194abe..8e6ae667 100644 --- a/safe-contracts/build/contracts/StateChannelModule.json +++ b/safe-contracts/build/contracts/StateChannelModule.json @@ -163,24 +163,24 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50610ec6806100206000396000f30060806040526004361061008e576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806319604647146100935780632b50004114610206578063481c6a75146102cc5780637de7edef14610323578063a3f4df7e14610366578063ba0bba40146103f6578063e52cb36a1461040d578063ffa1ad7414610456575b600080fd5b34801561009f57600080fd5b50610204600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190803590602001909291908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192905050506104e6565b005b34801561021257600080fd5b506102ae600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919080359060200190929190505050610705565b60405180826000191660001916815260200191505060405180910390f35b3480156102d857600080fd5b506102e161098d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561032f57600080fd5b50610364600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506109b3565b005b34801561037257600080fd5b5061037b610a78565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103bb5780820151818401526020810190506103a0565b50505050905090810190601f1680156103e85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561040257600080fd5b5061040b610ab1565b005b34801561041957600080fd5b5061043c6004803603810190808035600019169060200190929190505050610abb565b604051808215151515815260200191505060405180910390f35b34801561046257600080fd5b5061046b610adb565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104ab578082015181840152602081019050610490565b50505050905090810190601f1680156104d85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60006104f58989898989610705565b905060026000826000191660001916815260200190815260200160002060009054906101000a900460ff1615151561052c57600080fd5b61053881858585610b14565b600160026000836000191660001916815260200190815260200160002060006101000a81548160ff021916908315150217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a78a8a8a8a6040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018060200183600281111561062557fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b8381101561066557808201518184015260208101905061064a565b50505050905090810190601f1680156106925780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b1580156106b457600080fd5b505af11580156106c8573d6000803e3d6000fd5b505050506040513d60208110156106de57600080fd5b810190808051906020019092919050505015156106fa57600080fd5b505050505050505050565b600060197f01000000000000000000000000000000000000000000000000000000000000000260007f01000000000000000000000000000000000000000000000000000000000000000230888888888860405160200180897effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101887effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140185815260200184805190602001908083835b6020831015156108a95780518252602082019150602081019050602083039250610884565b6001836020036101000a0380198251168184511680821785525050505050509050018360028111156108d757fe5b60ff167f0100000000000000000000000000000000000000000000000000000000000000028152600101828152602001985050505050505050506040516020818303038152906040526040518082805190602001908083835b6020831015156109555780518252602082019150602081019050602083039250610930565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020905095945050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610a0f57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515610a3557600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6040805190810160405280601481526020017f5374617465204368616e6e656c204d6f64756c6500000000000000000000000081525081565b610ab9610e10565b565b60026020528060005260406000206000915054906101000a900460ff1681565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b60008060008060009350600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e75235b86040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015610ba457600080fd5b505af1158015610bb8573d6000803e3d6000fd5b505050506040513d6020811015610bce57600080fd5b81019080805190602001909291905050509050600091505b8060ff16821015610e06576001888884815181101515610c0257fe5b906020019060200201518885815181101515610c1a57fe5b906020019060200201518886815181101515610c3257fe5b90602001906020020151604051600081526020016040526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000865af1158015610cad573d6000803e3d6000fd5b505050602060405103519250600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f54bf6e846040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015610d7657600080fd5b505af1158015610d8a573d6000803e3d6000fd5b505050506040513d6020811015610da057600080fd5b81019080805190602001909291905050501515610dbc57600080fd5b8373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16111515610df657600080fd5b8293508180600101925050610be6565b5050505050505050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610e5757600080fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505600a165627a7a72305820453c6630df1510723e7c76ad0ed06d384408c3c25066f1e25e55db38ef5842e90029", - "deployedBytecode": "0x60806040526004361061008e576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806319604647146100935780632b50004114610206578063481c6a75146102cc5780637de7edef14610323578063a3f4df7e14610366578063ba0bba40146103f6578063e52cb36a1461040d578063ffa1ad7414610456575b600080fd5b34801561009f57600080fd5b50610204600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190803590602001909291908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192905050506104e6565b005b34801561021257600080fd5b506102ae600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919080359060200190929190505050610705565b60405180826000191660001916815260200191505060405180910390f35b3480156102d857600080fd5b506102e161098d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561032f57600080fd5b50610364600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506109b3565b005b34801561037257600080fd5b5061037b610a78565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103bb5780820151818401526020810190506103a0565b50505050905090810190601f1680156103e85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561040257600080fd5b5061040b610ab1565b005b34801561041957600080fd5b5061043c6004803603810190808035600019169060200190929190505050610abb565b604051808215151515815260200191505060405180910390f35b34801561046257600080fd5b5061046b610adb565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104ab578082015181840152602081019050610490565b50505050905090810190601f1680156104d85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60006104f58989898989610705565b905060026000826000191660001916815260200190815260200160002060009054906101000a900460ff1615151561052c57600080fd5b61053881858585610b14565b600160026000836000191660001916815260200190815260200160002060006101000a81548160ff021916908315150217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a78a8a8a8a6040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018060200183600281111561062557fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b8381101561066557808201518184015260208101905061064a565b50505050905090810190601f1680156106925780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b1580156106b457600080fd5b505af11580156106c8573d6000803e3d6000fd5b505050506040513d60208110156106de57600080fd5b810190808051906020019092919050505015156106fa57600080fd5b505050505050505050565b600060197f01000000000000000000000000000000000000000000000000000000000000000260007f01000000000000000000000000000000000000000000000000000000000000000230888888888860405160200180897effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101887effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140185815260200184805190602001908083835b6020831015156108a95780518252602082019150602081019050602083039250610884565b6001836020036101000a0380198251168184511680821785525050505050509050018360028111156108d757fe5b60ff167f0100000000000000000000000000000000000000000000000000000000000000028152600101828152602001985050505050505050506040516020818303038152906040526040518082805190602001908083835b6020831015156109555780518252602082019150602081019050602083039250610930565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020905095945050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610a0f57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515610a3557600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6040805190810160405280601481526020017f5374617465204368616e6e656c204d6f64756c6500000000000000000000000081525081565b610ab9610e10565b565b60026020528060005260406000206000915054906101000a900460ff1681565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b60008060008060009350600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e75235b86040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015610ba457600080fd5b505af1158015610bb8573d6000803e3d6000fd5b505050506040513d6020811015610bce57600080fd5b81019080805190602001909291905050509050600091505b8060ff16821015610e06576001888884815181101515610c0257fe5b906020019060200201518885815181101515610c1a57fe5b906020019060200201518886815181101515610c3257fe5b90602001906020020151604051600081526020016040526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000865af1158015610cad573d6000803e3d6000fd5b505050602060405103519250600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f54bf6e846040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015610d7657600080fd5b505af1158015610d8a573d6000803e3d6000fd5b505050506040513d6020811015610da057600080fd5b81019080805190602001909291905050501515610dbc57600080fd5b8373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16111515610df657600080fd5b8293508180600101925050610be6565b5050505050505050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610e5757600080fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505600a165627a7a72305820453c6630df1510723e7c76ad0ed06d384408c3c25066f1e25e55db38ef5842e90029", - "sourceMap": "269:2858:19:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;269:2858:19;;;;;;;", - "deployedSourceMap": "269:2858:19:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1265:602;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1265:602:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2796:329;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2796:329:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;262:28:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;262:28:7;;;;;;;;;;;;;;;;;;;;;;;;;;;626:208:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;626:208:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;314:52:19;;8:9:-1;5:2;;;30:1;27;20:12;5:2;314:52:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;314:52:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;601:65;;8:9:-1;5:2;;;30:1;27;20:12;5:2;601:65:19;;;;;;510:43;;8:9:-1;5:2;;;30:1;27;20:12;5:2;510:43:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;372:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;372:40:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;372:40:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1265:602;1512:23;1538:53;1557:2;1561:5;1568:4;1574:9;1585:5;1538:18;:53::i;:::-;1512:79;;1610:10;:27;1621:15;1610:27;;;;;;;;;;;;;;;;;;;;;;;;;;;1609:28;1601:37;;;;;;;;1648:35;1658:15;1675:1;1678;1681;1648:9;:35::i;:::-;1776:4;1746:10;:27;1757:15;1746:27;;;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;1798:7;;;;;;;;;;;:33;;;1832:2;1836:5;1843:4;1849:9;1798:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;1798:61:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1798:61:19;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1798:61:19;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1798:61:19;;;;;;;;;;;;;;;;1790:70;;;;;;;;1265:602;;;;;;;;;:::o;2796:329::-;2999:7;3061:4;3056:10;;3073:1;3068:7;;3077:4;3083:2;3087:5;3094:4;3100:9;3111:5;3039:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;;;3039:78:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3039:78:19;;;3029:89;;;;;;;;;;;;;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;;;3029:89:19;;;;;;;;;;;;;;;;3022:96;;2796:329;;;;;;;:::o;262:28:7:-;;;;;;;;;;;;;:::o;626:208:5:-;359:7:7;;;;;;;;;;;337:30;;:10;:30;;;329:39;;;;;;;;791:1:5;776:11;:16;;;;768:25;;;;;;;;816:11;803:10;;:24;;;;;;;;;;;;;;;;;;626:208;:::o;314:52:19:-;;;;;;;;;;;;;;;;;;;;:::o;601:65::-;647:12;:10;:12::i;:::-;601:65::o;510:43::-;;;;;;;;;;;;;;;;;;;;;;:::o;372:40::-;;;;;;;;;;;;;;;;;;;;:::o;1873:645::-;2050:17;2090:20;2120:9;2139:15;2078:1;2050:30;;2170:7;;;;;;;;;;;2157:34;;;:36;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2157:36:19;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2157:36:19;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2157:36:19;;;;;;;;;;;;;;;;2139:54;;2254:1;2250:5;;2245:267;2261:9;2257:13;;:1;:13;2245:267;;;2306:44;2316:15;2333:1;2335;2333:4;;;;;;;;;;;;;;;;;;2339:1;2341;2339:4;;;;;;;;;;;;;;;;;;2345:1;2347;2345:4;;;;;;;;;;;;;;;;;;2306:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2306:44:19;;;;;;;;2291:59;;2385:7;;;;;;;;;;;2372:29;;;2402:12;2372:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2372:43:19;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2372:43:19;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2372:43:19;;;;;;;;;;;;;;;;2364:52;;;;;;;;2453:9;2438:24;;:12;:24;;;2430:33;;;;;;;;2489:12;2477:24;;2272:3;;;;;;;2245:267;;;1873:645;;;;;;;;:::o;392:268:7:-;606:1;594:7;;;;;;;;;;;586:21;;;578:30;;;;;;;;642:10;618:7;;:35;;;;;;;;;;;;;;;;;;392:268::o", - "source": "pragma solidity 0.4.24;\nimport \"../Module.sol\";\nimport \"../OwnerManager.sol\";\n\n\n/// @title Gnosis Safe State Module - A module that allows interaction with statechannels.\n/// @author Stefan George - \n/// @author Richard Meissner - \ncontract StateChannelModule is Module {\n\n string public constant NAME = \"State Channel Module\";\n string public constant VERSION = \"0.0.1\";\n\n // isExecuted mapping allows to check if a transaction (by hash) was already executed.\n mapping (bytes32 => bool) public isExecuted;\n\n /// @dev Setup function sets manager\n function setup()\n public\n {\n setManager();\n }\n\n /// @dev Allows to execute a Safe transaction confirmed by required number of owners.\n /// @param to Destination address of Safe transaction.\n /// @param value Ether value of Safe transaction.\n /// @param data Data payload of Safe transaction.\n /// @param operation Operation type of Safe transaction.\n /// @param nonce Nonce used for this Safe transaction.\n /// @param v Array of signature V values sorted by owner addresses.\n /// @param r Array of signature R values sorted by owner addresses.\n /// @param s Array of signature S values sorted by owner addresses.\n function execTransaction(\n address to, \n uint256 value, \n bytes data, \n Enum.Operation operation, \n uint256 nonce,\n uint8[] v, \n bytes32[] r, \n bytes32[] s\n )\n public\n {\n bytes32 transactionHash = getTransactionHash(to, value, data, operation, nonce);\n require(!isExecuted[transactionHash]);\n checkHash(transactionHash, v, r, s);\n // Mark as executed and execute transaction.\n isExecuted[transactionHash] = true;\n require(manager.execTransactionFromModule(to, value, data, operation));\n }\n\n function checkHash(bytes32 transactionHash, uint8[] v, bytes32[] r, bytes32[] s)\n internal\n view\n {\n // There cannot be an owner with address 0.\n address lastOwner = address(0);\n address currentOwner;\n uint256 i;\n uint8 threshold = OwnerManager(manager).getThreshold();\n // Validate threshold is reached.\n for (i = 0; i < threshold; i++) {\n currentOwner = ecrecover(transactionHash, v[i], r[i], s[i]);\n require(OwnerManager(manager).isOwner(currentOwner));\n require(currentOwner > lastOwner);\n lastOwner = currentOwner;\n }\n }\n\n /// @dev Returns hash to be signed by owners.\n /// @param to Destination address.\n /// @param value Ether value.\n /// @param data Data payload.\n /// @param operation Operation type.\n /// @param nonce Transaction nonce.\n /// @return Transaction hash.\n function getTransactionHash(\n address to, \n uint256 value, \n bytes data, \n Enum.Operation operation, \n uint256 nonce\n )\n public\n view\n returns (bytes32)\n {\n return keccak256(abi.encodePacked(byte(0x19), byte(0), this, to, value, data, operation, nonce));\n }\n}\n", + "bytecode": "0x608060405234801561001057600080fd5b50611217806100206000396000f30060806040526004361061008e576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806319604647146100935780632b50004114610206578063481c6a75146102cc5780637de7edef14610323578063a3f4df7e14610366578063ba0bba40146103f6578063e52cb36a1461040d578063ffa1ad7414610456575b600080fd5b34801561009f57600080fd5b50610204600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190803590602001909291908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192905050506104e6565b005b34801561021257600080fd5b506102ae600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190803590602001909291905050506107d7565b60405180826000191660001916815260200191505060405180910390f35b3480156102d857600080fd5b506102e1610a5f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561032f57600080fd5b50610364600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a85565b005b34801561037257600080fd5b5061037b610c68565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103bb5780820151818401526020810190506103a0565b50505050905090810190601f1680156103e85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561040257600080fd5b5061040b610ca1565b005b34801561041957600080fd5b5061043c6004803603810190808035600019169060200190929190505050610cab565b604051808215151515815260200191505060405180910390f35b34801561046257600080fd5b5061046b610ccb565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104ab578082015181840152602081019050610490565b50505050905090810190601f1680156104d85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60006104f589898989896107d7565b905060026000826000191660001916815260200190815260200160002060009054906101000a900460ff16151515610595576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f5472616e73616374696f6e20616c72656164792065786563757465640000000081525060200191505060405180910390fd5b6105a181858585610d04565b600160026000836000191660001916815260200190815260200160002060006101000a81548160ff021916908315150217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a78a8a8a8a6040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018060200183600281111561068e57fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b838110156106ce5780820151818401526020810190506106b3565b50505050905090810190601f1680156106fb5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b15801561071d57600080fd5b505af1158015610731573d6000803e3d6000fd5b505050506040513d602081101561074757600080fd5b810190808051906020019092919050505015156107cc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f436f756c64206e6f742065786563757465207472616e73616374696f6e00000081525060200191505060405180910390fd5b505050505050505050565b600060197f01000000000000000000000000000000000000000000000000000000000000000260007f01000000000000000000000000000000000000000000000000000000000000000230888888888860405160200180897effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101887effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140185815260200184805190602001908083835b60208310151561097b5780518252602082019150602081019050602083039250610956565b6001836020036101000a0380198251168184511680821785525050505050509050018360028111156109a957fe5b60ff167f0100000000000000000000000000000000000000000000000000000000000000028152600101828152602001985050505050505050506040516020818303038152906040526040518082805190602001908083835b602083101515610a275780518252602082019150602081019050602083039250610a02565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020905095945050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610b70576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d206d81526020017f616e61676572000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515610c25576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f496e76616c6964206d617374657220636f707920616464726573732070726f7681526020017f696465640000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6040805190810160405280601481526020017f5374617465204368616e6e656c204d6f64756c6500000000000000000000000081525081565b610ca96110f8565b565b60026020528060005260406000206000915054906101000a900460ff1681565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b60008060008060009350600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e75235b86040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015610d9457600080fd5b505af1158015610da8573d6000803e3d6000fd5b505050506040513d6020811015610dbe57600080fd5b81019080805190602001909291905050509050600091505b8060ff168210156110ee576001888884815181101515610df257fe5b906020019060200201518885815181101515610e0a57fe5b906020019060200201518886815181101515610e2257fe5b90602001906020020151604051600081526020016040526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000865af1158015610e9d573d6000803e3d6000fd5b505050602060405103519250600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f54bf6e846040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015610f6657600080fd5b505af1158015610f7a573d6000803e3d6000fd5b505050506040513d6020811015610f9057600080fd5b81019080805190602001909291905050501515611015576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5369676e6174757265206e6f742070726f7669646564206279206f776e65720081525060200191505060405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161115156110de576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b8152602001807f5369676e61747572657320617265206e6f74206f726465726564206279206f7781526020017f6e6572206164647265737300000000000000000000000000000000000000000081525060400191505060405180910390fd5b8293508180600101925050610dd6565b5050505050505050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156111a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4d616e616765722068617320616c7265616479206265656e207365740000000081525060200191505060405180910390fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505600a165627a7a723058207007410d8e2ddd28783764eae9dff7067cf71735903032d0f3e19520422ae7010029", + "deployedBytecode": "0x60806040526004361061008e576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806319604647146100935780632b50004114610206578063481c6a75146102cc5780637de7edef14610323578063a3f4df7e14610366578063ba0bba40146103f6578063e52cb36a1461040d578063ffa1ad7414610456575b600080fd5b34801561009f57600080fd5b50610204600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190803590602001909291908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192905050506104e6565b005b34801561021257600080fd5b506102ae600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190803590602001909291905050506107d7565b60405180826000191660001916815260200191505060405180910390f35b3480156102d857600080fd5b506102e1610a5f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561032f57600080fd5b50610364600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a85565b005b34801561037257600080fd5b5061037b610c68565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103bb5780820151818401526020810190506103a0565b50505050905090810190601f1680156103e85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561040257600080fd5b5061040b610ca1565b005b34801561041957600080fd5b5061043c6004803603810190808035600019169060200190929190505050610cab565b604051808215151515815260200191505060405180910390f35b34801561046257600080fd5b5061046b610ccb565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104ab578082015181840152602081019050610490565b50505050905090810190601f1680156104d85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60006104f589898989896107d7565b905060026000826000191660001916815260200190815260200160002060009054906101000a900460ff16151515610595576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f5472616e73616374696f6e20616c72656164792065786563757465640000000081525060200191505060405180910390fd5b6105a181858585610d04565b600160026000836000191660001916815260200190815260200160002060006101000a81548160ff021916908315150217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a78a8a8a8a6040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018060200183600281111561068e57fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b838110156106ce5780820151818401526020810190506106b3565b50505050905090810190601f1680156106fb5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b15801561071d57600080fd5b505af1158015610731573d6000803e3d6000fd5b505050506040513d602081101561074757600080fd5b810190808051906020019092919050505015156107cc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f436f756c64206e6f742065786563757465207472616e73616374696f6e00000081525060200191505060405180910390fd5b505050505050505050565b600060197f01000000000000000000000000000000000000000000000000000000000000000260007f01000000000000000000000000000000000000000000000000000000000000000230888888888860405160200180897effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101887effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140185815260200184805190602001908083835b60208310151561097b5780518252602082019150602081019050602083039250610956565b6001836020036101000a0380198251168184511680821785525050505050509050018360028111156109a957fe5b60ff167f0100000000000000000000000000000000000000000000000000000000000000028152600101828152602001985050505050505050506040516020818303038152906040526040518082805190602001908083835b602083101515610a275780518252602082019150602081019050602083039250610a02565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020905095945050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610b70576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d206d81526020017f616e61676572000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515610c25576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f496e76616c6964206d617374657220636f707920616464726573732070726f7681526020017f696465640000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6040805190810160405280601481526020017f5374617465204368616e6e656c204d6f64756c6500000000000000000000000081525081565b610ca96110f8565b565b60026020528060005260406000206000915054906101000a900460ff1681565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b60008060008060009350600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e75235b86040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015610d9457600080fd5b505af1158015610da8573d6000803e3d6000fd5b505050506040513d6020811015610dbe57600080fd5b81019080805190602001909291905050509050600091505b8060ff168210156110ee576001888884815181101515610df257fe5b906020019060200201518885815181101515610e0a57fe5b906020019060200201518886815181101515610e2257fe5b90602001906020020151604051600081526020016040526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000865af1158015610e9d573d6000803e3d6000fd5b505050602060405103519250600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f54bf6e846040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015610f6657600080fd5b505af1158015610f7a573d6000803e3d6000fd5b505050506040513d6020811015610f9057600080fd5b81019080805190602001909291905050501515611015576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5369676e6174757265206e6f742070726f7669646564206279206f776e65720081525060200191505060405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161115156110de576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b8152602001807f5369676e61747572657320617265206e6f74206f726465726564206279206f7781526020017f6e6572206164647265737300000000000000000000000000000000000000000081525060400191505060405180910390fd5b8293508180600101925050610dd6565b5050505050505050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156111a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4d616e616765722068617320616c7265616479206265656e207365740000000081525060200191505060405180910390fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505600a165627a7a723058207007410d8e2ddd28783764eae9dff7067cf71735903032d0f3e19520422ae7010029", + "sourceMap": "269:3005:19:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;269:3005:19;;;;;;;", + "deployedSourceMap": "269:3005:19:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1265:667;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1265:667:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2943:329;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2943:329:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;262:28:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;262:28:7;;;;;;;;;;;;;;;;;;;;;;;;;;;626:248:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;626:248:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;314:52:19;;8:9:-1;5:2;;;30:1;27;20:12;5:2;314:52:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;314:52:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;601:65;;8:9:-1;5:2;;;30:1;27;20:12;5:2;601:65:19;;;;;;510:43;;8:9:-1;5:2;;;30:1;27;20:12;5:2;510:43:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;372:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;372:40:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;372:40:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1265:667;1512:23;1538:53;1557:2;1561:5;1568:4;1574:9;1585:5;1538:18;:53::i;:::-;1512:79;;1610:10;:27;1621:15;1610:27;;;;;;;;;;;;;;;;;;;;;;;;;;;1609:28;1601:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1680:35;1690:15;1707:1;1710;1713;1680:9;:35::i;:::-;1808:4;1778:10;:27;1789:15;1778:27;;;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;1830:7;;;;;;;;;;;:33;;;1864:2;1868:5;1875:4;1881:9;1830:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;1830:61:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1830:61:19;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1830:61:19;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1830:61:19;;;;;;;;;;;;;;;;1822:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1265:667;;;;;;;;;:::o;2943:329::-;3146:7;3208:4;3203:10;;3220:1;3215:7;;3224:4;3230:2;3234:5;3241:4;3247:9;3258:5;3186:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;;;3186:78:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3186:78:19;;;3176:89;;;;;;;;;;;;;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;;;3176:89:19;;;;;;;;;;;;;;;;3169:96;;2943:329;;;;;;;:::o;262:28:7:-;;;;;;;;;;;;;:::o;626:248:5:-;359:7:7;;;;;;;;;;;337:30;;:10;:30;;;329:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;791:1:5;776:11;:16;;;;768:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;856:11;843:10;;:24;;;;;;;;;;;;;;;;;;626:248;:::o;314:52:19:-;;;;;;;;;;;;;;;;;;;;:::o;601:65::-;647:12;:10;:12::i;:::-;601:65::o;510:43::-;;;;;;;;;;;;;;;;;;;;;;:::o;372:40::-;;;;;;;;;;;;;;;;;;;;:::o;1938:727::-;2115:17;2155:20;2185:9;2204:15;2143:1;2115:30;;2235:7;;;;;;;;;;;2222:34;;;:36;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2222:36:19;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2222:36:19;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2222:36:19;;;;;;;;;;;;;;;;2204:54;;2319:1;2315:5;;2310:349;2326:9;2322:13;;:1;:13;2310:349;;;2371:44;2381:15;2398:1;2400;2398:4;;;;;;;;;;;;;;;;;;2404:1;2406;2404:4;;;;;;;;;;;;;;;;;;2410:1;2412;2410:4;;;;;;;;;;;;;;;;;;2371:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2371:44:19;;;;;;;;2356:59;;2450:7;;;;;;;;;;;2437:29;;;2467:12;2437:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2437:43:19;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2437:43:19;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2437:43:19;;;;;;;;;;;;;;;;2429:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2553:9;2538:24;;:12;:24;;;2530:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2636:12;2624:24;;2337:3;;;;;;;2310:349;;;1938:727;;;;;;;;:::o;434:300:7:-;648:1;636:7;;;;;;;;;;;628:21;;;620:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;716:10;692:7;;:35;;;;;;;;;;;;;;;;;;434:300::o", + "source": "pragma solidity 0.4.24;\nimport \"../Module.sol\";\nimport \"../OwnerManager.sol\";\n\n\n/// @title Gnosis Safe State Module - A module that allows interaction with statechannels.\n/// @author Stefan George - \n/// @author Richard Meissner - \ncontract StateChannelModule is Module {\n\n string public constant NAME = \"State Channel Module\";\n string public constant VERSION = \"0.0.1\";\n\n // isExecuted mapping allows to check if a transaction (by hash) was already executed.\n mapping (bytes32 => bool) public isExecuted;\n\n /// @dev Setup function sets manager\n function setup()\n public\n {\n setManager();\n }\n\n /// @dev Allows to execute a Safe transaction confirmed by required number of owners.\n /// @param to Destination address of Safe transaction.\n /// @param value Ether value of Safe transaction.\n /// @param data Data payload of Safe transaction.\n /// @param operation Operation type of Safe transaction.\n /// @param nonce Nonce used for this Safe transaction.\n /// @param v Array of signature V values sorted by owner addresses.\n /// @param r Array of signature R values sorted by owner addresses.\n /// @param s Array of signature S values sorted by owner addresses.\n function execTransaction(\n address to, \n uint256 value, \n bytes data, \n Enum.Operation operation, \n uint256 nonce,\n uint8[] v, \n bytes32[] r, \n bytes32[] s\n )\n public\n {\n bytes32 transactionHash = getTransactionHash(to, value, data, operation, nonce);\n require(!isExecuted[transactionHash], \"Transaction already executed\");\n checkHash(transactionHash, v, r, s);\n // Mark as executed and execute transaction.\n isExecuted[transactionHash] = true;\n require(manager.execTransactionFromModule(to, value, data, operation), \"Could not execute transaction\");\n }\n\n function checkHash(bytes32 transactionHash, uint8[] v, bytes32[] r, bytes32[] s)\n internal\n view\n {\n // There cannot be an owner with address 0.\n address lastOwner = address(0);\n address currentOwner;\n uint256 i;\n uint8 threshold = OwnerManager(manager).getThreshold();\n // Validate threshold is reached.\n for (i = 0; i < threshold; i++) {\n currentOwner = ecrecover(transactionHash, v[i], r[i], s[i]);\n require(OwnerManager(manager).isOwner(currentOwner), \"Signature not provided by owner\");\n require(currentOwner > lastOwner, \"Signatures are not ordered by owner address\");\n lastOwner = currentOwner;\n }\n }\n\n /// @dev Returns hash to be signed by owners.\n /// @param to Destination address.\n /// @param value Ether value.\n /// @param data Data payload.\n /// @param operation Operation type.\n /// @param nonce Transaction nonce.\n /// @return Transaction hash.\n function getTransactionHash(\n address to, \n uint256 value, \n bytes data, \n Enum.Operation operation, \n uint256 nonce\n )\n public\n view\n returns (bytes32)\n {\n return keccak256(abi.encodePacked(byte(0x19), byte(0), this, to, value, data, operation, nonce));\n }\n}\n", "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/modules/StateChannelModule.sol", "ast": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/modules/StateChannelModule.sol", "exportedSymbols": { "StateChannelModule": [ - 2436 + 2485 ] }, - "id": 2437, + "id": 2486, "nodeType": "SourceUnit", "nodes": [ { - "id": 2236, + "id": 2281, "literals": [ "solidity", "0.4", @@ -192,10 +192,10 @@ { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Module.sol", "file": "../Module.sol", - "id": 2237, + "id": 2282, "nodeType": "ImportDirective", - "scope": 2437, - "sourceUnit": 751, + "scope": 2486, + "sourceUnit": 763, "src": "24:23:19", "symbolAliases": [], "unitAlias": "" @@ -203,10 +203,10 @@ { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/OwnerManager.sol", "file": "../OwnerManager.sol", - "id": 2238, + "id": 2283, "nodeType": "ImportDirective", - "scope": 2437, - "sourceUnit": 1473, + "scope": 2486, + "sourceUnit": 1505, "src": "48:29:19", "symbolAliases": [], "unitAlias": "" @@ -217,45 +217,45 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 2239, + "id": 2284, "name": "Module", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 750, + "referencedDeclaration": 762, "src": "300:6:19", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$750", + "typeIdentifier": "t_contract$_Module_$762", "typeString": "contract Module" } }, - "id": 2240, + "id": 2285, "nodeType": "InheritanceSpecifier", "src": "300:6:19" } ], "contractDependencies": [ - 652, - 750, - 1619 + 662, + 762, + 1654 ], "contractKind": "contract", "documentation": "@title Gnosis Safe State Module - A module that allows interaction with statechannels.\n @author Stefan George - \n @author Richard Meissner - ", "fullyImplemented": true, - "id": 2436, + "id": 2485, "linearizedBaseContracts": [ - 2436, - 750, - 652, - 1619 + 2485, + 762, + 662, + 1654 ], "name": "StateChannelModule", "nodeType": "ContractDefinition", "nodes": [ { "constant": true, - "id": 2243, + "id": 2288, "name": "NAME", "nodeType": "VariableDeclaration", - "scope": 2436, + "scope": 2485, "src": "314:52:19", "stateVariable": true, "storageLocation": "default", @@ -264,7 +264,7 @@ "typeString": "string" }, "typeName": { - "id": 2241, + "id": 2286, "name": "string", "nodeType": "ElementaryTypeName", "src": "314:6:19", @@ -276,7 +276,7 @@ "value": { "argumentTypes": null, "hexValue": "5374617465204368616e6e656c204d6f64756c65", - "id": 2242, + "id": 2287, "isConstant": false, "isLValue": false, "isPure": true, @@ -295,10 +295,10 @@ }, { "constant": true, - "id": 2246, + "id": 2291, "name": "VERSION", "nodeType": "VariableDeclaration", - "scope": 2436, + "scope": 2485, "src": "372:40:19", "stateVariable": true, "storageLocation": "default", @@ -307,7 +307,7 @@ "typeString": "string" }, "typeName": { - "id": 2244, + "id": 2289, "name": "string", "nodeType": "ElementaryTypeName", "src": "372:6:19", @@ -319,7 +319,7 @@ "value": { "argumentTypes": null, "hexValue": "302e302e31", - "id": 2245, + "id": 2290, "isConstant": false, "isLValue": false, "isPure": true, @@ -338,10 +338,10 @@ }, { "constant": false, - "id": 2250, + "id": 2295, "name": "isExecuted", "nodeType": "VariableDeclaration", - "scope": 2436, + "scope": 2485, "src": "510:43:19", "stateVariable": true, "storageLocation": "default", @@ -350,9 +350,9 @@ "typeString": "mapping(bytes32 => bool)" }, "typeName": { - "id": 2249, + "id": 2294, "keyType": { - "id": 2247, + "id": 2292, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "519:7:19", @@ -368,7 +368,7 @@ "typeString": "mapping(bytes32 => bool)" }, "valueType": { - "id": 2248, + "id": 2293, "name": "bool", "nodeType": "ElementaryTypeName", "src": "530:4:19", @@ -383,7 +383,7 @@ }, { "body": { - "id": 2256, + "id": 2301, "nodeType": "Block", "src": "637:29:19", "statements": [ @@ -393,18 +393,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 2253, + "id": 2298, "name": "setManager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 749, + "referencedDeclaration": 761, "src": "647:10:19", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()" } }, - "id": 2254, + "id": 2299, "isConstant": false, "isLValue": false, "isPure": false, @@ -418,14 +418,14 @@ "typeString": "tuple()" } }, - "id": 2255, + "id": 2300, "nodeType": "ExpressionStatement", "src": "647:12:19" } ] }, "documentation": "@dev Setup function sets manager", - "id": 2257, + "id": 2302, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -433,19 +433,19 @@ "name": "setup", "nodeType": "FunctionDefinition", "parameters": { - "id": 2251, + "id": 2296, "nodeType": "ParameterList", "parameters": [], "src": "615:2:19" }, "payable": false, "returnParameters": { - "id": 2252, + "id": 2297, "nodeType": "ParameterList", "parameters": [], "src": "637:0:19" }, - "scope": 2436, + "scope": 2485, "src": "601:65:19", "stateMutability": "nonpayable", "superFunction": null, @@ -453,21 +453,21 @@ }, { "body": { - "id": 2319, + "id": 2366, "nodeType": "Block", - "src": "1502:365:19", + "src": "1502:430:19", "statements": [ { "assignments": [ - 2280 + 2325 ], "declarations": [ { "constant": false, - "id": 2280, + "id": 2325, "name": "transactionHash", "nodeType": "VariableDeclaration", - "scope": 2320, + "scope": 2367, "src": "1512:23:19", "stateVariable": false, "storageLocation": "default", @@ -476,7 +476,7 @@ "typeString": "bytes32" }, "typeName": { - "id": 2279, + "id": 2324, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1512:7:19", @@ -489,17 +489,17 @@ "visibility": "internal" } ], - "id": 2288, + "id": 2333, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 2282, + "id": 2327, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2259, + "referencedDeclaration": 2304, "src": "1557:2:19", "typeDescriptions": { "typeIdentifier": "t_address", @@ -508,11 +508,11 @@ }, { "argumentTypes": null, - "id": 2283, + "id": 2328, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2261, + "referencedDeclaration": 2306, "src": "1561:5:19", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -521,11 +521,11 @@ }, { "argumentTypes": null, - "id": 2284, + "id": 2329, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2263, + "referencedDeclaration": 2308, "src": "1568:4:19", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", @@ -534,11 +534,11 @@ }, { "argumentTypes": null, - "id": 2285, + "id": 2330, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2265, + "referencedDeclaration": 2310, "src": "1574:9:19", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$29", @@ -547,11 +547,11 @@ }, { "argumentTypes": null, - "id": 2286, + "id": 2331, "name": "nonce", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2267, + "referencedDeclaration": 2312, "src": "1585:5:19", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -582,18 +582,18 @@ "typeString": "uint256" } ], - "id": 2281, + "id": 2326, "name": "getTransactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2435, + "referencedDeclaration": 2484, "src": "1538:18:19", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$_t_uint256_$returns$_t_bytes32_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256) view returns (bytes32)" } }, - "id": 2287, + "id": 2332, "isConstant": false, "isLValue": false, "isPure": false, @@ -616,7 +616,7 @@ "arguments": [ { "argumentTypes": null, - "id": 2293, + "id": 2338, "isConstant": false, "isLValue": false, "isPure": false, @@ -629,25 +629,25 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2290, + "id": 2335, "name": "isExecuted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2250, + "referencedDeclaration": 2295, "src": "1610:10:19", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" } }, - "id": 2292, + "id": 2337, "indexExpression": { "argumentTypes": null, - "id": 2291, + "id": 2336, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2280, + "referencedDeclaration": 2325, "src": "1621:15:19", "typeDescriptions": { "typeIdentifier": "t_bytes32", @@ -669,6 +669,24 @@ "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "5472616e73616374696f6e20616c7265616479206578656375746564", + "id": 2339, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1639:30:19", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_3c3f7cf602281cf7a98efd78d98ba46309975dadee18bcb57e640145699bd800", + "typeString": "literal_string \"Transaction already executed\"" + }, + "value": "Transaction already executed" } ], "expression": { @@ -676,23 +694,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_3c3f7cf602281cf7a98efd78d98ba46309975dadee18bcb57e640145699bd800", + "typeString": "literal_string \"Transaction already executed\"" } ], - "id": 2289, + "id": 2334, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, + "referencedDeclaration": 2658, "src": "1601:7:19", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 2294, + "id": 2340, "isConstant": false, "isLValue": false, "isPure": false, @@ -700,15 +722,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1601:37:19", + "src": "1601:69:19", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2295, + "id": 2341, "nodeType": "ExpressionStatement", - "src": "1601:37:19" + "src": "1601:69:19" }, { "expression": { @@ -716,12 +738,12 @@ "arguments": [ { "argumentTypes": null, - "id": 2297, + "id": 2343, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2280, - "src": "1658:15:19", + "referencedDeclaration": 2325, + "src": "1690:15:19", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -729,12 +751,12 @@ }, { "argumentTypes": null, - "id": 2298, + "id": 2344, "name": "v", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2270, - "src": "1675:1:19", + "referencedDeclaration": 2315, + "src": "1707:1:19", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr", "typeString": "uint8[] memory" @@ -742,12 +764,12 @@ }, { "argumentTypes": null, - "id": 2299, + "id": 2345, "name": "r", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2273, - "src": "1678:1:19", + "referencedDeclaration": 2318, + "src": "1710:1:19", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", "typeString": "bytes32[] memory" @@ -755,12 +777,12 @@ }, { "argumentTypes": null, - "id": 2300, + "id": 2346, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2276, - "src": "1681:1:19", + "referencedDeclaration": 2321, + "src": "1713:1:19", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", "typeString": "bytes32[] memory" @@ -786,18 +808,18 @@ "typeString": "bytes32[] memory" } ], - "id": 2296, + "id": 2342, "name": "checkHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2401, - "src": "1648:9:19", + "referencedDeclaration": 2450, + "src": "1680:9:19", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_array$_t_uint8_$dyn_memory_ptr_$_t_array$_t_bytes32_$dyn_memory_ptr_$_t_array$_t_bytes32_$dyn_memory_ptr_$returns$__$", "typeString": "function (bytes32,uint8[] memory,bytes32[] memory,bytes32[] memory) view" } }, - "id": 2301, + "id": 2347, "isConstant": false, "isLValue": false, "isPure": false, @@ -805,20 +827,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1648:35:19", + "src": "1680:35:19", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2302, + "id": 2348, "nodeType": "ExpressionStatement", - "src": "1648:35:19" + "src": "1680:35:19" }, { "expression": { "argumentTypes": null, - "id": 2307, + "id": 2353, "isConstant": false, "isLValue": false, "isPure": false, @@ -827,26 +849,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2303, + "id": 2349, "name": "isExecuted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2250, - "src": "1746:10:19", + "referencedDeclaration": 2295, + "src": "1778:10:19", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" } }, - "id": 2305, + "id": 2351, "indexExpression": { "argumentTypes": null, - "id": 2304, + "id": 2350, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2280, - "src": "1757:15:19", + "referencedDeclaration": 2325, + "src": "1789:15:19", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -857,7 +879,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1746:27:19", + "src": "1778:27:19", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -868,14 +890,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 2306, + "id": 2352, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "1776:4:19", + "src": "1808:4:19", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -883,15 +905,15 @@ }, "value": "true" }, - "src": "1746:34:19", + "src": "1778:34:19", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 2308, + "id": 2354, "nodeType": "ExpressionStatement", - "src": "1746:34:19" + "src": "1778:34:19" }, { "expression": { @@ -902,12 +924,12 @@ "arguments": [ { "argumentTypes": null, - "id": 2312, + "id": 2358, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2259, - "src": "1832:2:19", + "referencedDeclaration": 2304, + "src": "1864:2:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -915,12 +937,12 @@ }, { "argumentTypes": null, - "id": 2313, + "id": 2359, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2261, - "src": "1836:5:19", + "referencedDeclaration": 2306, + "src": "1868:5:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -928,12 +950,12 @@ }, { "argumentTypes": null, - "id": 2314, + "id": 2360, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2263, - "src": "1843:4:19", + "referencedDeclaration": 2308, + "src": "1875:4:19", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -941,12 +963,12 @@ }, { "argumentTypes": null, - "id": 2315, + "id": 2361, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2265, - "src": "1849:9:19", + "referencedDeclaration": 2310, + "src": "1881:9:19", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" @@ -974,32 +996,32 @@ ], "expression": { "argumentTypes": null, - "id": 2310, + "id": 2356, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 717, - "src": "1798:7:19", + "referencedDeclaration": 727, + "src": "1830:7:19", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1100", + "typeIdentifier": "t_contract$_ModuleManager_$1118", "typeString": "contract ModuleManager" } }, - "id": 2311, + "id": 2357, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "execTransactionFromModule", "nodeType": "MemberAccess", - "referencedDeclaration": 927, - "src": "1798:33:19", + "referencedDeclaration": 945, + "src": "1830:33:19", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$returns$_t_bool_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation) external returns (bool)" } }, - "id": 2316, + "id": 2362, "isConstant": false, "isLValue": false, "isPure": false, @@ -1007,11 +1029,29 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1798:61:19", + "src": "1830:61:19", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "436f756c64206e6f742065786563757465207472616e73616374696f6e", + "id": 2363, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1893:31:19", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_b0a2f29e31cc28eee068c27ff93342fb8d9840dcad25c6f669ce8154844930c4", + "typeString": "literal_string \"Could not execute transaction\"" + }, + "value": "Could not execute transaction" } ], "expression": { @@ -1019,23 +1059,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_b0a2f29e31cc28eee068c27ff93342fb8d9840dcad25c6f669ce8154844930c4", + "typeString": "literal_string \"Could not execute transaction\"" } ], - "id": 2309, + "id": 2355, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "1790:7:19", + "referencedDeclaration": 2658, + "src": "1822:7:19", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 2317, + "id": 2364, "isConstant": false, "isLValue": false, "isPure": false, @@ -1043,20 +1087,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1790:70:19", + "src": "1822:103:19", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2318, + "id": 2365, "nodeType": "ExpressionStatement", - "src": "1790:70:19" + "src": "1822:103:19" } ] }, "documentation": "@dev Allows to execute a Safe transaction confirmed by required number of owners.\n @param to Destination address of Safe transaction.\n @param value Ether value of Safe transaction.\n @param data Data payload of Safe transaction.\n @param operation Operation type of Safe transaction.\n @param nonce Nonce used for this Safe transaction.\n @param v Array of signature V values sorted by owner addresses.\n @param r Array of signature R values sorted by owner addresses.\n @param s Array of signature S values sorted by owner addresses.", - "id": 2320, + "id": 2367, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -1064,15 +1108,15 @@ "name": "execTransaction", "nodeType": "FunctionDefinition", "parameters": { - "id": 2277, + "id": 2322, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2259, + "id": 2304, "name": "to", "nodeType": "VariableDeclaration", - "scope": 2320, + "scope": 2367, "src": "1299:10:19", "stateVariable": false, "storageLocation": "default", @@ -1081,7 +1125,7 @@ "typeString": "address" }, "typeName": { - "id": 2258, + "id": 2303, "name": "address", "nodeType": "ElementaryTypeName", "src": "1299:7:19", @@ -1095,10 +1139,10 @@ }, { "constant": false, - "id": 2261, + "id": 2306, "name": "value", "nodeType": "VariableDeclaration", - "scope": 2320, + "scope": 2367, "src": "1320:13:19", "stateVariable": false, "storageLocation": "default", @@ -1107,7 +1151,7 @@ "typeString": "uint256" }, "typeName": { - "id": 2260, + "id": 2305, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1320:7:19", @@ -1121,10 +1165,10 @@ }, { "constant": false, - "id": 2263, + "id": 2308, "name": "data", "nodeType": "VariableDeclaration", - "scope": 2320, + "scope": 2367, "src": "1344:10:19", "stateVariable": false, "storageLocation": "default", @@ -1133,7 +1177,7 @@ "typeString": "bytes" }, "typeName": { - "id": 2262, + "id": 2307, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "1344:5:19", @@ -1147,10 +1191,10 @@ }, { "constant": false, - "id": 2265, + "id": 2310, "name": "operation", "nodeType": "VariableDeclaration", - "scope": 2320, + "scope": 2367, "src": "1365:24:19", "stateVariable": false, "storageLocation": "default", @@ -1160,7 +1204,7 @@ }, "typeName": { "contractScope": null, - "id": 2264, + "id": 2309, "name": "Enum.Operation", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 29, @@ -1175,10 +1219,10 @@ }, { "constant": false, - "id": 2267, + "id": 2312, "name": "nonce", "nodeType": "VariableDeclaration", - "scope": 2320, + "scope": 2367, "src": "1400:13:19", "stateVariable": false, "storageLocation": "default", @@ -1187,7 +1231,7 @@ "typeString": "uint256" }, "typeName": { - "id": 2266, + "id": 2311, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1400:7:19", @@ -1201,10 +1245,10 @@ }, { "constant": false, - "id": 2270, + "id": 2315, "name": "v", "nodeType": "VariableDeclaration", - "scope": 2320, + "scope": 2367, "src": "1423:9:19", "stateVariable": false, "storageLocation": "default", @@ -1214,7 +1258,7 @@ }, "typeName": { "baseType": { - "id": 2268, + "id": 2313, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "1423:5:19", @@ -1223,7 +1267,7 @@ "typeString": "uint8" } }, - "id": 2269, + "id": 2314, "length": null, "nodeType": "ArrayTypeName", "src": "1423:7:19", @@ -1237,10 +1281,10 @@ }, { "constant": false, - "id": 2273, + "id": 2318, "name": "r", "nodeType": "VariableDeclaration", - "scope": 2320, + "scope": 2367, "src": "1443:11:19", "stateVariable": false, "storageLocation": "default", @@ -1250,7 +1294,7 @@ }, "typeName": { "baseType": { - "id": 2271, + "id": 2316, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1443:7:19", @@ -1259,7 +1303,7 @@ "typeString": "bytes32" } }, - "id": 2272, + "id": 2317, "length": null, "nodeType": "ArrayTypeName", "src": "1443:9:19", @@ -1273,10 +1317,10 @@ }, { "constant": false, - "id": 2276, + "id": 2321, "name": "s", "nodeType": "VariableDeclaration", - "scope": 2320, + "scope": 2367, "src": "1465:11:19", "stateVariable": false, "storageLocation": "default", @@ -1286,7 +1330,7 @@ }, "typeName": { "baseType": { - "id": 2274, + "id": 2319, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1465:7:19", @@ -1295,7 +1339,7 @@ "typeString": "bytes32" } }, - "id": 2275, + "id": 2320, "length": null, "nodeType": "ArrayTypeName", "src": "1465:9:19", @@ -1312,35 +1356,35 @@ }, "payable": false, "returnParameters": { - "id": 2278, + "id": 2323, "nodeType": "ParameterList", "parameters": [], "src": "1502:0:19" }, - "scope": 2436, - "src": "1265:602:19", + "scope": 2485, + "src": "1265:667:19", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 2400, + "id": 2449, "nodeType": "Block", - "src": "1988:530:19", + "src": "2053:612:19", "statements": [ { "assignments": [ - 2335 + 2382 ], "declarations": [ { "constant": false, - "id": 2335, + "id": 2382, "name": "lastOwner", "nodeType": "VariableDeclaration", - "scope": 2401, - "src": "2050:17:19", + "scope": 2450, + "src": "2115:17:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1348,10 +1392,10 @@ "typeString": "address" }, "typeName": { - "id": 2334, + "id": 2381, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2050:7:19", + "src": "2115:7:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1361,21 +1405,21 @@ "visibility": "internal" } ], - "id": 2339, + "id": 2386, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", - "id": 2337, + "id": 2384, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2078:1:19", + "src": "2143:1:19", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -1391,20 +1435,20 @@ "typeString": "int_const 0" } ], - "id": 2336, + "id": 2383, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2070:7:19", + "src": "2135:7:19", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 2338, + "id": 2385, "isConstant": false, "isLValue": false, "isPure": true, @@ -1412,25 +1456,25 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2070:10:19", + "src": "2135:10:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", - "src": "2050:30:19" + "src": "2115:30:19" }, { "assignments": [], "declarations": [ { "constant": false, - "id": 2341, + "id": 2388, "name": "currentOwner", "nodeType": "VariableDeclaration", - "scope": 2401, - "src": "2090:20:19", + "scope": 2450, + "src": "2155:20:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1438,10 +1482,10 @@ "typeString": "address" }, "typeName": { - "id": 2340, + "id": 2387, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2090:7:19", + "src": "2155:7:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1451,21 +1495,21 @@ "visibility": "internal" } ], - "id": 2342, + "id": 2389, "initialValue": null, "nodeType": "VariableDeclarationStatement", - "src": "2090:20:19" + "src": "2155:20:19" }, { "assignments": [], "declarations": [ { "constant": false, - "id": 2344, + "id": 2391, "name": "i", "nodeType": "VariableDeclaration", - "scope": 2401, - "src": "2120:9:19", + "scope": 2450, + "src": "2185:9:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1473,10 +1517,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2343, + "id": 2390, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2120:7:19", + "src": "2185:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1486,23 +1530,23 @@ "visibility": "internal" } ], - "id": 2345, + "id": 2392, "initialValue": null, "nodeType": "VariableDeclarationStatement", - "src": "2120:9:19" + "src": "2185:9:19" }, { "assignments": [ - 2347 + 2394 ], "declarations": [ { "constant": false, - "id": 2347, + "id": 2394, "name": "threshold", "nodeType": "VariableDeclaration", - "scope": 2401, - "src": "2139:15:19", + "scope": 2450, + "src": "2204:15:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1510,10 +1554,10 @@ "typeString": "uint8" }, "typeName": { - "id": 2346, + "id": 2393, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "2139:5:19", + "src": "2204:5:19", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -1523,7 +1567,7 @@ "visibility": "internal" } ], - "id": 2353, + "id": 2400, "initialValue": { "argumentTypes": null, "arguments": [], @@ -1534,14 +1578,14 @@ "arguments": [ { "argumentTypes": null, - "id": 2349, + "id": 2396, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 717, - "src": "2170:7:19", + "referencedDeclaration": 727, + "src": "2235:7:19", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1100", + "typeIdentifier": "t_contract$_ModuleManager_$1118", "typeString": "contract ModuleManager" } } @@ -1549,22 +1593,22 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_ModuleManager_$1100", + "typeIdentifier": "t_contract$_ModuleManager_$1118", "typeString": "contract ModuleManager" } ], - "id": 2348, + "id": 2395, "name": "OwnerManager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1472, - "src": "2157:12:19", + "referencedDeclaration": 1504, + "src": "2222:12:19", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_OwnerManager_$1472_$", + "typeIdentifier": "t_type$_t_contract$_OwnerManager_$1504_$", "typeString": "type(contract OwnerManager)" } }, - "id": 2350, + "id": 2397, "isConstant": false, "isLValue": false, "isPure": false, @@ -1572,27 +1616,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2157:21:19", + "src": "2222:21:19", "typeDescriptions": { - "typeIdentifier": "t_contract$_OwnerManager_$1472", + "typeIdentifier": "t_contract$_OwnerManager_$1504", "typeString": "contract OwnerManager" } }, - "id": 2351, + "id": 2398, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "getThreshold", "nodeType": "MemberAccess", - "referencedDeclaration": 1408, - "src": "2157:34:19", + "referencedDeclaration": 1440, + "src": "2222:34:19", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$", "typeString": "function () view external returns (uint8)" } }, - "id": 2352, + "id": 2399, "isConstant": false, "isLValue": false, "isPure": false, @@ -1600,37 +1644,37 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2157:36:19", + "src": "2222:36:19", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "VariableDeclarationStatement", - "src": "2139:54:19" + "src": "2204:54:19" }, { "body": { - "id": 2398, + "id": 2447, "nodeType": "Block", - "src": "2277:235:19", + "src": "2342:317:19", "statements": [ { "expression": { "argumentTypes": null, - "id": 2377, + "id": 2424, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 2364, + "id": 2411, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2341, - "src": "2291:12:19", + "referencedDeclaration": 2388, + "src": "2356:12:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1643,12 +1687,12 @@ "arguments": [ { "argumentTypes": null, - "id": 2366, + "id": 2413, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2322, - "src": "2316:15:19", + "referencedDeclaration": 2369, + "src": "2381:15:19", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1658,26 +1702,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2367, + "id": 2414, "name": "v", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2325, - "src": "2333:1:19", + "referencedDeclaration": 2372, + "src": "2398:1:19", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr", "typeString": "uint8[] memory" } }, - "id": 2369, + "id": 2416, "indexExpression": { "argumentTypes": null, - "id": 2368, + "id": 2415, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2344, - "src": "2335:1:19", + "referencedDeclaration": 2391, + "src": "2400:1:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1688,7 +1732,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2333:4:19", + "src": "2398:4:19", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -1698,26 +1742,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2370, + "id": 2417, "name": "r", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2328, - "src": "2339:1:19", + "referencedDeclaration": 2375, + "src": "2404:1:19", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", "typeString": "bytes32[] memory" } }, - "id": 2372, + "id": 2419, "indexExpression": { "argumentTypes": null, - "id": 2371, + "id": 2418, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2344, - "src": "2341:1:19", + "referencedDeclaration": 2391, + "src": "2406:1:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1728,7 +1772,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2339:4:19", + "src": "2404:4:19", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1738,26 +1782,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2373, + "id": 2420, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2331, - "src": "2345:1:19", + "referencedDeclaration": 2378, + "src": "2410:1:19", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", "typeString": "bytes32[] memory" } }, - "id": 2375, + "id": 2422, "indexExpression": { "argumentTypes": null, - "id": 2374, + "id": 2421, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2344, - "src": "2347:1:19", + "referencedDeclaration": 2391, + "src": "2412:1:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1768,7 +1812,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2345:4:19", + "src": "2410:4:19", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1794,18 +1838,18 @@ "typeString": "bytes32" } ], - "id": 2365, + "id": 2412, "name": "ecrecover", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2590, - "src": "2306:9:19", + "referencedDeclaration": 2646, + "src": "2371:9:19", "typeDescriptions": { "typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$", "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)" } }, - "id": 2376, + "id": 2423, "isConstant": false, "isLValue": false, "isPure": false, @@ -1813,21 +1857,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2306:44:19", + "src": "2371:44:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2291:59:19", + "src": "2356:59:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 2378, + "id": 2425, "nodeType": "ExpressionStatement", - "src": "2291:59:19" + "src": "2356:59:19" }, { "expression": { @@ -1838,12 +1882,12 @@ "arguments": [ { "argumentTypes": null, - "id": 2384, + "id": 2431, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2341, - "src": "2402:12:19", + "referencedDeclaration": 2388, + "src": "2467:12:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1862,14 +1906,14 @@ "arguments": [ { "argumentTypes": null, - "id": 2381, + "id": 2428, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 717, - "src": "2385:7:19", + "referencedDeclaration": 727, + "src": "2450:7:19", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1100", + "typeIdentifier": "t_contract$_ModuleManager_$1118", "typeString": "contract ModuleManager" } } @@ -1877,22 +1921,22 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_ModuleManager_$1100", + "typeIdentifier": "t_contract$_ModuleManager_$1118", "typeString": "contract ModuleManager" } ], - "id": 2380, + "id": 2427, "name": "OwnerManager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1472, - "src": "2372:12:19", + "referencedDeclaration": 1504, + "src": "2437:12:19", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_OwnerManager_$1472_$", + "typeIdentifier": "t_type$_t_contract$_OwnerManager_$1504_$", "typeString": "type(contract OwnerManager)" } }, - "id": 2382, + "id": 2429, "isConstant": false, "isLValue": false, "isPure": false, @@ -1900,27 +1944,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2372:21:19", + "src": "2437:21:19", "typeDescriptions": { - "typeIdentifier": "t_contract$_OwnerManager_$1472", + "typeIdentifier": "t_contract$_OwnerManager_$1504", "typeString": "contract OwnerManager" } }, - "id": 2383, + "id": 2430, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "isOwner", "nodeType": "MemberAccess", - "referencedDeclaration": 1422, - "src": "2372:29:19", + "referencedDeclaration": 1454, + "src": "2437:29:19", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view external returns (bool)" } }, - "id": 2385, + "id": 2432, "isConstant": false, "isLValue": false, "isPure": false, @@ -1928,11 +1972,29 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2372:43:19", + "src": "2437:43:19", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "5369676e6174757265206e6f742070726f7669646564206279206f776e6572", + "id": 2433, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2482:33:19", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_09247dae670daab7cf1923d3334eea07c14df3c0a8f5233960935c63f47104a9", + "typeString": "literal_string \"Signature not provided by owner\"" + }, + "value": "Signature not provided by owner" } ], "expression": { @@ -1940,23 +2002,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_09247dae670daab7cf1923d3334eea07c14df3c0a8f5233960935c63f47104a9", + "typeString": "literal_string \"Signature not provided by owner\"" } ], - "id": 2379, + "id": 2426, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "2364:7:19", + "referencedDeclaration": 2658, + "src": "2429:7:19", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 2386, + "id": 2434, "isConstant": false, "isLValue": false, "isPure": false, @@ -1964,15 +2030,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2364:52:19", + "src": "2429:87:19", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2387, + "id": 2435, "nodeType": "ExpressionStatement", - "src": "2364:52:19" + "src": "2429:87:19" }, { "expression": { @@ -1984,19 +2050,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 2391, + "id": 2439, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 2389, + "id": 2437, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2341, - "src": "2438:12:19", + "referencedDeclaration": 2388, + "src": "2538:12:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2006,22 +2072,40 @@ "operator": ">", "rightExpression": { "argumentTypes": null, - "id": 2390, + "id": 2438, "name": "lastOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2335, - "src": "2453:9:19", + "referencedDeclaration": 2382, + "src": "2553:9:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2438:24:19", + "src": "2538:24:19", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "5369676e61747572657320617265206e6f74206f726465726564206279206f776e65722061646472657373", + "id": 2440, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2564:45:19", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_597a123a1bc14bc9690387ae0fec99721cc18eefa85fa2531a7593a762444235", + "typeString": "literal_string \"Signatures are not ordered by owner address\"" + }, + "value": "Signatures are not ordered by owner address" } ], "expression": { @@ -2029,23 +2113,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_597a123a1bc14bc9690387ae0fec99721cc18eefa85fa2531a7593a762444235", + "typeString": "literal_string \"Signatures are not ordered by owner address\"" } ], - "id": 2388, + "id": 2436, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "2430:7:19", + "referencedDeclaration": 2658, + "src": "2530:7:19", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 2392, + "id": 2441, "isConstant": false, "isLValue": false, "isPure": false, @@ -2053,32 +2141,32 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2430:33:19", + "src": "2530:80:19", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2393, + "id": 2442, "nodeType": "ExpressionStatement", - "src": "2430:33:19" + "src": "2530:80:19" }, { "expression": { "argumentTypes": null, - "id": 2396, + "id": 2445, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 2394, + "id": 2443, "name": "lastOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2335, - "src": "2477:9:19", + "referencedDeclaration": 2382, + "src": "2624:9:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2088,26 +2176,26 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 2395, + "id": 2444, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2341, - "src": "2489:12:19", + "referencedDeclaration": 2388, + "src": "2636:12:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2477:24:19", + "src": "2624:24:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 2397, + "id": 2446, "nodeType": "ExpressionStatement", - "src": "2477:24:19" + "src": "2624:24:19" } ] }, @@ -2117,19 +2205,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 2360, + "id": 2407, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 2358, + "id": 2405, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2344, - "src": "2257:1:19", + "referencedDeclaration": 2391, + "src": "2322:1:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2139,40 +2227,40 @@ "operator": "<", "rightExpression": { "argumentTypes": null, - "id": 2359, + "id": 2406, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2347, - "src": "2261:9:19", + "referencedDeclaration": 2394, + "src": "2326:9:19", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "src": "2257:13:19", + "src": "2322:13:19", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 2399, + "id": 2448, "initializationExpression": { "expression": { "argumentTypes": null, - "id": 2356, + "id": 2403, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 2354, + "id": 2401, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2344, - "src": "2250:1:19", + "referencedDeclaration": 2391, + "src": "2315:1:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2183,14 +2271,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "30", - "id": 2355, + "id": 2402, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2254:1:19", + "src": "2319:1:19", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -2198,20 +2286,20 @@ }, "value": "0" }, - "src": "2250:5:19", + "src": "2315:5:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 2357, + "id": 2404, "nodeType": "ExpressionStatement", - "src": "2250:5:19" + "src": "2315:5:19" }, "loopExpression": { "expression": { "argumentTypes": null, - "id": 2362, + "id": 2409, "isConstant": false, "isLValue": false, "isPure": false, @@ -2219,15 +2307,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "2272:3:19", + "src": "2337:3:19", "subExpression": { "argumentTypes": null, - "id": 2361, + "id": 2408, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2344, - "src": "2272:1:19", + "referencedDeclaration": 2391, + "src": "2337:1:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2238,17 +2326,17 @@ "typeString": "uint256" } }, - "id": 2363, + "id": 2410, "nodeType": "ExpressionStatement", - "src": "2272:3:19" + "src": "2337:3:19" }, "nodeType": "ForStatement", - "src": "2245:267:19" + "src": "2310:349:19" } ] }, "documentation": null, - "id": 2401, + "id": 2450, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -2256,16 +2344,16 @@ "name": "checkHash", "nodeType": "FunctionDefinition", "parameters": { - "id": 2332, + "id": 2379, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2322, + "id": 2369, "name": "transactionHash", "nodeType": "VariableDeclaration", - "scope": 2401, - "src": "1892:23:19", + "scope": 2450, + "src": "1957:23:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2273,10 +2361,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 2321, + "id": 2368, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "1892:7:19", + "src": "1957:7:19", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -2287,11 +2375,11 @@ }, { "constant": false, - "id": 2325, + "id": 2372, "name": "v", "nodeType": "VariableDeclaration", - "scope": 2401, - "src": "1917:9:19", + "scope": 2450, + "src": "1982:9:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2300,19 +2388,19 @@ }, "typeName": { "baseType": { - "id": 2323, + "id": 2370, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "1917:5:19", + "src": "1982:5:19", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "id": 2324, + "id": 2371, "length": null, "nodeType": "ArrayTypeName", - "src": "1917:7:19", + "src": "1982:7:19", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint8_$dyn_storage_ptr", "typeString": "uint8[]" @@ -2323,11 +2411,11 @@ }, { "constant": false, - "id": 2328, + "id": 2375, "name": "r", "nodeType": "VariableDeclaration", - "scope": 2401, - "src": "1928:11:19", + "scope": 2450, + "src": "1993:11:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2336,19 +2424,19 @@ }, "typeName": { "baseType": { - "id": 2326, + "id": 2373, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "1928:7:19", + "src": "1993:7:19", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "id": 2327, + "id": 2374, "length": null, "nodeType": "ArrayTypeName", - "src": "1928:9:19", + "src": "1993:9:19", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", "typeString": "bytes32[]" @@ -2359,11 +2447,11 @@ }, { "constant": false, - "id": 2331, + "id": 2378, "name": "s", "nodeType": "VariableDeclaration", - "scope": 2401, - "src": "1941:11:19", + "scope": 2450, + "src": "2006:11:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2372,19 +2460,19 @@ }, "typeName": { "baseType": { - "id": 2329, + "id": 2376, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "1941:7:19", + "src": "2006:7:19", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "id": 2330, + "id": 2377, "length": null, "nodeType": "ArrayTypeName", - "src": "1941:9:19", + "src": "2006:9:19", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", "typeString": "bytes32[]" @@ -2394,26 +2482,26 @@ "visibility": "internal" } ], - "src": "1891:62:19" + "src": "1956:62:19" }, "payable": false, "returnParameters": { - "id": 2333, + "id": 2380, "nodeType": "ParameterList", "parameters": [], - "src": "1988:0:19" + "src": "2053:0:19" }, - "scope": 2436, - "src": "1873:645:19", + "scope": 2485, + "src": "1938:727:19", "stateMutability": "view", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 2434, + "id": 2483, "nodeType": "Block", - "src": "3012:113:19", + "src": "3159:113:19", "statements": [ { "expression": { @@ -2428,14 +2516,14 @@ { "argumentTypes": null, "hexValue": "30783139", - "id": 2420, + "id": 2469, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3061:4:19", + "src": "3208:4:19", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_25_by_1", @@ -2451,20 +2539,20 @@ "typeString": "int_const 25" } ], - "id": 2419, + "id": 2468, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "3056:4:19", + "src": "3203:4:19", "typeDescriptions": { "typeIdentifier": "t_type$_t_bytes1_$", "typeString": "type(bytes1)" }, "typeName": "byte" }, - "id": 2421, + "id": 2470, "isConstant": false, "isLValue": false, "isPure": true, @@ -2472,7 +2560,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3056:10:19", + "src": "3203:10:19", "typeDescriptions": { "typeIdentifier": "t_bytes1", "typeString": "bytes1" @@ -2484,14 +2572,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 2423, + "id": 2472, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3073:1:19", + "src": "3220:1:19", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -2507,20 +2595,20 @@ "typeString": "int_const 0" } ], - "id": 2422, + "id": 2471, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "3068:4:19", + "src": "3215:4:19", "typeDescriptions": { "typeIdentifier": "t_type$_t_bytes1_$", "typeString": "type(bytes1)" }, "typeName": "byte" }, - "id": 2424, + "id": 2473, "isConstant": false, "isLValue": false, "isPure": true, @@ -2528,7 +2616,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3068:7:19", + "src": "3215:7:19", "typeDescriptions": { "typeIdentifier": "t_bytes1", "typeString": "bytes1" @@ -2536,25 +2624,25 @@ }, { "argumentTypes": null, - "id": 2425, + "id": 2474, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2649, - "src": "3077:4:19", + "referencedDeclaration": 2705, + "src": "3224:4:19", "typeDescriptions": { - "typeIdentifier": "t_contract$_StateChannelModule_$2436", + "typeIdentifier": "t_contract$_StateChannelModule_$2485", "typeString": "contract StateChannelModule" } }, { "argumentTypes": null, - "id": 2426, + "id": 2475, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2403, - "src": "3083:2:19", + "referencedDeclaration": 2452, + "src": "3230:2:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2562,12 +2650,12 @@ }, { "argumentTypes": null, - "id": 2427, + "id": 2476, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2405, - "src": "3087:5:19", + "referencedDeclaration": 2454, + "src": "3234:5:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2575,12 +2663,12 @@ }, { "argumentTypes": null, - "id": 2428, + "id": 2477, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2407, - "src": "3094:4:19", + "referencedDeclaration": 2456, + "src": "3241:4:19", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -2588,12 +2676,12 @@ }, { "argumentTypes": null, - "id": 2429, + "id": 2478, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2409, - "src": "3100:9:19", + "referencedDeclaration": 2458, + "src": "3247:9:19", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" @@ -2601,12 +2689,12 @@ }, { "argumentTypes": null, - "id": 2430, + "id": 2479, "name": "nonce", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2411, - "src": "3111:5:19", + "referencedDeclaration": 2460, + "src": "3258:5:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2624,7 +2712,7 @@ "typeString": "bytes1" }, { - "typeIdentifier": "t_contract$_StateChannelModule_$2436", + "typeIdentifier": "t_contract$_StateChannelModule_$2485", "typeString": "contract StateChannelModule" }, { @@ -2650,18 +2738,18 @@ ], "expression": { "argumentTypes": null, - "id": 2417, + "id": 2466, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2585, - "src": "3039:3:19", + "referencedDeclaration": 2641, + "src": "3186:3:19", "typeDescriptions": { "typeIdentifier": "t_magic_abi", "typeString": "abi" } }, - "id": 2418, + "id": 2467, "isConstant": false, "isLValue": false, "isPure": true, @@ -2669,13 +2757,13 @@ "memberName": "encodePacked", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "3039:16:19", + "src": "3186:16:19", "typeDescriptions": { "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)" } }, - "id": 2431, + "id": 2480, "isConstant": false, "isLValue": false, "isPure": false, @@ -2683,7 +2771,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3039:78:19", + "src": "3186:78:19", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -2697,18 +2785,18 @@ "typeString": "bytes memory" } ], - "id": 2416, + "id": 2465, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2592, - "src": "3029:9:19", + "referencedDeclaration": 2648, + "src": "3176:9:19", "typeDescriptions": { "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", "typeString": "function () pure returns (bytes32)" } }, - "id": 2432, + "id": 2481, "isConstant": false, "isLValue": false, "isPure": false, @@ -2716,21 +2804,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3029:89:19", + "src": "3176:89:19", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "functionReturnParameters": 2415, - "id": 2433, + "functionReturnParameters": 2464, + "id": 2482, "nodeType": "Return", - "src": "3022:96:19" + "src": "3169:96:19" } ] }, "documentation": "@dev Returns hash to be signed by owners.\n @param to Destination address.\n @param value Ether value.\n @param data Data payload.\n @param operation Operation type.\n @param nonce Transaction nonce.\n @return Transaction hash.", - "id": 2435, + "id": 2484, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -2738,16 +2826,16 @@ "name": "getTransactionHash", "nodeType": "FunctionDefinition", "parameters": { - "id": 2412, + "id": 2461, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2403, + "id": 2452, "name": "to", "nodeType": "VariableDeclaration", - "scope": 2435, - "src": "2833:10:19", + "scope": 2484, + "src": "2980:10:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2755,10 +2843,10 @@ "typeString": "address" }, "typeName": { - "id": 2402, + "id": 2451, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2833:7:19", + "src": "2980:7:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2769,11 +2857,11 @@ }, { "constant": false, - "id": 2405, + "id": 2454, "name": "value", "nodeType": "VariableDeclaration", - "scope": 2435, - "src": "2854:13:19", + "scope": 2484, + "src": "3001:13:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2781,10 +2869,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2404, + "id": 2453, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2854:7:19", + "src": "3001:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2795,11 +2883,11 @@ }, { "constant": false, - "id": 2407, + "id": 2456, "name": "data", "nodeType": "VariableDeclaration", - "scope": 2435, - "src": "2878:10:19", + "scope": 2484, + "src": "3025:10:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2807,10 +2895,10 @@ "typeString": "bytes" }, "typeName": { - "id": 2406, + "id": 2455, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "2878:5:19", + "src": "3025:5:19", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -2821,11 +2909,11 @@ }, { "constant": false, - "id": 2409, + "id": 2458, "name": "operation", "nodeType": "VariableDeclaration", - "scope": 2435, - "src": "2899:24:19", + "scope": 2484, + "src": "3046:24:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2834,11 +2922,11 @@ }, "typeName": { "contractScope": null, - "id": 2408, + "id": 2457, "name": "Enum.Operation", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 29, - "src": "2899:14:19", + "src": "3046:14:19", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" @@ -2849,11 +2937,11 @@ }, { "constant": false, - "id": 2411, + "id": 2460, "name": "nonce", "nodeType": "VariableDeclaration", - "scope": 2435, - "src": "2934:13:19", + "scope": 2484, + "src": "3081:13:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2861,10 +2949,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2410, + "id": 2459, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2934:7:19", + "src": "3081:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2874,20 +2962,20 @@ "visibility": "internal" } ], - "src": "2823:130:19" + "src": "2970:130:19" }, "payable": false, "returnParameters": { - "id": 2415, + "id": 2464, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2414, + "id": 2463, "name": "", "nodeType": "VariableDeclaration", - "scope": 2435, - "src": "2999:7:19", + "scope": 2484, + "src": "3146:7:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2895,10 +2983,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 2413, + "id": 2462, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "2999:7:19", + "src": "3146:7:19", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -2908,33 +2996,33 @@ "visibility": "internal" } ], - "src": "2998:9:19" + "src": "3145:9:19" }, - "scope": 2436, - "src": "2796:329:19", + "scope": 2485, + "src": "2943:329:19", "stateMutability": "view", "superFunction": null, "visibility": "public" } ], - "scope": 2437, - "src": "269:2858:19" + "scope": 2486, + "src": "269:3005:19" } ], - "src": "0:3128:19" + "src": "0:3275:19" }, "legacyAST": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/modules/StateChannelModule.sol", "exportedSymbols": { "StateChannelModule": [ - 2436 + 2485 ] }, - "id": 2437, + "id": 2486, "nodeType": "SourceUnit", "nodes": [ { - "id": 2236, + "id": 2281, "literals": [ "solidity", "0.4", @@ -2946,10 +3034,10 @@ { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Module.sol", "file": "../Module.sol", - "id": 2237, + "id": 2282, "nodeType": "ImportDirective", - "scope": 2437, - "sourceUnit": 751, + "scope": 2486, + "sourceUnit": 763, "src": "24:23:19", "symbolAliases": [], "unitAlias": "" @@ -2957,10 +3045,10 @@ { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/OwnerManager.sol", "file": "../OwnerManager.sol", - "id": 2238, + "id": 2283, "nodeType": "ImportDirective", - "scope": 2437, - "sourceUnit": 1473, + "scope": 2486, + "sourceUnit": 1505, "src": "48:29:19", "symbolAliases": [], "unitAlias": "" @@ -2971,45 +3059,45 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 2239, + "id": 2284, "name": "Module", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 750, + "referencedDeclaration": 762, "src": "300:6:19", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$750", + "typeIdentifier": "t_contract$_Module_$762", "typeString": "contract Module" } }, - "id": 2240, + "id": 2285, "nodeType": "InheritanceSpecifier", "src": "300:6:19" } ], "contractDependencies": [ - 652, - 750, - 1619 + 662, + 762, + 1654 ], "contractKind": "contract", "documentation": "@title Gnosis Safe State Module - A module that allows interaction with statechannels.\n @author Stefan George - \n @author Richard Meissner - ", "fullyImplemented": true, - "id": 2436, + "id": 2485, "linearizedBaseContracts": [ - 2436, - 750, - 652, - 1619 + 2485, + 762, + 662, + 1654 ], "name": "StateChannelModule", "nodeType": "ContractDefinition", "nodes": [ { "constant": true, - "id": 2243, + "id": 2288, "name": "NAME", "nodeType": "VariableDeclaration", - "scope": 2436, + "scope": 2485, "src": "314:52:19", "stateVariable": true, "storageLocation": "default", @@ -3018,7 +3106,7 @@ "typeString": "string" }, "typeName": { - "id": 2241, + "id": 2286, "name": "string", "nodeType": "ElementaryTypeName", "src": "314:6:19", @@ -3030,7 +3118,7 @@ "value": { "argumentTypes": null, "hexValue": "5374617465204368616e6e656c204d6f64756c65", - "id": 2242, + "id": 2287, "isConstant": false, "isLValue": false, "isPure": true, @@ -3049,10 +3137,10 @@ }, { "constant": true, - "id": 2246, + "id": 2291, "name": "VERSION", "nodeType": "VariableDeclaration", - "scope": 2436, + "scope": 2485, "src": "372:40:19", "stateVariable": true, "storageLocation": "default", @@ -3061,7 +3149,7 @@ "typeString": "string" }, "typeName": { - "id": 2244, + "id": 2289, "name": "string", "nodeType": "ElementaryTypeName", "src": "372:6:19", @@ -3073,7 +3161,7 @@ "value": { "argumentTypes": null, "hexValue": "302e302e31", - "id": 2245, + "id": 2290, "isConstant": false, "isLValue": false, "isPure": true, @@ -3092,10 +3180,10 @@ }, { "constant": false, - "id": 2250, + "id": 2295, "name": "isExecuted", "nodeType": "VariableDeclaration", - "scope": 2436, + "scope": 2485, "src": "510:43:19", "stateVariable": true, "storageLocation": "default", @@ -3104,9 +3192,9 @@ "typeString": "mapping(bytes32 => bool)" }, "typeName": { - "id": 2249, + "id": 2294, "keyType": { - "id": 2247, + "id": 2292, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "519:7:19", @@ -3122,7 +3210,7 @@ "typeString": "mapping(bytes32 => bool)" }, "valueType": { - "id": 2248, + "id": 2293, "name": "bool", "nodeType": "ElementaryTypeName", "src": "530:4:19", @@ -3137,7 +3225,7 @@ }, { "body": { - "id": 2256, + "id": 2301, "nodeType": "Block", "src": "637:29:19", "statements": [ @@ -3147,18 +3235,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 2253, + "id": 2298, "name": "setManager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 749, + "referencedDeclaration": 761, "src": "647:10:19", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()" } }, - "id": 2254, + "id": 2299, "isConstant": false, "isLValue": false, "isPure": false, @@ -3172,14 +3260,14 @@ "typeString": "tuple()" } }, - "id": 2255, + "id": 2300, "nodeType": "ExpressionStatement", "src": "647:12:19" } ] }, "documentation": "@dev Setup function sets manager", - "id": 2257, + "id": 2302, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -3187,19 +3275,19 @@ "name": "setup", "nodeType": "FunctionDefinition", "parameters": { - "id": 2251, + "id": 2296, "nodeType": "ParameterList", "parameters": [], "src": "615:2:19" }, "payable": false, "returnParameters": { - "id": 2252, + "id": 2297, "nodeType": "ParameterList", "parameters": [], "src": "637:0:19" }, - "scope": 2436, + "scope": 2485, "src": "601:65:19", "stateMutability": "nonpayable", "superFunction": null, @@ -3207,21 +3295,21 @@ }, { "body": { - "id": 2319, + "id": 2366, "nodeType": "Block", - "src": "1502:365:19", + "src": "1502:430:19", "statements": [ { "assignments": [ - 2280 + 2325 ], "declarations": [ { "constant": false, - "id": 2280, + "id": 2325, "name": "transactionHash", "nodeType": "VariableDeclaration", - "scope": 2320, + "scope": 2367, "src": "1512:23:19", "stateVariable": false, "storageLocation": "default", @@ -3230,7 +3318,7 @@ "typeString": "bytes32" }, "typeName": { - "id": 2279, + "id": 2324, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1512:7:19", @@ -3243,17 +3331,17 @@ "visibility": "internal" } ], - "id": 2288, + "id": 2333, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 2282, + "id": 2327, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2259, + "referencedDeclaration": 2304, "src": "1557:2:19", "typeDescriptions": { "typeIdentifier": "t_address", @@ -3262,11 +3350,11 @@ }, { "argumentTypes": null, - "id": 2283, + "id": 2328, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2261, + "referencedDeclaration": 2306, "src": "1561:5:19", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -3275,11 +3363,11 @@ }, { "argumentTypes": null, - "id": 2284, + "id": 2329, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2263, + "referencedDeclaration": 2308, "src": "1568:4:19", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", @@ -3288,11 +3376,11 @@ }, { "argumentTypes": null, - "id": 2285, + "id": 2330, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2265, + "referencedDeclaration": 2310, "src": "1574:9:19", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$29", @@ -3301,11 +3389,11 @@ }, { "argumentTypes": null, - "id": 2286, + "id": 2331, "name": "nonce", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2267, + "referencedDeclaration": 2312, "src": "1585:5:19", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -3336,18 +3424,18 @@ "typeString": "uint256" } ], - "id": 2281, + "id": 2326, "name": "getTransactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2435, + "referencedDeclaration": 2484, "src": "1538:18:19", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$_t_uint256_$returns$_t_bytes32_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256) view returns (bytes32)" } }, - "id": 2287, + "id": 2332, "isConstant": false, "isLValue": false, "isPure": false, @@ -3370,7 +3458,7 @@ "arguments": [ { "argumentTypes": null, - "id": 2293, + "id": 2338, "isConstant": false, "isLValue": false, "isPure": false, @@ -3383,25 +3471,25 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2290, + "id": 2335, "name": "isExecuted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2250, + "referencedDeclaration": 2295, "src": "1610:10:19", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" } }, - "id": 2292, + "id": 2337, "indexExpression": { "argumentTypes": null, - "id": 2291, + "id": 2336, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2280, + "referencedDeclaration": 2325, "src": "1621:15:19", "typeDescriptions": { "typeIdentifier": "t_bytes32", @@ -3423,6 +3511,24 @@ "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "5472616e73616374696f6e20616c7265616479206578656375746564", + "id": 2339, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1639:30:19", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_3c3f7cf602281cf7a98efd78d98ba46309975dadee18bcb57e640145699bd800", + "typeString": "literal_string \"Transaction already executed\"" + }, + "value": "Transaction already executed" } ], "expression": { @@ -3430,23 +3536,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_3c3f7cf602281cf7a98efd78d98ba46309975dadee18bcb57e640145699bd800", + "typeString": "literal_string \"Transaction already executed\"" } ], - "id": 2289, + "id": 2334, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, + "referencedDeclaration": 2658, "src": "1601:7:19", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 2294, + "id": 2340, "isConstant": false, "isLValue": false, "isPure": false, @@ -3454,15 +3564,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1601:37:19", + "src": "1601:69:19", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2295, + "id": 2341, "nodeType": "ExpressionStatement", - "src": "1601:37:19" + "src": "1601:69:19" }, { "expression": { @@ -3470,12 +3580,12 @@ "arguments": [ { "argumentTypes": null, - "id": 2297, + "id": 2343, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2280, - "src": "1658:15:19", + "referencedDeclaration": 2325, + "src": "1690:15:19", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -3483,12 +3593,12 @@ }, { "argumentTypes": null, - "id": 2298, + "id": 2344, "name": "v", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2270, - "src": "1675:1:19", + "referencedDeclaration": 2315, + "src": "1707:1:19", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr", "typeString": "uint8[] memory" @@ -3496,12 +3606,12 @@ }, { "argumentTypes": null, - "id": 2299, + "id": 2345, "name": "r", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2273, - "src": "1678:1:19", + "referencedDeclaration": 2318, + "src": "1710:1:19", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", "typeString": "bytes32[] memory" @@ -3509,12 +3619,12 @@ }, { "argumentTypes": null, - "id": 2300, + "id": 2346, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2276, - "src": "1681:1:19", + "referencedDeclaration": 2321, + "src": "1713:1:19", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", "typeString": "bytes32[] memory" @@ -3540,18 +3650,18 @@ "typeString": "bytes32[] memory" } ], - "id": 2296, + "id": 2342, "name": "checkHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2401, - "src": "1648:9:19", + "referencedDeclaration": 2450, + "src": "1680:9:19", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_array$_t_uint8_$dyn_memory_ptr_$_t_array$_t_bytes32_$dyn_memory_ptr_$_t_array$_t_bytes32_$dyn_memory_ptr_$returns$__$", "typeString": "function (bytes32,uint8[] memory,bytes32[] memory,bytes32[] memory) view" } }, - "id": 2301, + "id": 2347, "isConstant": false, "isLValue": false, "isPure": false, @@ -3559,20 +3669,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1648:35:19", + "src": "1680:35:19", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2302, + "id": 2348, "nodeType": "ExpressionStatement", - "src": "1648:35:19" + "src": "1680:35:19" }, { "expression": { "argumentTypes": null, - "id": 2307, + "id": 2353, "isConstant": false, "isLValue": false, "isPure": false, @@ -3581,26 +3691,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2303, + "id": 2349, "name": "isExecuted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2250, - "src": "1746:10:19", + "referencedDeclaration": 2295, + "src": "1778:10:19", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" } }, - "id": 2305, + "id": 2351, "indexExpression": { "argumentTypes": null, - "id": 2304, + "id": 2350, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2280, - "src": "1757:15:19", + "referencedDeclaration": 2325, + "src": "1789:15:19", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -3611,7 +3721,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1746:27:19", + "src": "1778:27:19", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3622,14 +3732,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 2306, + "id": 2352, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "1776:4:19", + "src": "1808:4:19", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -3637,15 +3747,15 @@ }, "value": "true" }, - "src": "1746:34:19", + "src": "1778:34:19", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 2308, + "id": 2354, "nodeType": "ExpressionStatement", - "src": "1746:34:19" + "src": "1778:34:19" }, { "expression": { @@ -3656,12 +3766,12 @@ "arguments": [ { "argumentTypes": null, - "id": 2312, + "id": 2358, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2259, - "src": "1832:2:19", + "referencedDeclaration": 2304, + "src": "1864:2:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3669,12 +3779,12 @@ }, { "argumentTypes": null, - "id": 2313, + "id": 2359, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2261, - "src": "1836:5:19", + "referencedDeclaration": 2306, + "src": "1868:5:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3682,12 +3792,12 @@ }, { "argumentTypes": null, - "id": 2314, + "id": 2360, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2263, - "src": "1843:4:19", + "referencedDeclaration": 2308, + "src": "1875:4:19", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -3695,12 +3805,12 @@ }, { "argumentTypes": null, - "id": 2315, + "id": 2361, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2265, - "src": "1849:9:19", + "referencedDeclaration": 2310, + "src": "1881:9:19", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" @@ -3728,32 +3838,32 @@ ], "expression": { "argumentTypes": null, - "id": 2310, + "id": 2356, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 717, - "src": "1798:7:19", + "referencedDeclaration": 727, + "src": "1830:7:19", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1100", + "typeIdentifier": "t_contract$_ModuleManager_$1118", "typeString": "contract ModuleManager" } }, - "id": 2311, + "id": 2357, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "execTransactionFromModule", "nodeType": "MemberAccess", - "referencedDeclaration": 927, - "src": "1798:33:19", + "referencedDeclaration": 945, + "src": "1830:33:19", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$returns$_t_bool_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation) external returns (bool)" } }, - "id": 2316, + "id": 2362, "isConstant": false, "isLValue": false, "isPure": false, @@ -3761,11 +3871,29 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1798:61:19", + "src": "1830:61:19", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "436f756c64206e6f742065786563757465207472616e73616374696f6e", + "id": 2363, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1893:31:19", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_b0a2f29e31cc28eee068c27ff93342fb8d9840dcad25c6f669ce8154844930c4", + "typeString": "literal_string \"Could not execute transaction\"" + }, + "value": "Could not execute transaction" } ], "expression": { @@ -3773,23 +3901,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_b0a2f29e31cc28eee068c27ff93342fb8d9840dcad25c6f669ce8154844930c4", + "typeString": "literal_string \"Could not execute transaction\"" } ], - "id": 2309, + "id": 2355, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "1790:7:19", + "referencedDeclaration": 2658, + "src": "1822:7:19", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 2317, + "id": 2364, "isConstant": false, "isLValue": false, "isPure": false, @@ -3797,20 +3929,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1790:70:19", + "src": "1822:103:19", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2318, + "id": 2365, "nodeType": "ExpressionStatement", - "src": "1790:70:19" + "src": "1822:103:19" } ] }, "documentation": "@dev Allows to execute a Safe transaction confirmed by required number of owners.\n @param to Destination address of Safe transaction.\n @param value Ether value of Safe transaction.\n @param data Data payload of Safe transaction.\n @param operation Operation type of Safe transaction.\n @param nonce Nonce used for this Safe transaction.\n @param v Array of signature V values sorted by owner addresses.\n @param r Array of signature R values sorted by owner addresses.\n @param s Array of signature S values sorted by owner addresses.", - "id": 2320, + "id": 2367, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -3818,15 +3950,15 @@ "name": "execTransaction", "nodeType": "FunctionDefinition", "parameters": { - "id": 2277, + "id": 2322, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2259, + "id": 2304, "name": "to", "nodeType": "VariableDeclaration", - "scope": 2320, + "scope": 2367, "src": "1299:10:19", "stateVariable": false, "storageLocation": "default", @@ -3835,7 +3967,7 @@ "typeString": "address" }, "typeName": { - "id": 2258, + "id": 2303, "name": "address", "nodeType": "ElementaryTypeName", "src": "1299:7:19", @@ -3849,10 +3981,10 @@ }, { "constant": false, - "id": 2261, + "id": 2306, "name": "value", "nodeType": "VariableDeclaration", - "scope": 2320, + "scope": 2367, "src": "1320:13:19", "stateVariable": false, "storageLocation": "default", @@ -3861,7 +3993,7 @@ "typeString": "uint256" }, "typeName": { - "id": 2260, + "id": 2305, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1320:7:19", @@ -3875,10 +4007,10 @@ }, { "constant": false, - "id": 2263, + "id": 2308, "name": "data", "nodeType": "VariableDeclaration", - "scope": 2320, + "scope": 2367, "src": "1344:10:19", "stateVariable": false, "storageLocation": "default", @@ -3887,7 +4019,7 @@ "typeString": "bytes" }, "typeName": { - "id": 2262, + "id": 2307, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "1344:5:19", @@ -3901,10 +4033,10 @@ }, { "constant": false, - "id": 2265, + "id": 2310, "name": "operation", "nodeType": "VariableDeclaration", - "scope": 2320, + "scope": 2367, "src": "1365:24:19", "stateVariable": false, "storageLocation": "default", @@ -3914,7 +4046,7 @@ }, "typeName": { "contractScope": null, - "id": 2264, + "id": 2309, "name": "Enum.Operation", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 29, @@ -3929,10 +4061,10 @@ }, { "constant": false, - "id": 2267, + "id": 2312, "name": "nonce", "nodeType": "VariableDeclaration", - "scope": 2320, + "scope": 2367, "src": "1400:13:19", "stateVariable": false, "storageLocation": "default", @@ -3941,7 +4073,7 @@ "typeString": "uint256" }, "typeName": { - "id": 2266, + "id": 2311, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1400:7:19", @@ -3955,10 +4087,10 @@ }, { "constant": false, - "id": 2270, + "id": 2315, "name": "v", "nodeType": "VariableDeclaration", - "scope": 2320, + "scope": 2367, "src": "1423:9:19", "stateVariable": false, "storageLocation": "default", @@ -3968,7 +4100,7 @@ }, "typeName": { "baseType": { - "id": 2268, + "id": 2313, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "1423:5:19", @@ -3977,7 +4109,7 @@ "typeString": "uint8" } }, - "id": 2269, + "id": 2314, "length": null, "nodeType": "ArrayTypeName", "src": "1423:7:19", @@ -3991,10 +4123,10 @@ }, { "constant": false, - "id": 2273, + "id": 2318, "name": "r", "nodeType": "VariableDeclaration", - "scope": 2320, + "scope": 2367, "src": "1443:11:19", "stateVariable": false, "storageLocation": "default", @@ -4004,7 +4136,7 @@ }, "typeName": { "baseType": { - "id": 2271, + "id": 2316, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1443:7:19", @@ -4013,7 +4145,7 @@ "typeString": "bytes32" } }, - "id": 2272, + "id": 2317, "length": null, "nodeType": "ArrayTypeName", "src": "1443:9:19", @@ -4027,10 +4159,10 @@ }, { "constant": false, - "id": 2276, + "id": 2321, "name": "s", "nodeType": "VariableDeclaration", - "scope": 2320, + "scope": 2367, "src": "1465:11:19", "stateVariable": false, "storageLocation": "default", @@ -4040,7 +4172,7 @@ }, "typeName": { "baseType": { - "id": 2274, + "id": 2319, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1465:7:19", @@ -4049,7 +4181,7 @@ "typeString": "bytes32" } }, - "id": 2275, + "id": 2320, "length": null, "nodeType": "ArrayTypeName", "src": "1465:9:19", @@ -4066,35 +4198,35 @@ }, "payable": false, "returnParameters": { - "id": 2278, + "id": 2323, "nodeType": "ParameterList", "parameters": [], "src": "1502:0:19" }, - "scope": 2436, - "src": "1265:602:19", + "scope": 2485, + "src": "1265:667:19", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 2400, + "id": 2449, "nodeType": "Block", - "src": "1988:530:19", + "src": "2053:612:19", "statements": [ { "assignments": [ - 2335 + 2382 ], "declarations": [ { "constant": false, - "id": 2335, + "id": 2382, "name": "lastOwner", "nodeType": "VariableDeclaration", - "scope": 2401, - "src": "2050:17:19", + "scope": 2450, + "src": "2115:17:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4102,10 +4234,10 @@ "typeString": "address" }, "typeName": { - "id": 2334, + "id": 2381, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2050:7:19", + "src": "2115:7:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4115,21 +4247,21 @@ "visibility": "internal" } ], - "id": 2339, + "id": 2386, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", - "id": 2337, + "id": 2384, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2078:1:19", + "src": "2143:1:19", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -4145,20 +4277,20 @@ "typeString": "int_const 0" } ], - "id": 2336, + "id": 2383, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2070:7:19", + "src": "2135:7:19", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 2338, + "id": 2385, "isConstant": false, "isLValue": false, "isPure": true, @@ -4166,25 +4298,25 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2070:10:19", + "src": "2135:10:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", - "src": "2050:30:19" + "src": "2115:30:19" }, { "assignments": [], "declarations": [ { "constant": false, - "id": 2341, + "id": 2388, "name": "currentOwner", "nodeType": "VariableDeclaration", - "scope": 2401, - "src": "2090:20:19", + "scope": 2450, + "src": "2155:20:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4192,10 +4324,10 @@ "typeString": "address" }, "typeName": { - "id": 2340, + "id": 2387, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2090:7:19", + "src": "2155:7:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4205,21 +4337,21 @@ "visibility": "internal" } ], - "id": 2342, + "id": 2389, "initialValue": null, "nodeType": "VariableDeclarationStatement", - "src": "2090:20:19" + "src": "2155:20:19" }, { "assignments": [], "declarations": [ { "constant": false, - "id": 2344, + "id": 2391, "name": "i", "nodeType": "VariableDeclaration", - "scope": 2401, - "src": "2120:9:19", + "scope": 2450, + "src": "2185:9:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4227,10 +4359,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2343, + "id": 2390, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2120:7:19", + "src": "2185:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4240,23 +4372,23 @@ "visibility": "internal" } ], - "id": 2345, + "id": 2392, "initialValue": null, "nodeType": "VariableDeclarationStatement", - "src": "2120:9:19" + "src": "2185:9:19" }, { "assignments": [ - 2347 + 2394 ], "declarations": [ { "constant": false, - "id": 2347, + "id": 2394, "name": "threshold", "nodeType": "VariableDeclaration", - "scope": 2401, - "src": "2139:15:19", + "scope": 2450, + "src": "2204:15:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4264,10 +4396,10 @@ "typeString": "uint8" }, "typeName": { - "id": 2346, + "id": 2393, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "2139:5:19", + "src": "2204:5:19", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -4277,7 +4409,7 @@ "visibility": "internal" } ], - "id": 2353, + "id": 2400, "initialValue": { "argumentTypes": null, "arguments": [], @@ -4288,14 +4420,14 @@ "arguments": [ { "argumentTypes": null, - "id": 2349, + "id": 2396, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 717, - "src": "2170:7:19", + "referencedDeclaration": 727, + "src": "2235:7:19", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1100", + "typeIdentifier": "t_contract$_ModuleManager_$1118", "typeString": "contract ModuleManager" } } @@ -4303,22 +4435,22 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_ModuleManager_$1100", + "typeIdentifier": "t_contract$_ModuleManager_$1118", "typeString": "contract ModuleManager" } ], - "id": 2348, + "id": 2395, "name": "OwnerManager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1472, - "src": "2157:12:19", + "referencedDeclaration": 1504, + "src": "2222:12:19", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_OwnerManager_$1472_$", + "typeIdentifier": "t_type$_t_contract$_OwnerManager_$1504_$", "typeString": "type(contract OwnerManager)" } }, - "id": 2350, + "id": 2397, "isConstant": false, "isLValue": false, "isPure": false, @@ -4326,27 +4458,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2157:21:19", + "src": "2222:21:19", "typeDescriptions": { - "typeIdentifier": "t_contract$_OwnerManager_$1472", + "typeIdentifier": "t_contract$_OwnerManager_$1504", "typeString": "contract OwnerManager" } }, - "id": 2351, + "id": 2398, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "getThreshold", "nodeType": "MemberAccess", - "referencedDeclaration": 1408, - "src": "2157:34:19", + "referencedDeclaration": 1440, + "src": "2222:34:19", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$", "typeString": "function () view external returns (uint8)" } }, - "id": 2352, + "id": 2399, "isConstant": false, "isLValue": false, "isPure": false, @@ -4354,37 +4486,37 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2157:36:19", + "src": "2222:36:19", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "VariableDeclarationStatement", - "src": "2139:54:19" + "src": "2204:54:19" }, { "body": { - "id": 2398, + "id": 2447, "nodeType": "Block", - "src": "2277:235:19", + "src": "2342:317:19", "statements": [ { "expression": { "argumentTypes": null, - "id": 2377, + "id": 2424, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 2364, + "id": 2411, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2341, - "src": "2291:12:19", + "referencedDeclaration": 2388, + "src": "2356:12:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4397,12 +4529,12 @@ "arguments": [ { "argumentTypes": null, - "id": 2366, + "id": 2413, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2322, - "src": "2316:15:19", + "referencedDeclaration": 2369, + "src": "2381:15:19", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -4412,26 +4544,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2367, + "id": 2414, "name": "v", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2325, - "src": "2333:1:19", + "referencedDeclaration": 2372, + "src": "2398:1:19", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr", "typeString": "uint8[] memory" } }, - "id": 2369, + "id": 2416, "indexExpression": { "argumentTypes": null, - "id": 2368, + "id": 2415, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2344, - "src": "2335:1:19", + "referencedDeclaration": 2391, + "src": "2400:1:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4442,7 +4574,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2333:4:19", + "src": "2398:4:19", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -4452,26 +4584,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2370, + "id": 2417, "name": "r", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2328, - "src": "2339:1:19", + "referencedDeclaration": 2375, + "src": "2404:1:19", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", "typeString": "bytes32[] memory" } }, - "id": 2372, + "id": 2419, "indexExpression": { "argumentTypes": null, - "id": 2371, + "id": 2418, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2344, - "src": "2341:1:19", + "referencedDeclaration": 2391, + "src": "2406:1:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4482,7 +4614,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2339:4:19", + "src": "2404:4:19", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -4492,26 +4624,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2373, + "id": 2420, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2331, - "src": "2345:1:19", + "referencedDeclaration": 2378, + "src": "2410:1:19", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", "typeString": "bytes32[] memory" } }, - "id": 2375, + "id": 2422, "indexExpression": { "argumentTypes": null, - "id": 2374, + "id": 2421, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2344, - "src": "2347:1:19", + "referencedDeclaration": 2391, + "src": "2412:1:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4522,7 +4654,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2345:4:19", + "src": "2410:4:19", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -4548,18 +4680,18 @@ "typeString": "bytes32" } ], - "id": 2365, + "id": 2412, "name": "ecrecover", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2590, - "src": "2306:9:19", + "referencedDeclaration": 2646, + "src": "2371:9:19", "typeDescriptions": { "typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$", "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)" } }, - "id": 2376, + "id": 2423, "isConstant": false, "isLValue": false, "isPure": false, @@ -4567,21 +4699,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2306:44:19", + "src": "2371:44:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2291:59:19", + "src": "2356:59:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 2378, + "id": 2425, "nodeType": "ExpressionStatement", - "src": "2291:59:19" + "src": "2356:59:19" }, { "expression": { @@ -4592,12 +4724,12 @@ "arguments": [ { "argumentTypes": null, - "id": 2384, + "id": 2431, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2341, - "src": "2402:12:19", + "referencedDeclaration": 2388, + "src": "2467:12:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4616,14 +4748,14 @@ "arguments": [ { "argumentTypes": null, - "id": 2381, + "id": 2428, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 717, - "src": "2385:7:19", + "referencedDeclaration": 727, + "src": "2450:7:19", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1100", + "typeIdentifier": "t_contract$_ModuleManager_$1118", "typeString": "contract ModuleManager" } } @@ -4631,22 +4763,22 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_ModuleManager_$1100", + "typeIdentifier": "t_contract$_ModuleManager_$1118", "typeString": "contract ModuleManager" } ], - "id": 2380, + "id": 2427, "name": "OwnerManager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1472, - "src": "2372:12:19", + "referencedDeclaration": 1504, + "src": "2437:12:19", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_OwnerManager_$1472_$", + "typeIdentifier": "t_type$_t_contract$_OwnerManager_$1504_$", "typeString": "type(contract OwnerManager)" } }, - "id": 2382, + "id": 2429, "isConstant": false, "isLValue": false, "isPure": false, @@ -4654,27 +4786,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2372:21:19", + "src": "2437:21:19", "typeDescriptions": { - "typeIdentifier": "t_contract$_OwnerManager_$1472", + "typeIdentifier": "t_contract$_OwnerManager_$1504", "typeString": "contract OwnerManager" } }, - "id": 2383, + "id": 2430, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "isOwner", "nodeType": "MemberAccess", - "referencedDeclaration": 1422, - "src": "2372:29:19", + "referencedDeclaration": 1454, + "src": "2437:29:19", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view external returns (bool)" } }, - "id": 2385, + "id": 2432, "isConstant": false, "isLValue": false, "isPure": false, @@ -4682,11 +4814,29 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2372:43:19", + "src": "2437:43:19", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "5369676e6174757265206e6f742070726f7669646564206279206f776e6572", + "id": 2433, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2482:33:19", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_09247dae670daab7cf1923d3334eea07c14df3c0a8f5233960935c63f47104a9", + "typeString": "literal_string \"Signature not provided by owner\"" + }, + "value": "Signature not provided by owner" } ], "expression": { @@ -4694,23 +4844,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_09247dae670daab7cf1923d3334eea07c14df3c0a8f5233960935c63f47104a9", + "typeString": "literal_string \"Signature not provided by owner\"" } ], - "id": 2379, + "id": 2426, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "2364:7:19", + "referencedDeclaration": 2658, + "src": "2429:7:19", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 2386, + "id": 2434, "isConstant": false, "isLValue": false, "isPure": false, @@ -4718,15 +4872,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2364:52:19", + "src": "2429:87:19", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2387, + "id": 2435, "nodeType": "ExpressionStatement", - "src": "2364:52:19" + "src": "2429:87:19" }, { "expression": { @@ -4738,19 +4892,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 2391, + "id": 2439, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 2389, + "id": 2437, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2341, - "src": "2438:12:19", + "referencedDeclaration": 2388, + "src": "2538:12:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4760,22 +4914,40 @@ "operator": ">", "rightExpression": { "argumentTypes": null, - "id": 2390, + "id": 2438, "name": "lastOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2335, - "src": "2453:9:19", + "referencedDeclaration": 2382, + "src": "2553:9:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2438:24:19", + "src": "2538:24:19", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "5369676e61747572657320617265206e6f74206f726465726564206279206f776e65722061646472657373", + "id": 2440, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2564:45:19", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_597a123a1bc14bc9690387ae0fec99721cc18eefa85fa2531a7593a762444235", + "typeString": "literal_string \"Signatures are not ordered by owner address\"" + }, + "value": "Signatures are not ordered by owner address" } ], "expression": { @@ -4783,23 +4955,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_597a123a1bc14bc9690387ae0fec99721cc18eefa85fa2531a7593a762444235", + "typeString": "literal_string \"Signatures are not ordered by owner address\"" } ], - "id": 2388, + "id": 2436, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "2430:7:19", + "referencedDeclaration": 2658, + "src": "2530:7:19", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 2392, + "id": 2441, "isConstant": false, "isLValue": false, "isPure": false, @@ -4807,32 +4983,32 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2430:33:19", + "src": "2530:80:19", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2393, + "id": 2442, "nodeType": "ExpressionStatement", - "src": "2430:33:19" + "src": "2530:80:19" }, { "expression": { "argumentTypes": null, - "id": 2396, + "id": 2445, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 2394, + "id": 2443, "name": "lastOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2335, - "src": "2477:9:19", + "referencedDeclaration": 2382, + "src": "2624:9:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4842,26 +5018,26 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 2395, + "id": 2444, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2341, - "src": "2489:12:19", + "referencedDeclaration": 2388, + "src": "2636:12:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2477:24:19", + "src": "2624:24:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 2397, + "id": 2446, "nodeType": "ExpressionStatement", - "src": "2477:24:19" + "src": "2624:24:19" } ] }, @@ -4871,19 +5047,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 2360, + "id": 2407, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 2358, + "id": 2405, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2344, - "src": "2257:1:19", + "referencedDeclaration": 2391, + "src": "2322:1:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4893,40 +5069,40 @@ "operator": "<", "rightExpression": { "argumentTypes": null, - "id": 2359, + "id": 2406, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2347, - "src": "2261:9:19", + "referencedDeclaration": 2394, + "src": "2326:9:19", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "src": "2257:13:19", + "src": "2322:13:19", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 2399, + "id": 2448, "initializationExpression": { "expression": { "argumentTypes": null, - "id": 2356, + "id": 2403, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 2354, + "id": 2401, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2344, - "src": "2250:1:19", + "referencedDeclaration": 2391, + "src": "2315:1:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4937,14 +5113,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "30", - "id": 2355, + "id": 2402, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2254:1:19", + "src": "2319:1:19", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -4952,20 +5128,20 @@ }, "value": "0" }, - "src": "2250:5:19", + "src": "2315:5:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 2357, + "id": 2404, "nodeType": "ExpressionStatement", - "src": "2250:5:19" + "src": "2315:5:19" }, "loopExpression": { "expression": { "argumentTypes": null, - "id": 2362, + "id": 2409, "isConstant": false, "isLValue": false, "isPure": false, @@ -4973,15 +5149,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "2272:3:19", + "src": "2337:3:19", "subExpression": { "argumentTypes": null, - "id": 2361, + "id": 2408, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2344, - "src": "2272:1:19", + "referencedDeclaration": 2391, + "src": "2337:1:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4992,17 +5168,17 @@ "typeString": "uint256" } }, - "id": 2363, + "id": 2410, "nodeType": "ExpressionStatement", - "src": "2272:3:19" + "src": "2337:3:19" }, "nodeType": "ForStatement", - "src": "2245:267:19" + "src": "2310:349:19" } ] }, "documentation": null, - "id": 2401, + "id": 2450, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -5010,16 +5186,16 @@ "name": "checkHash", "nodeType": "FunctionDefinition", "parameters": { - "id": 2332, + "id": 2379, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2322, + "id": 2369, "name": "transactionHash", "nodeType": "VariableDeclaration", - "scope": 2401, - "src": "1892:23:19", + "scope": 2450, + "src": "1957:23:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5027,10 +5203,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 2321, + "id": 2368, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "1892:7:19", + "src": "1957:7:19", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -5041,11 +5217,11 @@ }, { "constant": false, - "id": 2325, + "id": 2372, "name": "v", "nodeType": "VariableDeclaration", - "scope": 2401, - "src": "1917:9:19", + "scope": 2450, + "src": "1982:9:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5054,19 +5230,19 @@ }, "typeName": { "baseType": { - "id": 2323, + "id": 2370, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "1917:5:19", + "src": "1982:5:19", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "id": 2324, + "id": 2371, "length": null, "nodeType": "ArrayTypeName", - "src": "1917:7:19", + "src": "1982:7:19", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint8_$dyn_storage_ptr", "typeString": "uint8[]" @@ -5077,11 +5253,11 @@ }, { "constant": false, - "id": 2328, + "id": 2375, "name": "r", "nodeType": "VariableDeclaration", - "scope": 2401, - "src": "1928:11:19", + "scope": 2450, + "src": "1993:11:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5090,19 +5266,19 @@ }, "typeName": { "baseType": { - "id": 2326, + "id": 2373, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "1928:7:19", + "src": "1993:7:19", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "id": 2327, + "id": 2374, "length": null, "nodeType": "ArrayTypeName", - "src": "1928:9:19", + "src": "1993:9:19", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", "typeString": "bytes32[]" @@ -5113,11 +5289,11 @@ }, { "constant": false, - "id": 2331, + "id": 2378, "name": "s", "nodeType": "VariableDeclaration", - "scope": 2401, - "src": "1941:11:19", + "scope": 2450, + "src": "2006:11:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5126,19 +5302,19 @@ }, "typeName": { "baseType": { - "id": 2329, + "id": 2376, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "1941:7:19", + "src": "2006:7:19", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "id": 2330, + "id": 2377, "length": null, "nodeType": "ArrayTypeName", - "src": "1941:9:19", + "src": "2006:9:19", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", "typeString": "bytes32[]" @@ -5148,26 +5324,26 @@ "visibility": "internal" } ], - "src": "1891:62:19" + "src": "1956:62:19" }, "payable": false, "returnParameters": { - "id": 2333, + "id": 2380, "nodeType": "ParameterList", "parameters": [], - "src": "1988:0:19" + "src": "2053:0:19" }, - "scope": 2436, - "src": "1873:645:19", + "scope": 2485, + "src": "1938:727:19", "stateMutability": "view", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 2434, + "id": 2483, "nodeType": "Block", - "src": "3012:113:19", + "src": "3159:113:19", "statements": [ { "expression": { @@ -5182,14 +5358,14 @@ { "argumentTypes": null, "hexValue": "30783139", - "id": 2420, + "id": 2469, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3061:4:19", + "src": "3208:4:19", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_25_by_1", @@ -5205,20 +5381,20 @@ "typeString": "int_const 25" } ], - "id": 2419, + "id": 2468, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "3056:4:19", + "src": "3203:4:19", "typeDescriptions": { "typeIdentifier": "t_type$_t_bytes1_$", "typeString": "type(bytes1)" }, "typeName": "byte" }, - "id": 2421, + "id": 2470, "isConstant": false, "isLValue": false, "isPure": true, @@ -5226,7 +5402,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3056:10:19", + "src": "3203:10:19", "typeDescriptions": { "typeIdentifier": "t_bytes1", "typeString": "bytes1" @@ -5238,14 +5414,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 2423, + "id": 2472, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3073:1:19", + "src": "3220:1:19", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -5261,20 +5437,20 @@ "typeString": "int_const 0" } ], - "id": 2422, + "id": 2471, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "3068:4:19", + "src": "3215:4:19", "typeDescriptions": { "typeIdentifier": "t_type$_t_bytes1_$", "typeString": "type(bytes1)" }, "typeName": "byte" }, - "id": 2424, + "id": 2473, "isConstant": false, "isLValue": false, "isPure": true, @@ -5282,7 +5458,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3068:7:19", + "src": "3215:7:19", "typeDescriptions": { "typeIdentifier": "t_bytes1", "typeString": "bytes1" @@ -5290,25 +5466,25 @@ }, { "argumentTypes": null, - "id": 2425, + "id": 2474, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2649, - "src": "3077:4:19", + "referencedDeclaration": 2705, + "src": "3224:4:19", "typeDescriptions": { - "typeIdentifier": "t_contract$_StateChannelModule_$2436", + "typeIdentifier": "t_contract$_StateChannelModule_$2485", "typeString": "contract StateChannelModule" } }, { "argumentTypes": null, - "id": 2426, + "id": 2475, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2403, - "src": "3083:2:19", + "referencedDeclaration": 2452, + "src": "3230:2:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5316,12 +5492,12 @@ }, { "argumentTypes": null, - "id": 2427, + "id": 2476, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2405, - "src": "3087:5:19", + "referencedDeclaration": 2454, + "src": "3234:5:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5329,12 +5505,12 @@ }, { "argumentTypes": null, - "id": 2428, + "id": 2477, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2407, - "src": "3094:4:19", + "referencedDeclaration": 2456, + "src": "3241:4:19", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -5342,12 +5518,12 @@ }, { "argumentTypes": null, - "id": 2429, + "id": 2478, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2409, - "src": "3100:9:19", + "referencedDeclaration": 2458, + "src": "3247:9:19", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" @@ -5355,12 +5531,12 @@ }, { "argumentTypes": null, - "id": 2430, + "id": 2479, "name": "nonce", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2411, - "src": "3111:5:19", + "referencedDeclaration": 2460, + "src": "3258:5:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5378,7 +5554,7 @@ "typeString": "bytes1" }, { - "typeIdentifier": "t_contract$_StateChannelModule_$2436", + "typeIdentifier": "t_contract$_StateChannelModule_$2485", "typeString": "contract StateChannelModule" }, { @@ -5404,18 +5580,18 @@ ], "expression": { "argumentTypes": null, - "id": 2417, + "id": 2466, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2585, - "src": "3039:3:19", + "referencedDeclaration": 2641, + "src": "3186:3:19", "typeDescriptions": { "typeIdentifier": "t_magic_abi", "typeString": "abi" } }, - "id": 2418, + "id": 2467, "isConstant": false, "isLValue": false, "isPure": true, @@ -5423,13 +5599,13 @@ "memberName": "encodePacked", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "3039:16:19", + "src": "3186:16:19", "typeDescriptions": { "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)" } }, - "id": 2431, + "id": 2480, "isConstant": false, "isLValue": false, "isPure": false, @@ -5437,7 +5613,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3039:78:19", + "src": "3186:78:19", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -5451,18 +5627,18 @@ "typeString": "bytes memory" } ], - "id": 2416, + "id": 2465, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2592, - "src": "3029:9:19", + "referencedDeclaration": 2648, + "src": "3176:9:19", "typeDescriptions": { "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", "typeString": "function () pure returns (bytes32)" } }, - "id": 2432, + "id": 2481, "isConstant": false, "isLValue": false, "isPure": false, @@ -5470,21 +5646,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3029:89:19", + "src": "3176:89:19", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "functionReturnParameters": 2415, - "id": 2433, + "functionReturnParameters": 2464, + "id": 2482, "nodeType": "Return", - "src": "3022:96:19" + "src": "3169:96:19" } ] }, "documentation": "@dev Returns hash to be signed by owners.\n @param to Destination address.\n @param value Ether value.\n @param data Data payload.\n @param operation Operation type.\n @param nonce Transaction nonce.\n @return Transaction hash.", - "id": 2435, + "id": 2484, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -5492,16 +5668,16 @@ "name": "getTransactionHash", "nodeType": "FunctionDefinition", "parameters": { - "id": 2412, + "id": 2461, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2403, + "id": 2452, "name": "to", "nodeType": "VariableDeclaration", - "scope": 2435, - "src": "2833:10:19", + "scope": 2484, + "src": "2980:10:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5509,10 +5685,10 @@ "typeString": "address" }, "typeName": { - "id": 2402, + "id": 2451, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2833:7:19", + "src": "2980:7:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5523,11 +5699,11 @@ }, { "constant": false, - "id": 2405, + "id": 2454, "name": "value", "nodeType": "VariableDeclaration", - "scope": 2435, - "src": "2854:13:19", + "scope": 2484, + "src": "3001:13:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5535,10 +5711,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2404, + "id": 2453, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2854:7:19", + "src": "3001:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5549,11 +5725,11 @@ }, { "constant": false, - "id": 2407, + "id": 2456, "name": "data", "nodeType": "VariableDeclaration", - "scope": 2435, - "src": "2878:10:19", + "scope": 2484, + "src": "3025:10:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5561,10 +5737,10 @@ "typeString": "bytes" }, "typeName": { - "id": 2406, + "id": 2455, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "2878:5:19", + "src": "3025:5:19", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -5575,11 +5751,11 @@ }, { "constant": false, - "id": 2409, + "id": 2458, "name": "operation", "nodeType": "VariableDeclaration", - "scope": 2435, - "src": "2899:24:19", + "scope": 2484, + "src": "3046:24:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5588,11 +5764,11 @@ }, "typeName": { "contractScope": null, - "id": 2408, + "id": 2457, "name": "Enum.Operation", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 29, - "src": "2899:14:19", + "src": "3046:14:19", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" @@ -5603,11 +5779,11 @@ }, { "constant": false, - "id": 2411, + "id": 2460, "name": "nonce", "nodeType": "VariableDeclaration", - "scope": 2435, - "src": "2934:13:19", + "scope": 2484, + "src": "3081:13:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5615,10 +5791,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2410, + "id": 2459, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2934:7:19", + "src": "3081:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5628,20 +5804,20 @@ "visibility": "internal" } ], - "src": "2823:130:19" + "src": "2970:130:19" }, "payable": false, "returnParameters": { - "id": 2415, + "id": 2464, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2414, + "id": 2463, "name": "", "nodeType": "VariableDeclaration", - "scope": 2435, - "src": "2999:7:19", + "scope": 2484, + "src": "3146:7:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5649,10 +5825,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 2413, + "id": 2462, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "2999:7:19", + "src": "3146:7:19", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -5662,20 +5838,20 @@ "visibility": "internal" } ], - "src": "2998:9:19" + "src": "3145:9:19" }, - "scope": 2436, - "src": "2796:329:19", + "scope": 2485, + "src": "2943:329:19", "stateMutability": "view", "superFunction": null, "visibility": "public" } ], - "scope": 2437, - "src": "269:2858:19" + "scope": 2486, + "src": "269:3005:19" } ], - "src": "0:3128:19" + "src": "0:3275:19" }, "compiler": { "name": "solc", @@ -5685,22 +5861,16 @@ "4": { "events": {}, "links": {}, - "address": "0x8790f40ca24d228e6b81870eea3a67f4dc607035", - "transactionHash": "0x6ddc49abc9c794831925c1069990a2074a9700e60084596eef8e43a16c226be2" - }, - "1527316019334": { - "events": {}, - "links": {}, - "address": "0x529daa14f15a5933ca1eccb5ddc077bb4c5c3e1e", - "transactionHash": "0x22f672e547fdb05f8c0c62f8f442864b8f3b650302c22409a90cb7f64adb6fd6" + "address": "0x150afab1d4c9deb45b9009244eed9ba852f9f34c", + "transactionHash": "0x2f4a4207220d01673bdb674fd6631d370dc249066687c8c5d09d04312e8a3840" }, "1527420696956": { "events": {}, "links": {}, - "address": "0xef54fbda842be606286a8cfa51632312bc605b7d", - "transactionHash": "0x7f30a995aef0c0cf18b0ec902dde55e53b6ffd35610b06b23136ca628e430373" + "address": "0x36548eaaea06b7d2c55d596cc9ba1ecd4867e97c", + "transactionHash": "0xad5ee4c64c0071c994cfd5dfd5158880ef6449ca7dd8fde4e8c262501758aa4c" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-27T11:31:46.242Z" + "updatedAt": "2018-05-28T06:08:59.474Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/WhitelistModule.json b/safe-contracts/build/contracts/WhitelistModule.json index dc006576..e852e85b 100644 --- a/safe-contracts/build/contracts/WhitelistModule.json +++ b/safe-contracts/build/contracts/WhitelistModule.json @@ -146,24 +146,24 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50610c78806100206000396000f300608060405260043610610099576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632f2f3be11461009e5780633af32abf14610149578063481c6a75146101a45780637de7edef146101fb5780638ab1d6811461023e578063a3f4df7e14610281578063bd5b853b14610311578063e43252d714610377578063ffa1ad74146103ba575b600080fd5b3480156100aa57600080fd5b5061012f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505061044a565b604051808215151515815260200191505060405180910390f35b34801561015557600080fd5b5061018a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061073d565b604051808215151515815260200191505060405180910390f35b3480156101b057600080fd5b506101b961075d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561020757600080fd5b5061023c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610783565b005b34801561024a57600080fd5b5061027f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610848565b005b34801561028d57600080fd5b50610296610957565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102d65780820151818401526020810190506102bb565b50505050905090810190601f1680156103035780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561031d57600080fd5b5061037560048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050610990565b005b34801561038357600080fd5b506103b8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a53565b005b3480156103c657600080fd5b506103cf610b89565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561040f5780820151818401526020810190506103f4565b50505050905090810190601f16801561043c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f54bf6e336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561050957600080fd5b505af115801561051d573d6000803e3d6000fd5b505050506040513d602081101561053357600080fd5b8101908080519060200190929190505050151561054f57600080fd5b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156105a757600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a785858560006040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018060200183600281111561066157fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b838110156106a1578082015181840152602081019050610686565b50505050905090810190601f1680156106ce5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b1580156106f057600080fd5b505af1158015610704573d6000803e3d6000fd5b505050506040513d602081101561071a57600080fd5b8101908080519060200190929190505050151561073657600080fd5b9392505050565b60026020528060005260406000206000915054906101000a900460ff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156107df57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561080557600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156108a457600080fd5b600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156108fc57600080fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6040805190810160405280601081526020017f57686974656c697374204d6f64756c650000000000000000000000000000000081525081565b60008061099b610bc2565b600091505b8251821015610a4e5782828151811015156109b757fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff16141515156109e957600080fd5b6001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555081806001019250506109a0565b505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610aaf57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515610ad557600080fd5b600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515610b2e57600080fd5b6001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610c0957600080fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505600a165627a7a72305820a2e4acc18c7392c4cdfa06bb162c1c255b8fd38cb3756ecc9215b556928a15c10029", - "deployedBytecode": "0x608060405260043610610099576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632f2f3be11461009e5780633af32abf14610149578063481c6a75146101a45780637de7edef146101fb5780638ab1d6811461023e578063a3f4df7e14610281578063bd5b853b14610311578063e43252d714610377578063ffa1ad74146103ba575b600080fd5b3480156100aa57600080fd5b5061012f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505061044a565b604051808215151515815260200191505060405180910390f35b34801561015557600080fd5b5061018a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061073d565b604051808215151515815260200191505060405180910390f35b3480156101b057600080fd5b506101b961075d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561020757600080fd5b5061023c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610783565b005b34801561024a57600080fd5b5061027f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610848565b005b34801561028d57600080fd5b50610296610957565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102d65780820151818401526020810190506102bb565b50505050905090810190601f1680156103035780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561031d57600080fd5b5061037560048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050610990565b005b34801561038357600080fd5b506103b8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a53565b005b3480156103c657600080fd5b506103cf610b89565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561040f5780820151818401526020810190506103f4565b50505050905090810190601f16801561043c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f54bf6e336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561050957600080fd5b505af115801561051d573d6000803e3d6000fd5b505050506040513d602081101561053357600080fd5b8101908080519060200190929190505050151561054f57600080fd5b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156105a757600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a785858560006040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018060200183600281111561066157fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b838110156106a1578082015181840152602081019050610686565b50505050905090810190601f1680156106ce5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b1580156106f057600080fd5b505af1158015610704573d6000803e3d6000fd5b505050506040513d602081101561071a57600080fd5b8101908080519060200190929190505050151561073657600080fd5b9392505050565b60026020528060005260406000206000915054906101000a900460ff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156107df57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561080557600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156108a457600080fd5b600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156108fc57600080fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6040805190810160405280601081526020017f57686974656c697374204d6f64756c650000000000000000000000000000000081525081565b60008061099b610bc2565b600091505b8251821015610a4e5782828151811015156109b757fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff16141515156109e957600080fd5b6001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555081806001019250506109a0565b505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610aaf57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515610ad557600080fd5b600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515610b2e57600080fd5b6001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610c0957600080fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505600a165627a7a72305820a2e4acc18c7392c4cdfa06bb162c1c255b8fd38cb3756ecc9215b556928a15c10029", - "sourceMap": "289:1968:20:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;289:1968:20;;;;;;;", - "deployedSourceMap": "289:1968:20:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1864:391;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1864:391:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;498:46;;8:9:-1;5:2;;;30:1;27;20:12;5:2;498:46:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;262:28:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;262:28:7;;;;;;;;;;;;;;;;;;;;;;;;;;;626:208:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;626:208:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;1438:172:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1438:172:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;331:48;;8:9:-1;5:2;;;30:1;27;20:12;5:2;331:48:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;331:48:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;667:270;;8:9:-1;5:2;;;30:1;27;20:12;5:2;667:270:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1086:198;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1086:198:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;385:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;385:40:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;385:40:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1864:391;1963:4;2093:7;;;;;;;;;;;2080:29;;;2110:10;2080:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2080:41:20;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2080:41:20;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2080:41:20;;;;;;;;;;;;;;;;2072:50;;;;;;;;2140:13;:17;2154:2;2140:17;;;;;;;;;;;;;;;;;;;;;;;;;2132:26;;;;;;;;2176:7;;;;;;;;;;;:33;;;2210:2;2214:5;2221:4;2227:19;2176:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;2176:71:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2176:71:20;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2176:71:20;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2176:71:20;;;;;;;;;;;;;;;;2168:80;;;;;;;;1864:391;;;;;:::o;498:46::-;;;;;;;;;;;;;;;;;;;;;;:::o;262:28:7:-;;;;;;;;;;;;;:::o;626:208:5:-;359:7:7;;;;;;;;;;;337:30;;:10;:30;;;329:39;;;;;;;;791:1:5;776:11;:16;;;;768:25;;;;;;;;816:11;803:10;;:24;;;;;;;;;;;;;;;;;;626:208;:::o;1438:172:20:-;359:7:7;;;;;;;;;;;337:30;;:10;:30;;;329:39;;;;;;;;1540:13:20;:22;1554:7;1540:22;;;;;;;;;;;;;;;;;;;;;;;;;1532:31;;;;;;;;1598:5;1573:13;:22;1587:7;1573:22;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;1438:172;:::o;331:48::-;;;;;;;;;;;;;;;;;;;;:::o;667:270::-;758:9;813:15;731:12;:10;:12::i;:::-;770:1;758:13;;753:178;777:8;:15;773:1;:19;753:178;;;831:8;840:1;831:11;;;;;;;;;;;;;;;;;;813:29;;875:1;864:7;:12;;;;856:21;;;;;;;;916:4;891:13;:22;905:7;891:22;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;794:3;;;;;;;753:178;;;667:270;;;:::o;1086:198::-;359:7:7;;;;;;;;;;;337:30;;:10;:30;;;329:39;;;;;;;;1194:1:20;1183:7;:12;;;;1175:21;;;;;;;;1215:13;:22;1229:7;1215:22;;;;;;;;;;;;;;;;;;;;;;;;;1214:23;1206:32;;;;;;;;1273:4;1248:13;:22;1262:7;1248:22;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;1086:198;:::o;385:40::-;;;;;;;;;;;;;;;;;;;;:::o;392:268:7:-;606:1;594:7;;;;;;;;;;;586:21;;;578:30;;;;;;;;642:10;618:7;;:35;;;;;;;;;;;;;;;;;;392:268::o", - "source": "pragma solidity 0.4.24;\nimport \"../Enum.sol\";\nimport \"../Module.sol\";\nimport \"../ModuleManager.sol\";\nimport \"../OwnerManager.sol\";\n\n\n/// @title Whitelist Module - Allows to execute transactions to whitelisted addresses without confirmations.\n/// @author Stefan George - \ncontract WhitelistModule is Module {\n\n string public constant NAME = \"Whitelist Module\";\n string public constant VERSION = \"0.0.1\";\n\n // isWhitelisted mapping maps destination address to boolean.\n mapping (address => bool) public isWhitelisted;\n\n /// @dev Setup function sets initial storage of contract.\n /// @param accounts List of whitelisted accounts.\n function setup(address[] accounts)\n public\n {\n setManager();\n for (uint256 i = 0; i < accounts.length; i++) {\n address account = accounts[i];\n require(account != 0);\n isWhitelisted[account] = true;\n }\n }\n\n /// @dev Allows to add destination to whitelist. This can only be done via a Safe transaction.\n /// @param account Destination address.\n function addToWhitelist(address account)\n public\n authorized\n {\n require(account != 0);\n require(!isWhitelisted[account]);\n isWhitelisted[account] = true;\n }\n\n /// @dev Allows to remove destination from whitelist. This can only be done via a Safe transaction.\n /// @param account Destination address.\n function removeFromWhitelist(address account)\n public\n authorized\n {\n require(isWhitelisted[account]);\n isWhitelisted[account] = false;\n }\n\n /// @dev Returns if Safe transaction is to a whitelisted destination.\n /// @param to Whitelisted destination address.\n /// @param value Not checked.\n /// @param data Not checked.\n /// @return Returns if transaction can be executed.\n function executeWhitelisted(address to, uint256 value, bytes data)\n public\n returns (bool)\n {\n // Only Safe owners are allowed to execute transactions to whitelisted accounts.\n require(OwnerManager(manager).isOwner(msg.sender));\n require(isWhitelisted[to]);\n require(manager.execTransactionFromModule(to, value, data, Enum.Operation.Call));\n }\n}\n", + "bytecode": "0x608060405234801561001057600080fd5b50611248806100206000396000f300608060405260043610610099576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632f2f3be11461009e5780633af32abf14610149578063481c6a75146101a45780637de7edef146101fb5780638ab1d6811461023e578063a3f4df7e14610281578063bd5b853b14610311578063e43252d714610377578063ffa1ad74146103ba575b600080fd5b3480156100aa57600080fd5b5061012f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505061044a565b604051808215151515815260200191505060405180910390f35b34801561015557600080fd5b5061018a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506108c4565b604051808215151515815260200191505060405180910390f35b3480156101b057600080fd5b506101b96108e4565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561020757600080fd5b5061023c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061090a565b005b34801561024a57600080fd5b5061027f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610aed565b005b34801561028d57600080fd5b50610296610cf4565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102d65780820151818401526020810190506102bb565b50505050905090810190601f1680156103035780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561031d57600080fd5b5061037560048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050610d2d565b005b34801561038357600080fd5b506103b8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e59565b005b3480156103c657600080fd5b506103cf6110f0565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561040f5780820151818401526020810190506103f4565b50505050905090810190601f16801561043c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f54bf6e336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561050957600080fd5b505af115801561051d573d6000803e3d6000fd5b505050506040513d602081101561053357600080fd5b810190808051906020019092919050505015156105de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f4d6574686f642063616e206f6e6c792062652063616c6c656420627920616e2081526020017f6f776e657200000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156106c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f546172676574206163636f756e74206973206e6f742077686974656c6973746581526020017f640000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a785858560006040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018060200183600281111561077f57fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b838110156107bf5780820151818401526020810190506107a4565b50505050905090810190601f1680156107ec5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b15801561080e57600080fd5b505af1158015610822573d6000803e3d6000fd5b505050506040513d602081101561083857600080fd5b810190808051906020019092919050505015156108bd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f436f756c64206e6f742065786563757465207472616e73616374696f6e00000081525060200191505060405180910390fd5b9392505050565b60026020528060005260406000206000915054906101000a900460ff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156109f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d206d81526020017f616e61676572000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515610aaa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f496e76616c6964206d617374657220636f707920616464726573732070726f7681526020017f696465640000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610bd8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d206d81526020017f616e61676572000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515610c99576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f4163636f756e74206973206e6f742077686974656c697374656400000000000081525060200191505060405180910390fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6040805190810160405280601081526020017f57686974656c697374204d6f64756c650000000000000000000000000000000081525081565b600080610d38611129565b600091505b8251821015610e54578282815181101515610d5457fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff1614151515610def576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f496e76616c6964206163636f756e742070726f7669646564000000000000000081525060200191505060405180910390fd5b6001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508180600101925050610d3d565b505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610f44576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d206d81526020017f616e61676572000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515610fd3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f496e76616c6964206163636f756e742070726f7669646564000000000000000081525060200191505060405180910390fd5b600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515611095576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f4163636f756e7420697320616c72656164792077686974656c6973746564000081525060200191505060405180910390fd5b6001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156111d9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4d616e616765722068617320616c7265616479206265656e207365740000000081525060200191505060405180910390fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505600a165627a7a72305820f1cf02fadc29a305d77859a993b36d76fd1e81179c7d76dcd7c94ab25793e5ae0029", + "deployedBytecode": "0x608060405260043610610099576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632f2f3be11461009e5780633af32abf14610149578063481c6a75146101a45780637de7edef146101fb5780638ab1d6811461023e578063a3f4df7e14610281578063bd5b853b14610311578063e43252d714610377578063ffa1ad74146103ba575b600080fd5b3480156100aa57600080fd5b5061012f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505061044a565b604051808215151515815260200191505060405180910390f35b34801561015557600080fd5b5061018a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506108c4565b604051808215151515815260200191505060405180910390f35b3480156101b057600080fd5b506101b96108e4565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561020757600080fd5b5061023c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061090a565b005b34801561024a57600080fd5b5061027f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610aed565b005b34801561028d57600080fd5b50610296610cf4565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102d65780820151818401526020810190506102bb565b50505050905090810190601f1680156103035780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561031d57600080fd5b5061037560048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050610d2d565b005b34801561038357600080fd5b506103b8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e59565b005b3480156103c657600080fd5b506103cf6110f0565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561040f5780820151818401526020810190506103f4565b50505050905090810190601f16801561043c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f54bf6e336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561050957600080fd5b505af115801561051d573d6000803e3d6000fd5b505050506040513d602081101561053357600080fd5b810190808051906020019092919050505015156105de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f4d6574686f642063616e206f6e6c792062652063616c6c656420627920616e2081526020017f6f776e657200000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156106c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f546172676574206163636f756e74206973206e6f742077686974656c6973746581526020017f640000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a785858560006040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018060200183600281111561077f57fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b838110156107bf5780820151818401526020810190506107a4565b50505050905090810190601f1680156107ec5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b15801561080e57600080fd5b505af1158015610822573d6000803e3d6000fd5b505050506040513d602081101561083857600080fd5b810190808051906020019092919050505015156108bd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f436f756c64206e6f742065786563757465207472616e73616374696f6e00000081525060200191505060405180910390fd5b9392505050565b60026020528060005260406000206000915054906101000a900460ff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156109f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d206d81526020017f616e61676572000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515610aaa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f496e76616c6964206d617374657220636f707920616464726573732070726f7681526020017f696465640000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610bd8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d206d81526020017f616e61676572000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515610c99576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f4163636f756e74206973206e6f742077686974656c697374656400000000000081525060200191505060405180910390fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6040805190810160405280601081526020017f57686974656c697374204d6f64756c650000000000000000000000000000000081525081565b600080610d38611129565b600091505b8251821015610e54578282815181101515610d5457fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff1614151515610def576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f496e76616c6964206163636f756e742070726f7669646564000000000000000081525060200191505060405180910390fd5b6001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508180600101925050610d3d565b505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610f44576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d206d81526020017f616e61676572000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515610fd3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f496e76616c6964206163636f756e742070726f7669646564000000000000000081525060200191505060405180910390fd5b600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515611095576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f4163636f756e7420697320616c72656164792077686974656c6973746564000081525060200191505060405180910390fd5b6001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156111d9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4d616e616765722068617320616c7265616479206265656e207365740000000081525060200191505060405180910390fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505600a165627a7a72305820f1cf02fadc29a305d77859a993b36d76fd1e81179c7d76dcd7c94ab25793e5ae0029", + "sourceMap": "289:2199:20:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;289:2199:20;;;;;;;", + "deployedSourceMap": "289:2199:20:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1984:502;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1984:502:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;498:46;;8:9:-1;5:2;;;30:1;27;20:12;5:2;498:46:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;262:28:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;262:28:7;;;;;;;;;;;;;;;;;;;;;;;;;;;626:248:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;626:248:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;1528:202:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1528:202:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;331:48;;8:9:-1;5:2;;;30:1;27;20:12;5:2;331:48:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;331:48:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;667:298;;8:9:-1;5:2;;;30:1;27;20:12;5:2;667:298:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1114:260;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1114:260:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;385:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;385:40:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;385:40:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1984:502;2083:4;2213:7;;;;;;;;;;;2200:29;;;2230:10;2200:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2200:41:20;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2200:41:20;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2200:41:20;;;;;;;;;;;;;;;;2192:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2301:13;:17;2315:2;2301:17;;;;;;;;;;;;;;;;;;;;;;;;;2293:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2374:7;;;;;;;;;;;:33;;;2408:2;2412:5;2419:4;2425:19;2374:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;2374:71:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2374:71:20;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2374:71:20;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2374:71:20;;;;;;;;;;;;;;;;2366:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1984:502;;;;;:::o;498:46::-;;;;;;;;;;;;;;;;;;;;;;:::o;262:28:7:-;;;;;;;;;;;;;:::o;626:248:5:-;359:7:7;;;;;;;;;;;337:30;;:10;:30;;;329:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;791:1:5;776:11;:16;;;;768:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;856:11;843:10;;:24;;;;;;;;;;;;;;;;;;626:248;:::o;1528:202:20:-;359:7:7;;;;;;;;;;;337:30;;:10;:30;;;329:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1630:13:20;:22;1644:7;1630:22;;;;;;;;;;;;;;;;;;;;;;;;;1622:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1718:5;1693:13;:22;1707:7;1693:22;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;1528:202;:::o;331:48::-;;;;;;;;;;;;;;;;;;;;:::o;667:298::-;758:9;813:15;731:12;:10;:12::i;:::-;770:1;758:13;;753:206;777:8;:15;773:1;:19;753:206;;;831:8;840:1;831:11;;;;;;;;;;;;;;;;;;813:29;;875:1;864:7;:12;;;;856:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;944:4;919:13;:22;933:7;919:22;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;794:3;;;;;;;753:206;;;667:298;;;:::o;1114:260::-;359:7:7;;;;;;;;;;;337:30;;:10;:30;;;329:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1222:1:20;1211:7;:12;;;;1203:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1271:13;:22;1285:7;1271:22;;;;;;;;;;;;;;;;;;;;;;;;;1270:23;1262:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1363:4;1338:13;:22;1352:7;1338:22;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;1114:260;:::o;385:40::-;;;;;;;;;;;;;;;;;;;;:::o;434:300:7:-;648:1;636:7;;;;;;;;;;;628:21;;;620:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;716:10;692:7;;:35;;;;;;;;;;;;;;;;;;434:300::o", + "source": "pragma solidity 0.4.24;\nimport \"../Enum.sol\";\nimport \"../Module.sol\";\nimport \"../ModuleManager.sol\";\nimport \"../OwnerManager.sol\";\n\n\n/// @title Whitelist Module - Allows to execute transactions to whitelisted addresses without confirmations.\n/// @author Stefan George - \ncontract WhitelistModule is Module {\n\n string public constant NAME = \"Whitelist Module\";\n string public constant VERSION = \"0.0.1\";\n\n // isWhitelisted mapping maps destination address to boolean.\n mapping (address => bool) public isWhitelisted;\n\n /// @dev Setup function sets initial storage of contract.\n /// @param accounts List of whitelisted accounts.\n function setup(address[] accounts)\n public\n {\n setManager();\n for (uint256 i = 0; i < accounts.length; i++) {\n address account = accounts[i];\n require(account != 0, \"Invalid account provided\");\n isWhitelisted[account] = true;\n }\n }\n\n /// @dev Allows to add destination to whitelist. This can only be done via a Safe transaction.\n /// @param account Destination address.\n function addToWhitelist(address account)\n public\n authorized\n {\n require(account != 0, \"Invalid account provided\");\n require(!isWhitelisted[account], \"Account is already whitelisted\");\n isWhitelisted[account] = true;\n }\n\n /// @dev Allows to remove destination from whitelist. This can only be done via a Safe transaction.\n /// @param account Destination address.\n function removeFromWhitelist(address account)\n public\n authorized\n {\n require(isWhitelisted[account], \"Account is not whitelisted\");\n isWhitelisted[account] = false;\n }\n\n /// @dev Returns if Safe transaction is to a whitelisted destination.\n /// @param to Whitelisted destination address.\n /// @param value Not checked.\n /// @param data Not checked.\n /// @return Returns if transaction can be executed.\n function executeWhitelisted(address to, uint256 value, bytes data)\n public\n returns (bool)\n {\n // Only Safe owners are allowed to execute transactions to whitelisted accounts.\n require(OwnerManager(manager).isOwner(msg.sender), \"Method can only be called by an owner\");\n require(isWhitelisted[to], \"Target account is not whitelisted\");\n require(manager.execTransactionFromModule(to, value, data, Enum.Operation.Call), \"Could not execute transaction\");\n }\n}\n", "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/modules/WhitelistModule.sol", "ast": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/modules/WhitelistModule.sol", "exportedSymbols": { "WhitelistModule": [ - 2583 + 2639 ] }, - "id": 2584, + "id": 2640, "nodeType": "SourceUnit", "nodes": [ { - "id": 2438, + "id": 2487, "literals": [ "solidity", "0.4", @@ -175,9 +175,9 @@ { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Enum.sol", "file": "../Enum.sol", - "id": 2439, + "id": 2488, "nodeType": "ImportDirective", - "scope": 2584, + "scope": 2640, "sourceUnit": 31, "src": "24:21:20", "symbolAliases": [], @@ -186,10 +186,10 @@ { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Module.sol", "file": "../Module.sol", - "id": 2440, + "id": 2489, "nodeType": "ImportDirective", - "scope": 2584, - "sourceUnit": 751, + "scope": 2640, + "sourceUnit": 763, "src": "46:23:20", "symbolAliases": [], "unitAlias": "" @@ -197,10 +197,10 @@ { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/ModuleManager.sol", "file": "../ModuleManager.sol", - "id": 2441, + "id": 2490, "nodeType": "ImportDirective", - "scope": 2584, - "sourceUnit": 1101, + "scope": 2640, + "sourceUnit": 1119, "src": "70:30:20", "symbolAliases": [], "unitAlias": "" @@ -208,10 +208,10 @@ { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/OwnerManager.sol", "file": "../OwnerManager.sol", - "id": 2442, + "id": 2491, "nodeType": "ImportDirective", - "scope": 2584, - "sourceUnit": 1473, + "scope": 2640, + "sourceUnit": 1505, "src": "101:29:20", "symbolAliases": [], "unitAlias": "" @@ -222,45 +222,45 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 2443, + "id": 2492, "name": "Module", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 750, + "referencedDeclaration": 762, "src": "317:6:20", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$750", + "typeIdentifier": "t_contract$_Module_$762", "typeString": "contract Module" } }, - "id": 2444, + "id": 2493, "nodeType": "InheritanceSpecifier", "src": "317:6:20" } ], "contractDependencies": [ - 652, - 750, - 1619 + 662, + 762, + 1654 ], "contractKind": "contract", "documentation": "@title Whitelist Module - Allows to execute transactions to whitelisted addresses without confirmations.\n @author Stefan George - ", "fullyImplemented": true, - "id": 2583, + "id": 2639, "linearizedBaseContracts": [ - 2583, - 750, - 652, - 1619 + 2639, + 762, + 662, + 1654 ], "name": "WhitelistModule", "nodeType": "ContractDefinition", "nodes": [ { "constant": true, - "id": 2447, + "id": 2496, "name": "NAME", "nodeType": "VariableDeclaration", - "scope": 2583, + "scope": 2639, "src": "331:48:20", "stateVariable": true, "storageLocation": "default", @@ -269,7 +269,7 @@ "typeString": "string" }, "typeName": { - "id": 2445, + "id": 2494, "name": "string", "nodeType": "ElementaryTypeName", "src": "331:6:20", @@ -281,7 +281,7 @@ "value": { "argumentTypes": null, "hexValue": "57686974656c697374204d6f64756c65", - "id": 2446, + "id": 2495, "isConstant": false, "isLValue": false, "isPure": true, @@ -300,10 +300,10 @@ }, { "constant": true, - "id": 2450, + "id": 2499, "name": "VERSION", "nodeType": "VariableDeclaration", - "scope": 2583, + "scope": 2639, "src": "385:40:20", "stateVariable": true, "storageLocation": "default", @@ -312,7 +312,7 @@ "typeString": "string" }, "typeName": { - "id": 2448, + "id": 2497, "name": "string", "nodeType": "ElementaryTypeName", "src": "385:6:20", @@ -324,7 +324,7 @@ "value": { "argumentTypes": null, "hexValue": "302e302e31", - "id": 2449, + "id": 2498, "isConstant": false, "isLValue": false, "isPure": true, @@ -343,10 +343,10 @@ }, { "constant": false, - "id": 2454, + "id": 2503, "name": "isWhitelisted", "nodeType": "VariableDeclaration", - "scope": 2583, + "scope": 2639, "src": "498:46:20", "stateVariable": true, "storageLocation": "default", @@ -355,9 +355,9 @@ "typeString": "mapping(address => bool)" }, "typeName": { - "id": 2453, + "id": 2502, "keyType": { - "id": 2451, + "id": 2500, "name": "address", "nodeType": "ElementaryTypeName", "src": "507:7:20", @@ -373,7 +373,7 @@ "typeString": "mapping(address => bool)" }, "valueType": { - "id": 2452, + "id": 2501, "name": "bool", "nodeType": "ElementaryTypeName", "src": "518:4:20", @@ -388,9 +388,9 @@ }, { "body": { - "id": 2494, + "id": 2544, "nodeType": "Block", - "src": "721:216:20", + "src": "721:244:20", "statements": [ { "expression": { @@ -398,18 +398,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 2460, + "id": 2509, "name": "setManager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 749, + "referencedDeclaration": 761, "src": "731:10:20", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()" } }, - "id": 2461, + "id": 2510, "isConstant": false, "isLValue": false, "isPure": false, @@ -423,27 +423,27 @@ "typeString": "tuple()" } }, - "id": 2462, + "id": 2511, "nodeType": "ExpressionStatement", "src": "731:12:20" }, { "body": { - "id": 2492, + "id": 2542, "nodeType": "Block", - "src": "799:132:20", + "src": "799:160:20", "statements": [ { "assignments": [ - 2475 + 2524 ], "declarations": [ { "constant": false, - "id": 2475, + "id": 2524, "name": "account", "nodeType": "VariableDeclaration", - "scope": 2495, + "scope": 2545, "src": "813:15:20", "stateVariable": false, "storageLocation": "default", @@ -452,7 +452,7 @@ "typeString": "address" }, "typeName": { - "id": 2474, + "id": 2523, "name": "address", "nodeType": "ElementaryTypeName", "src": "813:7:20", @@ -465,30 +465,30 @@ "visibility": "internal" } ], - "id": 2479, + "id": 2528, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2476, + "id": 2525, "name": "accounts", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2457, + "referencedDeclaration": 2506, "src": "831:8:20", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 2478, + "id": 2527, "indexExpression": { "argumentTypes": null, - "id": 2477, + "id": 2526, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2464, + "referencedDeclaration": 2513, "src": "840:1:20", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -519,18 +519,18 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 2483, + "id": 2532, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 2481, + "id": 2530, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2475, + "referencedDeclaration": 2524, "src": "864:7:20", "typeDescriptions": { "typeIdentifier": "t_address", @@ -542,7 +542,7 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 2482, + "id": 2531, "isConstant": false, "isLValue": false, "isPure": true, @@ -562,6 +562,24 @@ "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "496e76616c6964206163636f756e742070726f7669646564", + "id": 2533, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "878:26:20", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_da3a197794c99763c55550690a7eddbab5a672fb560947793aaf405a2b5f9490", + "typeString": "literal_string \"Invalid account provided\"" + }, + "value": "Invalid account provided" } ], "expression": { @@ -569,23 +587,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_da3a197794c99763c55550690a7eddbab5a672fb560947793aaf405a2b5f9490", + "typeString": "literal_string \"Invalid account provided\"" } ], - "id": 2480, + "id": 2529, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, + "referencedDeclaration": 2658, "src": "856:7:20", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 2484, + "id": 2534, "isConstant": false, "isLValue": false, "isPure": false, @@ -593,20 +615,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "856:21:20", + "src": "856:49:20", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2485, + "id": 2535, "nodeType": "ExpressionStatement", - "src": "856:21:20" + "src": "856:49:20" }, { "expression": { "argumentTypes": null, - "id": 2490, + "id": 2540, "isConstant": false, "isLValue": false, "isPure": false, @@ -615,26 +637,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2486, + "id": 2536, "name": "isWhitelisted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2454, - "src": "891:13:20", + "referencedDeclaration": 2503, + "src": "919:13:20", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 2488, + "id": 2538, "indexExpression": { "argumentTypes": null, - "id": 2487, + "id": 2537, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2475, - "src": "905:7:20", + "referencedDeclaration": 2524, + "src": "933:7:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -645,7 +667,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "891:22:20", + "src": "919:22:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -656,14 +678,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 2489, + "id": 2539, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "916:4:20", + "src": "944:4:20", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -671,15 +693,15 @@ }, "value": "true" }, - "src": "891:29:20", + "src": "919:29:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 2491, + "id": 2541, "nodeType": "ExpressionStatement", - "src": "891:29:20" + "src": "919:29:20" } ] }, @@ -689,18 +711,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 2470, + "id": 2519, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 2467, + "id": 2516, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2464, + "referencedDeclaration": 2513, "src": "773:1:20", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -713,18 +735,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2468, + "id": 2517, "name": "accounts", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2457, + "referencedDeclaration": 2506, "src": "777:8:20", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 2469, + "id": 2518, "isConstant": false, "isLValue": false, "isPure": false, @@ -744,18 +766,18 @@ "typeString": "bool" } }, - "id": 2493, + "id": 2543, "initializationExpression": { "assignments": [ - 2464 + 2513 ], "declarations": [ { "constant": false, - "id": 2464, + "id": 2513, "name": "i", "nodeType": "VariableDeclaration", - "scope": 2495, + "scope": 2545, "src": "758:9:20", "stateVariable": false, "storageLocation": "default", @@ -764,7 +786,7 @@ "typeString": "uint256" }, "typeName": { - "id": 2463, + "id": 2512, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "758:7:20", @@ -777,11 +799,11 @@ "visibility": "internal" } ], - "id": 2466, + "id": 2515, "initialValue": { "argumentTypes": null, "hexValue": "30", - "id": 2465, + "id": 2514, "isConstant": false, "isLValue": false, "isPure": true, @@ -802,7 +824,7 @@ "loopExpression": { "expression": { "argumentTypes": null, - "id": 2472, + "id": 2521, "isConstant": false, "isLValue": false, "isPure": false, @@ -813,11 +835,11 @@ "src": "794:3:20", "subExpression": { "argumentTypes": null, - "id": 2471, + "id": 2520, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2464, + "referencedDeclaration": 2513, "src": "794:1:20", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -829,17 +851,17 @@ "typeString": "uint256" } }, - "id": 2473, + "id": 2522, "nodeType": "ExpressionStatement", "src": "794:3:20" }, "nodeType": "ForStatement", - "src": "753:178:20" + "src": "753:206:20" } ] }, "documentation": "@dev Setup function sets initial storage of contract.\n @param accounts List of whitelisted accounts.", - "id": 2495, + "id": 2545, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -847,15 +869,15 @@ "name": "setup", "nodeType": "FunctionDefinition", "parameters": { - "id": 2458, + "id": 2507, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2457, + "id": 2506, "name": "accounts", "nodeType": "VariableDeclaration", - "scope": 2495, + "scope": 2545, "src": "682:18:20", "stateVariable": false, "storageLocation": "default", @@ -865,7 +887,7 @@ }, "typeName": { "baseType": { - "id": 2455, + "id": 2504, "name": "address", "nodeType": "ElementaryTypeName", "src": "682:7:20", @@ -874,7 +896,7 @@ "typeString": "address" } }, - "id": 2456, + "id": 2505, "length": null, "nodeType": "ArrayTypeName", "src": "682:9:20", @@ -891,22 +913,22 @@ }, "payable": false, "returnParameters": { - "id": 2459, + "id": 2508, "nodeType": "ParameterList", "parameters": [], "src": "721:0:20" }, - "scope": 2583, - "src": "667:270:20", + "scope": 2639, + "src": "667:298:20", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 2521, + "id": 2573, "nodeType": "Block", - "src": "1165:119:20", + "src": "1193:181:20", "statements": [ { "expression": { @@ -918,19 +940,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 2505, + "id": 2555, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 2503, + "id": 2553, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2497, - "src": "1183:7:20", + "referencedDeclaration": 2547, + "src": "1211:7:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -941,14 +963,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 2504, + "id": 2554, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1194:1:20", + "src": "1222:1:20", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -956,11 +978,29 @@ }, "value": "0" }, - "src": "1183:12:20", + "src": "1211:12:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "496e76616c6964206163636f756e742070726f7669646564", + "id": 2556, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1225:26:20", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_da3a197794c99763c55550690a7eddbab5a672fb560947793aaf405a2b5f9490", + "typeString": "literal_string \"Invalid account provided\"" + }, + "value": "Invalid account provided" } ], "expression": { @@ -968,23 +1008,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_da3a197794c99763c55550690a7eddbab5a672fb560947793aaf405a2b5f9490", + "typeString": "literal_string \"Invalid account provided\"" } ], - "id": 2502, + "id": 2552, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "1175:7:20", + "referencedDeclaration": 2658, + "src": "1203:7:20", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 2506, + "id": 2557, "isConstant": false, "isLValue": false, "isPure": false, @@ -992,15 +1036,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1175:21:20", + "src": "1203:49:20", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2507, + "id": 2558, "nodeType": "ExpressionStatement", - "src": "1175:21:20" + "src": "1203:49:20" }, { "expression": { @@ -1008,7 +1052,7 @@ "arguments": [ { "argumentTypes": null, - "id": 2512, + "id": 2563, "isConstant": false, "isLValue": false, "isPure": false, @@ -1016,31 +1060,31 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "1214:23:20", + "src": "1270:23:20", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2509, + "id": 2560, "name": "isWhitelisted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2454, - "src": "1215:13:20", + "referencedDeclaration": 2503, + "src": "1271:13:20", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 2511, + "id": 2562, "indexExpression": { "argumentTypes": null, - "id": 2510, + "id": 2561, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2497, - "src": "1229:7:20", + "referencedDeclaration": 2547, + "src": "1285:7:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1051,7 +1095,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1215:22:20", + "src": "1271:22:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1061,6 +1105,24 @@ "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "4163636f756e7420697320616c72656164792077686974656c6973746564", + "id": 2564, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1295:32:20", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_42f0c01c0b06bc5e652009543318e4fd67cfba114702c7f55fad1ff0c3c82ad8", + "typeString": "literal_string \"Account is already whitelisted\"" + }, + "value": "Account is already whitelisted" } ], "expression": { @@ -1068,23 +1130,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_42f0c01c0b06bc5e652009543318e4fd67cfba114702c7f55fad1ff0c3c82ad8", + "typeString": "literal_string \"Account is already whitelisted\"" } ], - "id": 2508, + "id": 2559, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "1206:7:20", + "referencedDeclaration": 2658, + "src": "1262:7:20", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 2513, + "id": 2565, "isConstant": false, "isLValue": false, "isPure": false, @@ -1092,20 +1158,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1206:32:20", + "src": "1262:66:20", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2514, + "id": 2566, "nodeType": "ExpressionStatement", - "src": "1206:32:20" + "src": "1262:66:20" }, { "expression": { "argumentTypes": null, - "id": 2519, + "id": 2571, "isConstant": false, "isLValue": false, "isPure": false, @@ -1114,26 +1180,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2515, + "id": 2567, "name": "isWhitelisted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2454, - "src": "1248:13:20", + "referencedDeclaration": 2503, + "src": "1338:13:20", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 2517, + "id": 2569, "indexExpression": { "argumentTypes": null, - "id": 2516, + "id": 2568, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2497, - "src": "1262:7:20", + "referencedDeclaration": 2547, + "src": "1352:7:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1144,7 +1210,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1248:22:20", + "src": "1338:22:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1155,14 +1221,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 2518, + "id": 2570, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "1273:4:20", + "src": "1363:4:20", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -1170,57 +1236,57 @@ }, "value": "true" }, - "src": "1248:29:20", + "src": "1338:29:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 2520, + "id": 2572, "nodeType": "ExpressionStatement", - "src": "1248:29:20" + "src": "1338:29:20" } ] }, "documentation": "@dev Allows to add destination to whitelist. This can only be done via a Safe transaction.\n @param account Destination address.", - "id": 2522, + "id": 2574, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 2500, + "id": 2550, "modifierName": { "argumentTypes": null, - "id": 2499, + "id": 2549, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 730, - "src": "1150:10:20", + "referencedDeclaration": 741, + "src": "1178:10:20", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "1150:10:20" + "src": "1178:10:20" } ], "name": "addToWhitelist", "nodeType": "FunctionDefinition", "parameters": { - "id": 2498, + "id": 2548, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2497, + "id": 2547, "name": "account", "nodeType": "VariableDeclaration", - "scope": 2522, - "src": "1110:15:20", + "scope": 2574, + "src": "1138:15:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1228,10 +1294,10 @@ "typeString": "address" }, "typeName": { - "id": 2496, + "id": 2546, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1110:7:20", + "src": "1138:7:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1241,26 +1307,26 @@ "visibility": "internal" } ], - "src": "1109:17:20" + "src": "1137:17:20" }, "payable": false, "returnParameters": { - "id": 2501, + "id": 2551, "nodeType": "ParameterList", "parameters": [], - "src": "1165:0:20" + "src": "1193:0:20" }, - "scope": 2583, - "src": "1086:198:20", + "scope": 2639, + "src": "1114:260:20", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 2541, + "id": 2594, "nodeType": "Block", - "src": "1522:88:20", + "src": "1612:118:20", "statements": [ { "expression": { @@ -1270,26 +1336,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2530, + "id": 2582, "name": "isWhitelisted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2454, - "src": "1540:13:20", + "referencedDeclaration": 2503, + "src": "1630:13:20", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 2532, + "id": 2584, "indexExpression": { "argumentTypes": null, - "id": 2531, + "id": 2583, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2524, - "src": "1554:7:20", + "referencedDeclaration": 2576, + "src": "1644:7:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1300,11 +1366,29 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1540:22:20", + "src": "1630:22:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "4163636f756e74206973206e6f742077686974656c6973746564", + "id": 2585, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1654:28:20", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_2f56605dd36b69a55672cdc762e8d3959c002a474a30a6774bba38bb65f718e1", + "typeString": "literal_string \"Account is not whitelisted\"" + }, + "value": "Account is not whitelisted" } ], "expression": { @@ -1312,23 +1396,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_2f56605dd36b69a55672cdc762e8d3959c002a474a30a6774bba38bb65f718e1", + "typeString": "literal_string \"Account is not whitelisted\"" } ], - "id": 2529, + "id": 2581, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "1532:7:20", + "referencedDeclaration": 2658, + "src": "1622:7:20", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 2533, + "id": 2586, "isConstant": false, "isLValue": false, "isPure": false, @@ -1336,20 +1424,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1532:31:20", + "src": "1622:61:20", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2534, + "id": 2587, "nodeType": "ExpressionStatement", - "src": "1532:31:20" + "src": "1622:61:20" }, { "expression": { "argumentTypes": null, - "id": 2539, + "id": 2592, "isConstant": false, "isLValue": false, "isPure": false, @@ -1358,26 +1446,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2535, + "id": 2588, "name": "isWhitelisted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2454, - "src": "1573:13:20", + "referencedDeclaration": 2503, + "src": "1693:13:20", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 2537, + "id": 2590, "indexExpression": { "argumentTypes": null, - "id": 2536, + "id": 2589, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2524, - "src": "1587:7:20", + "referencedDeclaration": 2576, + "src": "1707:7:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1388,7 +1476,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1573:22:20", + "src": "1693:22:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1399,14 +1487,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "66616c7365", - "id": 2538, + "id": 2591, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "1598:5:20", + "src": "1718:5:20", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -1414,57 +1502,57 @@ }, "value": "false" }, - "src": "1573:30:20", + "src": "1693:30:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 2540, + "id": 2593, "nodeType": "ExpressionStatement", - "src": "1573:30:20" + "src": "1693:30:20" } ] }, "documentation": "@dev Allows to remove destination from whitelist. This can only be done via a Safe transaction.\n @param account Destination address.", - "id": 2542, + "id": 2595, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 2527, + "id": 2579, "modifierName": { "argumentTypes": null, - "id": 2526, + "id": 2578, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 730, - "src": "1507:10:20", + "referencedDeclaration": 741, + "src": "1597:10:20", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "1507:10:20" + "src": "1597:10:20" } ], "name": "removeFromWhitelist", "nodeType": "FunctionDefinition", "parameters": { - "id": 2525, + "id": 2577, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2524, + "id": 2576, "name": "account", "nodeType": "VariableDeclaration", - "scope": 2542, - "src": "1467:15:20", + "scope": 2595, + "src": "1557:15:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1472,10 +1560,10 @@ "typeString": "address" }, "typeName": { - "id": 2523, + "id": 2575, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1467:7:20", + "src": "1557:7:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1485,26 +1573,26 @@ "visibility": "internal" } ], - "src": "1466:17:20" + "src": "1556:17:20" }, "payable": false, "returnParameters": { - "id": 2528, + "id": 2580, "nodeType": "ParameterList", "parameters": [], - "src": "1522:0:20" + "src": "1612:0:20" }, - "scope": 2583, - "src": "1438:172:20", + "scope": 2639, + "src": "1528:202:20", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 2581, + "id": 2637, "nodeType": "Block", - "src": "1973:282:20", + "src": "2093:393:20", "statements": [ { "expression": { @@ -1517,18 +1605,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2558, + "id": 2611, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2598, - "src": "2110:3:20", + "referencedDeclaration": 2654, + "src": "2230:3:20", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 2559, + "id": 2612, "isConstant": false, "isLValue": false, "isPure": false, @@ -1536,7 +1624,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2110:10:20", + "src": "2230:10:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1555,14 +1643,14 @@ "arguments": [ { "argumentTypes": null, - "id": 2555, + "id": 2608, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 717, - "src": "2093:7:20", + "referencedDeclaration": 727, + "src": "2213:7:20", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1100", + "typeIdentifier": "t_contract$_ModuleManager_$1118", "typeString": "contract ModuleManager" } } @@ -1570,22 +1658,22 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_ModuleManager_$1100", + "typeIdentifier": "t_contract$_ModuleManager_$1118", "typeString": "contract ModuleManager" } ], - "id": 2554, + "id": 2607, "name": "OwnerManager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1472, - "src": "2080:12:20", + "referencedDeclaration": 1504, + "src": "2200:12:20", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_OwnerManager_$1472_$", + "typeIdentifier": "t_type$_t_contract$_OwnerManager_$1504_$", "typeString": "type(contract OwnerManager)" } }, - "id": 2556, + "id": 2609, "isConstant": false, "isLValue": false, "isPure": false, @@ -1593,27 +1681,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2080:21:20", + "src": "2200:21:20", "typeDescriptions": { - "typeIdentifier": "t_contract$_OwnerManager_$1472", + "typeIdentifier": "t_contract$_OwnerManager_$1504", "typeString": "contract OwnerManager" } }, - "id": 2557, + "id": 2610, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "isOwner", "nodeType": "MemberAccess", - "referencedDeclaration": 1422, - "src": "2080:29:20", + "referencedDeclaration": 1454, + "src": "2200:29:20", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view external returns (bool)" } }, - "id": 2560, + "id": 2613, "isConstant": false, "isLValue": false, "isPure": false, @@ -1621,11 +1709,29 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2080:41:20", + "src": "2200:41:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "4d6574686f642063616e206f6e6c792062652063616c6c656420627920616e206f776e6572", + "id": 2614, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2243:39:20", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_4df072353ff501a1071e1cc3e2eb3ee0ebb21a35321efe90c0960bf2f4356640", + "typeString": "literal_string \"Method can only be called by an owner\"" + }, + "value": "Method can only be called by an owner" } ], "expression": { @@ -1633,23 +1739,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_4df072353ff501a1071e1cc3e2eb3ee0ebb21a35321efe90c0960bf2f4356640", + "typeString": "literal_string \"Method can only be called by an owner\"" } ], - "id": 2553, + "id": 2606, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "2072:7:20", + "referencedDeclaration": 2658, + "src": "2192:7:20", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 2561, + "id": 2615, "isConstant": false, "isLValue": false, "isPure": false, @@ -1657,15 +1767,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2072:50:20", + "src": "2192:91:20", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2562, + "id": 2616, "nodeType": "ExpressionStatement", - "src": "2072:50:20" + "src": "2192:91:20" }, { "expression": { @@ -1675,26 +1785,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2564, + "id": 2618, "name": "isWhitelisted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2454, - "src": "2140:13:20", + "referencedDeclaration": 2503, + "src": "2301:13:20", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 2566, + "id": 2620, "indexExpression": { "argumentTypes": null, - "id": 2565, + "id": 2619, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2544, - "src": "2154:2:20", + "referencedDeclaration": 2597, + "src": "2315:2:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1705,11 +1815,29 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2140:17:20", + "src": "2301:17:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "546172676574206163636f756e74206973206e6f742077686974656c6973746564", + "id": 2621, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2320:35:20", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_9a154d7dadc01125e34b410c8bdd8fd2546fbbac90b22b0d92787a072cf6fc42", + "typeString": "literal_string \"Target account is not whitelisted\"" + }, + "value": "Target account is not whitelisted" } ], "expression": { @@ -1717,23 +1845,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_9a154d7dadc01125e34b410c8bdd8fd2546fbbac90b22b0d92787a072cf6fc42", + "typeString": "literal_string \"Target account is not whitelisted\"" } ], - "id": 2563, + "id": 2617, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "2132:7:20", + "referencedDeclaration": 2658, + "src": "2293:7:20", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 2567, + "id": 2622, "isConstant": false, "isLValue": false, "isPure": false, @@ -1741,15 +1873,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2132:26:20", + "src": "2293:63:20", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2568, + "id": 2623, "nodeType": "ExpressionStatement", - "src": "2132:26:20" + "src": "2293:63:20" }, { "expression": { @@ -1760,12 +1892,12 @@ "arguments": [ { "argumentTypes": null, - "id": 2572, + "id": 2627, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2544, - "src": "2210:2:20", + "referencedDeclaration": 2597, + "src": "2408:2:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1773,12 +1905,12 @@ }, { "argumentTypes": null, - "id": 2573, + "id": 2628, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2546, - "src": "2214:5:20", + "referencedDeclaration": 2599, + "src": "2412:5:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1786,12 +1918,12 @@ }, { "argumentTypes": null, - "id": 2574, + "id": 2629, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2548, - "src": "2221:4:20", + "referencedDeclaration": 2601, + "src": "2419:4:20", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -1803,18 +1935,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2575, + "id": 2630, "name": "Enum", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 30, - "src": "2227:4:20", + "src": "2425:4:20", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_Enum_$30_$", "typeString": "type(contract Enum)" } }, - "id": 2576, + "id": 2631, "isConstant": false, "isLValue": false, "isPure": false, @@ -1822,13 +1954,13 @@ "memberName": "Operation", "nodeType": "MemberAccess", "referencedDeclaration": 29, - "src": "2227:14:20", + "src": "2425:14:20", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_Operation_$29_$", "typeString": "type(enum Enum.Operation)" } }, - "id": 2577, + "id": 2632, "isConstant": false, "isLValue": false, "isPure": true, @@ -1836,7 +1968,7 @@ "memberName": "Call", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2227:19:20", + "src": "2425:19:20", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" @@ -1864,32 +1996,32 @@ ], "expression": { "argumentTypes": null, - "id": 2570, + "id": 2625, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 717, - "src": "2176:7:20", + "referencedDeclaration": 727, + "src": "2374:7:20", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1100", + "typeIdentifier": "t_contract$_ModuleManager_$1118", "typeString": "contract ModuleManager" } }, - "id": 2571, + "id": 2626, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "execTransactionFromModule", "nodeType": "MemberAccess", - "referencedDeclaration": 927, - "src": "2176:33:20", + "referencedDeclaration": 945, + "src": "2374:33:20", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$returns$_t_bool_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation) external returns (bool)" } }, - "id": 2578, + "id": 2633, "isConstant": false, "isLValue": false, "isPure": false, @@ -1897,11 +2029,29 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2176:71:20", + "src": "2374:71:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "436f756c64206e6f742065786563757465207472616e73616374696f6e", + "id": 2634, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2447:31:20", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_b0a2f29e31cc28eee068c27ff93342fb8d9840dcad25c6f669ce8154844930c4", + "typeString": "literal_string \"Could not execute transaction\"" + }, + "value": "Could not execute transaction" } ], "expression": { @@ -1909,23 +2059,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_b0a2f29e31cc28eee068c27ff93342fb8d9840dcad25c6f669ce8154844930c4", + "typeString": "literal_string \"Could not execute transaction\"" } ], - "id": 2569, + "id": 2624, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "2168:7:20", + "referencedDeclaration": 2658, + "src": "2366:7:20", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 2579, + "id": 2635, "isConstant": false, "isLValue": false, "isPure": false, @@ -1933,20 +2087,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2168:80:20", + "src": "2366:113:20", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2580, + "id": 2636, "nodeType": "ExpressionStatement", - "src": "2168:80:20" + "src": "2366:113:20" } ] }, "documentation": "@dev Returns if Safe transaction is to a whitelisted destination.\n @param to Whitelisted destination address.\n @param value Not checked.\n @param data Not checked.\n @return Returns if transaction can be executed.", - "id": 2582, + "id": 2638, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -1954,16 +2108,16 @@ "name": "executeWhitelisted", "nodeType": "FunctionDefinition", "parameters": { - "id": 2549, + "id": 2602, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2544, + "id": 2597, "name": "to", "nodeType": "VariableDeclaration", - "scope": 2582, - "src": "1892:10:20", + "scope": 2638, + "src": "2012:10:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1971,10 +2125,10 @@ "typeString": "address" }, "typeName": { - "id": 2543, + "id": 2596, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1892:7:20", + "src": "2012:7:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1985,11 +2139,11 @@ }, { "constant": false, - "id": 2546, + "id": 2599, "name": "value", "nodeType": "VariableDeclaration", - "scope": 2582, - "src": "1904:13:20", + "scope": 2638, + "src": "2024:13:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1997,10 +2151,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2545, + "id": 2598, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1904:7:20", + "src": "2024:7:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2011,11 +2165,11 @@ }, { "constant": false, - "id": 2548, + "id": 2601, "name": "data", "nodeType": "VariableDeclaration", - "scope": 2582, - "src": "1919:10:20", + "scope": 2638, + "src": "2039:10:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2023,10 +2177,10 @@ "typeString": "bytes" }, "typeName": { - "id": 2547, + "id": 2600, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "1919:5:20", + "src": "2039:5:20", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -2036,20 +2190,20 @@ "visibility": "internal" } ], - "src": "1891:39:20" + "src": "2011:39:20" }, "payable": false, "returnParameters": { - "id": 2552, + "id": 2605, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2551, + "id": 2604, "name": "", "nodeType": "VariableDeclaration", - "scope": 2582, - "src": "1963:4:20", + "scope": 2638, + "src": "2083:4:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2057,10 +2211,10 @@ "typeString": "bool" }, "typeName": { - "id": 2550, + "id": 2603, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "1963:4:20", + "src": "2083:4:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2070,33 +2224,33 @@ "visibility": "internal" } ], - "src": "1962:6:20" + "src": "2082:6:20" }, - "scope": 2583, - "src": "1864:391:20", + "scope": 2639, + "src": "1984:502:20", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" } ], - "scope": 2584, - "src": "289:1968:20" + "scope": 2640, + "src": "289:2199:20" } ], - "src": "0:2258:20" + "src": "0:2489:20" }, "legacyAST": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/modules/WhitelistModule.sol", "exportedSymbols": { "WhitelistModule": [ - 2583 + 2639 ] }, - "id": 2584, + "id": 2640, "nodeType": "SourceUnit", "nodes": [ { - "id": 2438, + "id": 2487, "literals": [ "solidity", "0.4", @@ -2108,9 +2262,9 @@ { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Enum.sol", "file": "../Enum.sol", - "id": 2439, + "id": 2488, "nodeType": "ImportDirective", - "scope": 2584, + "scope": 2640, "sourceUnit": 31, "src": "24:21:20", "symbolAliases": [], @@ -2119,10 +2273,10 @@ { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Module.sol", "file": "../Module.sol", - "id": 2440, + "id": 2489, "nodeType": "ImportDirective", - "scope": 2584, - "sourceUnit": 751, + "scope": 2640, + "sourceUnit": 763, "src": "46:23:20", "symbolAliases": [], "unitAlias": "" @@ -2130,10 +2284,10 @@ { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/ModuleManager.sol", "file": "../ModuleManager.sol", - "id": 2441, + "id": 2490, "nodeType": "ImportDirective", - "scope": 2584, - "sourceUnit": 1101, + "scope": 2640, + "sourceUnit": 1119, "src": "70:30:20", "symbolAliases": [], "unitAlias": "" @@ -2141,10 +2295,10 @@ { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/OwnerManager.sol", "file": "../OwnerManager.sol", - "id": 2442, + "id": 2491, "nodeType": "ImportDirective", - "scope": 2584, - "sourceUnit": 1473, + "scope": 2640, + "sourceUnit": 1505, "src": "101:29:20", "symbolAliases": [], "unitAlias": "" @@ -2155,45 +2309,45 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 2443, + "id": 2492, "name": "Module", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 750, + "referencedDeclaration": 762, "src": "317:6:20", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$750", + "typeIdentifier": "t_contract$_Module_$762", "typeString": "contract Module" } }, - "id": 2444, + "id": 2493, "nodeType": "InheritanceSpecifier", "src": "317:6:20" } ], "contractDependencies": [ - 652, - 750, - 1619 + 662, + 762, + 1654 ], "contractKind": "contract", "documentation": "@title Whitelist Module - Allows to execute transactions to whitelisted addresses without confirmations.\n @author Stefan George - ", "fullyImplemented": true, - "id": 2583, + "id": 2639, "linearizedBaseContracts": [ - 2583, - 750, - 652, - 1619 + 2639, + 762, + 662, + 1654 ], "name": "WhitelistModule", "nodeType": "ContractDefinition", "nodes": [ { "constant": true, - "id": 2447, + "id": 2496, "name": "NAME", "nodeType": "VariableDeclaration", - "scope": 2583, + "scope": 2639, "src": "331:48:20", "stateVariable": true, "storageLocation": "default", @@ -2202,7 +2356,7 @@ "typeString": "string" }, "typeName": { - "id": 2445, + "id": 2494, "name": "string", "nodeType": "ElementaryTypeName", "src": "331:6:20", @@ -2214,7 +2368,7 @@ "value": { "argumentTypes": null, "hexValue": "57686974656c697374204d6f64756c65", - "id": 2446, + "id": 2495, "isConstant": false, "isLValue": false, "isPure": true, @@ -2233,10 +2387,10 @@ }, { "constant": true, - "id": 2450, + "id": 2499, "name": "VERSION", "nodeType": "VariableDeclaration", - "scope": 2583, + "scope": 2639, "src": "385:40:20", "stateVariable": true, "storageLocation": "default", @@ -2245,7 +2399,7 @@ "typeString": "string" }, "typeName": { - "id": 2448, + "id": 2497, "name": "string", "nodeType": "ElementaryTypeName", "src": "385:6:20", @@ -2257,7 +2411,7 @@ "value": { "argumentTypes": null, "hexValue": "302e302e31", - "id": 2449, + "id": 2498, "isConstant": false, "isLValue": false, "isPure": true, @@ -2276,10 +2430,10 @@ }, { "constant": false, - "id": 2454, + "id": 2503, "name": "isWhitelisted", "nodeType": "VariableDeclaration", - "scope": 2583, + "scope": 2639, "src": "498:46:20", "stateVariable": true, "storageLocation": "default", @@ -2288,9 +2442,9 @@ "typeString": "mapping(address => bool)" }, "typeName": { - "id": 2453, + "id": 2502, "keyType": { - "id": 2451, + "id": 2500, "name": "address", "nodeType": "ElementaryTypeName", "src": "507:7:20", @@ -2306,7 +2460,7 @@ "typeString": "mapping(address => bool)" }, "valueType": { - "id": 2452, + "id": 2501, "name": "bool", "nodeType": "ElementaryTypeName", "src": "518:4:20", @@ -2321,9 +2475,9 @@ }, { "body": { - "id": 2494, + "id": 2544, "nodeType": "Block", - "src": "721:216:20", + "src": "721:244:20", "statements": [ { "expression": { @@ -2331,18 +2485,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 2460, + "id": 2509, "name": "setManager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 749, + "referencedDeclaration": 761, "src": "731:10:20", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()" } }, - "id": 2461, + "id": 2510, "isConstant": false, "isLValue": false, "isPure": false, @@ -2356,27 +2510,27 @@ "typeString": "tuple()" } }, - "id": 2462, + "id": 2511, "nodeType": "ExpressionStatement", "src": "731:12:20" }, { "body": { - "id": 2492, + "id": 2542, "nodeType": "Block", - "src": "799:132:20", + "src": "799:160:20", "statements": [ { "assignments": [ - 2475 + 2524 ], "declarations": [ { "constant": false, - "id": 2475, + "id": 2524, "name": "account", "nodeType": "VariableDeclaration", - "scope": 2495, + "scope": 2545, "src": "813:15:20", "stateVariable": false, "storageLocation": "default", @@ -2385,7 +2539,7 @@ "typeString": "address" }, "typeName": { - "id": 2474, + "id": 2523, "name": "address", "nodeType": "ElementaryTypeName", "src": "813:7:20", @@ -2398,30 +2552,30 @@ "visibility": "internal" } ], - "id": 2479, + "id": 2528, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2476, + "id": 2525, "name": "accounts", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2457, + "referencedDeclaration": 2506, "src": "831:8:20", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 2478, + "id": 2527, "indexExpression": { "argumentTypes": null, - "id": 2477, + "id": 2526, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2464, + "referencedDeclaration": 2513, "src": "840:1:20", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -2452,18 +2606,18 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 2483, + "id": 2532, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 2481, + "id": 2530, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2475, + "referencedDeclaration": 2524, "src": "864:7:20", "typeDescriptions": { "typeIdentifier": "t_address", @@ -2475,7 +2629,7 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 2482, + "id": 2531, "isConstant": false, "isLValue": false, "isPure": true, @@ -2495,6 +2649,24 @@ "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "496e76616c6964206163636f756e742070726f7669646564", + "id": 2533, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "878:26:20", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_da3a197794c99763c55550690a7eddbab5a672fb560947793aaf405a2b5f9490", + "typeString": "literal_string \"Invalid account provided\"" + }, + "value": "Invalid account provided" } ], "expression": { @@ -2502,23 +2674,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_da3a197794c99763c55550690a7eddbab5a672fb560947793aaf405a2b5f9490", + "typeString": "literal_string \"Invalid account provided\"" } ], - "id": 2480, + "id": 2529, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, + "referencedDeclaration": 2658, "src": "856:7:20", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 2484, + "id": 2534, "isConstant": false, "isLValue": false, "isPure": false, @@ -2526,20 +2702,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "856:21:20", + "src": "856:49:20", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2485, + "id": 2535, "nodeType": "ExpressionStatement", - "src": "856:21:20" + "src": "856:49:20" }, { "expression": { "argumentTypes": null, - "id": 2490, + "id": 2540, "isConstant": false, "isLValue": false, "isPure": false, @@ -2548,26 +2724,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2486, + "id": 2536, "name": "isWhitelisted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2454, - "src": "891:13:20", + "referencedDeclaration": 2503, + "src": "919:13:20", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 2488, + "id": 2538, "indexExpression": { "argumentTypes": null, - "id": 2487, + "id": 2537, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2475, - "src": "905:7:20", + "referencedDeclaration": 2524, + "src": "933:7:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2578,7 +2754,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "891:22:20", + "src": "919:22:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2589,14 +2765,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 2489, + "id": 2539, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "916:4:20", + "src": "944:4:20", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -2604,15 +2780,15 @@ }, "value": "true" }, - "src": "891:29:20", + "src": "919:29:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 2491, + "id": 2541, "nodeType": "ExpressionStatement", - "src": "891:29:20" + "src": "919:29:20" } ] }, @@ -2622,18 +2798,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 2470, + "id": 2519, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 2467, + "id": 2516, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2464, + "referencedDeclaration": 2513, "src": "773:1:20", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -2646,18 +2822,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2468, + "id": 2517, "name": "accounts", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2457, + "referencedDeclaration": 2506, "src": "777:8:20", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 2469, + "id": 2518, "isConstant": false, "isLValue": false, "isPure": false, @@ -2677,18 +2853,18 @@ "typeString": "bool" } }, - "id": 2493, + "id": 2543, "initializationExpression": { "assignments": [ - 2464 + 2513 ], "declarations": [ { "constant": false, - "id": 2464, + "id": 2513, "name": "i", "nodeType": "VariableDeclaration", - "scope": 2495, + "scope": 2545, "src": "758:9:20", "stateVariable": false, "storageLocation": "default", @@ -2697,7 +2873,7 @@ "typeString": "uint256" }, "typeName": { - "id": 2463, + "id": 2512, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "758:7:20", @@ -2710,11 +2886,11 @@ "visibility": "internal" } ], - "id": 2466, + "id": 2515, "initialValue": { "argumentTypes": null, "hexValue": "30", - "id": 2465, + "id": 2514, "isConstant": false, "isLValue": false, "isPure": true, @@ -2735,7 +2911,7 @@ "loopExpression": { "expression": { "argumentTypes": null, - "id": 2472, + "id": 2521, "isConstant": false, "isLValue": false, "isPure": false, @@ -2746,11 +2922,11 @@ "src": "794:3:20", "subExpression": { "argumentTypes": null, - "id": 2471, + "id": 2520, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2464, + "referencedDeclaration": 2513, "src": "794:1:20", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -2762,17 +2938,17 @@ "typeString": "uint256" } }, - "id": 2473, + "id": 2522, "nodeType": "ExpressionStatement", "src": "794:3:20" }, "nodeType": "ForStatement", - "src": "753:178:20" + "src": "753:206:20" } ] }, "documentation": "@dev Setup function sets initial storage of contract.\n @param accounts List of whitelisted accounts.", - "id": 2495, + "id": 2545, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -2780,15 +2956,15 @@ "name": "setup", "nodeType": "FunctionDefinition", "parameters": { - "id": 2458, + "id": 2507, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2457, + "id": 2506, "name": "accounts", "nodeType": "VariableDeclaration", - "scope": 2495, + "scope": 2545, "src": "682:18:20", "stateVariable": false, "storageLocation": "default", @@ -2798,7 +2974,7 @@ }, "typeName": { "baseType": { - "id": 2455, + "id": 2504, "name": "address", "nodeType": "ElementaryTypeName", "src": "682:7:20", @@ -2807,7 +2983,7 @@ "typeString": "address" } }, - "id": 2456, + "id": 2505, "length": null, "nodeType": "ArrayTypeName", "src": "682:9:20", @@ -2824,22 +3000,22 @@ }, "payable": false, "returnParameters": { - "id": 2459, + "id": 2508, "nodeType": "ParameterList", "parameters": [], "src": "721:0:20" }, - "scope": 2583, - "src": "667:270:20", + "scope": 2639, + "src": "667:298:20", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 2521, + "id": 2573, "nodeType": "Block", - "src": "1165:119:20", + "src": "1193:181:20", "statements": [ { "expression": { @@ -2851,19 +3027,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 2505, + "id": 2555, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 2503, + "id": 2553, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2497, - "src": "1183:7:20", + "referencedDeclaration": 2547, + "src": "1211:7:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2874,14 +3050,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 2504, + "id": 2554, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1194:1:20", + "src": "1222:1:20", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -2889,11 +3065,29 @@ }, "value": "0" }, - "src": "1183:12:20", + "src": "1211:12:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "496e76616c6964206163636f756e742070726f7669646564", + "id": 2556, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1225:26:20", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_da3a197794c99763c55550690a7eddbab5a672fb560947793aaf405a2b5f9490", + "typeString": "literal_string \"Invalid account provided\"" + }, + "value": "Invalid account provided" } ], "expression": { @@ -2901,23 +3095,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_da3a197794c99763c55550690a7eddbab5a672fb560947793aaf405a2b5f9490", + "typeString": "literal_string \"Invalid account provided\"" } ], - "id": 2502, + "id": 2552, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "1175:7:20", + "referencedDeclaration": 2658, + "src": "1203:7:20", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 2506, + "id": 2557, "isConstant": false, "isLValue": false, "isPure": false, @@ -2925,15 +3123,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1175:21:20", + "src": "1203:49:20", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2507, + "id": 2558, "nodeType": "ExpressionStatement", - "src": "1175:21:20" + "src": "1203:49:20" }, { "expression": { @@ -2941,7 +3139,7 @@ "arguments": [ { "argumentTypes": null, - "id": 2512, + "id": 2563, "isConstant": false, "isLValue": false, "isPure": false, @@ -2949,31 +3147,31 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "1214:23:20", + "src": "1270:23:20", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2509, + "id": 2560, "name": "isWhitelisted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2454, - "src": "1215:13:20", + "referencedDeclaration": 2503, + "src": "1271:13:20", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 2511, + "id": 2562, "indexExpression": { "argumentTypes": null, - "id": 2510, + "id": 2561, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2497, - "src": "1229:7:20", + "referencedDeclaration": 2547, + "src": "1285:7:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2984,7 +3182,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1215:22:20", + "src": "1271:22:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2994,6 +3192,24 @@ "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "4163636f756e7420697320616c72656164792077686974656c6973746564", + "id": 2564, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1295:32:20", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_42f0c01c0b06bc5e652009543318e4fd67cfba114702c7f55fad1ff0c3c82ad8", + "typeString": "literal_string \"Account is already whitelisted\"" + }, + "value": "Account is already whitelisted" } ], "expression": { @@ -3001,23 +3217,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_42f0c01c0b06bc5e652009543318e4fd67cfba114702c7f55fad1ff0c3c82ad8", + "typeString": "literal_string \"Account is already whitelisted\"" } ], - "id": 2508, + "id": 2559, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "1206:7:20", + "referencedDeclaration": 2658, + "src": "1262:7:20", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 2513, + "id": 2565, "isConstant": false, "isLValue": false, "isPure": false, @@ -3025,20 +3245,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1206:32:20", + "src": "1262:66:20", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2514, + "id": 2566, "nodeType": "ExpressionStatement", - "src": "1206:32:20" + "src": "1262:66:20" }, { "expression": { "argumentTypes": null, - "id": 2519, + "id": 2571, "isConstant": false, "isLValue": false, "isPure": false, @@ -3047,26 +3267,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2515, + "id": 2567, "name": "isWhitelisted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2454, - "src": "1248:13:20", + "referencedDeclaration": 2503, + "src": "1338:13:20", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 2517, + "id": 2569, "indexExpression": { "argumentTypes": null, - "id": 2516, + "id": 2568, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2497, - "src": "1262:7:20", + "referencedDeclaration": 2547, + "src": "1352:7:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3077,7 +3297,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1248:22:20", + "src": "1338:22:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3088,14 +3308,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 2518, + "id": 2570, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "1273:4:20", + "src": "1363:4:20", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -3103,57 +3323,57 @@ }, "value": "true" }, - "src": "1248:29:20", + "src": "1338:29:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 2520, + "id": 2572, "nodeType": "ExpressionStatement", - "src": "1248:29:20" + "src": "1338:29:20" } ] }, "documentation": "@dev Allows to add destination to whitelist. This can only be done via a Safe transaction.\n @param account Destination address.", - "id": 2522, + "id": 2574, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 2500, + "id": 2550, "modifierName": { "argumentTypes": null, - "id": 2499, + "id": 2549, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 730, - "src": "1150:10:20", + "referencedDeclaration": 741, + "src": "1178:10:20", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "1150:10:20" + "src": "1178:10:20" } ], "name": "addToWhitelist", "nodeType": "FunctionDefinition", "parameters": { - "id": 2498, + "id": 2548, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2497, + "id": 2547, "name": "account", "nodeType": "VariableDeclaration", - "scope": 2522, - "src": "1110:15:20", + "scope": 2574, + "src": "1138:15:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3161,10 +3381,10 @@ "typeString": "address" }, "typeName": { - "id": 2496, + "id": 2546, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1110:7:20", + "src": "1138:7:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3174,26 +3394,26 @@ "visibility": "internal" } ], - "src": "1109:17:20" + "src": "1137:17:20" }, "payable": false, "returnParameters": { - "id": 2501, + "id": 2551, "nodeType": "ParameterList", "parameters": [], - "src": "1165:0:20" + "src": "1193:0:20" }, - "scope": 2583, - "src": "1086:198:20", + "scope": 2639, + "src": "1114:260:20", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 2541, + "id": 2594, "nodeType": "Block", - "src": "1522:88:20", + "src": "1612:118:20", "statements": [ { "expression": { @@ -3203,26 +3423,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2530, + "id": 2582, "name": "isWhitelisted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2454, - "src": "1540:13:20", + "referencedDeclaration": 2503, + "src": "1630:13:20", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 2532, + "id": 2584, "indexExpression": { "argumentTypes": null, - "id": 2531, + "id": 2583, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2524, - "src": "1554:7:20", + "referencedDeclaration": 2576, + "src": "1644:7:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3233,11 +3453,29 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1540:22:20", + "src": "1630:22:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "4163636f756e74206973206e6f742077686974656c6973746564", + "id": 2585, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1654:28:20", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_2f56605dd36b69a55672cdc762e8d3959c002a474a30a6774bba38bb65f718e1", + "typeString": "literal_string \"Account is not whitelisted\"" + }, + "value": "Account is not whitelisted" } ], "expression": { @@ -3245,23 +3483,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_2f56605dd36b69a55672cdc762e8d3959c002a474a30a6774bba38bb65f718e1", + "typeString": "literal_string \"Account is not whitelisted\"" } ], - "id": 2529, + "id": 2581, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "1532:7:20", + "referencedDeclaration": 2658, + "src": "1622:7:20", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 2533, + "id": 2586, "isConstant": false, "isLValue": false, "isPure": false, @@ -3269,20 +3511,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1532:31:20", + "src": "1622:61:20", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2534, + "id": 2587, "nodeType": "ExpressionStatement", - "src": "1532:31:20" + "src": "1622:61:20" }, { "expression": { "argumentTypes": null, - "id": 2539, + "id": 2592, "isConstant": false, "isLValue": false, "isPure": false, @@ -3291,26 +3533,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2535, + "id": 2588, "name": "isWhitelisted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2454, - "src": "1573:13:20", + "referencedDeclaration": 2503, + "src": "1693:13:20", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 2537, + "id": 2590, "indexExpression": { "argumentTypes": null, - "id": 2536, + "id": 2589, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2524, - "src": "1587:7:20", + "referencedDeclaration": 2576, + "src": "1707:7:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3321,7 +3563,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1573:22:20", + "src": "1693:22:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3332,14 +3574,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "66616c7365", - "id": 2538, + "id": 2591, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "1598:5:20", + "src": "1718:5:20", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -3347,57 +3589,57 @@ }, "value": "false" }, - "src": "1573:30:20", + "src": "1693:30:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 2540, + "id": 2593, "nodeType": "ExpressionStatement", - "src": "1573:30:20" + "src": "1693:30:20" } ] }, "documentation": "@dev Allows to remove destination from whitelist. This can only be done via a Safe transaction.\n @param account Destination address.", - "id": 2542, + "id": 2595, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 2527, + "id": 2579, "modifierName": { "argumentTypes": null, - "id": 2526, + "id": 2578, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 730, - "src": "1507:10:20", + "referencedDeclaration": 741, + "src": "1597:10:20", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "1507:10:20" + "src": "1597:10:20" } ], "name": "removeFromWhitelist", "nodeType": "FunctionDefinition", "parameters": { - "id": 2525, + "id": 2577, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2524, + "id": 2576, "name": "account", "nodeType": "VariableDeclaration", - "scope": 2542, - "src": "1467:15:20", + "scope": 2595, + "src": "1557:15:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3405,10 +3647,10 @@ "typeString": "address" }, "typeName": { - "id": 2523, + "id": 2575, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1467:7:20", + "src": "1557:7:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3418,26 +3660,26 @@ "visibility": "internal" } ], - "src": "1466:17:20" + "src": "1556:17:20" }, "payable": false, "returnParameters": { - "id": 2528, + "id": 2580, "nodeType": "ParameterList", "parameters": [], - "src": "1522:0:20" + "src": "1612:0:20" }, - "scope": 2583, - "src": "1438:172:20", + "scope": 2639, + "src": "1528:202:20", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 2581, + "id": 2637, "nodeType": "Block", - "src": "1973:282:20", + "src": "2093:393:20", "statements": [ { "expression": { @@ -3450,18 +3692,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2558, + "id": 2611, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2598, - "src": "2110:3:20", + "referencedDeclaration": 2654, + "src": "2230:3:20", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 2559, + "id": 2612, "isConstant": false, "isLValue": false, "isPure": false, @@ -3469,7 +3711,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2110:10:20", + "src": "2230:10:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3488,14 +3730,14 @@ "arguments": [ { "argumentTypes": null, - "id": 2555, + "id": 2608, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 717, - "src": "2093:7:20", + "referencedDeclaration": 727, + "src": "2213:7:20", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1100", + "typeIdentifier": "t_contract$_ModuleManager_$1118", "typeString": "contract ModuleManager" } } @@ -3503,22 +3745,22 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_ModuleManager_$1100", + "typeIdentifier": "t_contract$_ModuleManager_$1118", "typeString": "contract ModuleManager" } ], - "id": 2554, + "id": 2607, "name": "OwnerManager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1472, - "src": "2080:12:20", + "referencedDeclaration": 1504, + "src": "2200:12:20", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_OwnerManager_$1472_$", + "typeIdentifier": "t_type$_t_contract$_OwnerManager_$1504_$", "typeString": "type(contract OwnerManager)" } }, - "id": 2556, + "id": 2609, "isConstant": false, "isLValue": false, "isPure": false, @@ -3526,27 +3768,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2080:21:20", + "src": "2200:21:20", "typeDescriptions": { - "typeIdentifier": "t_contract$_OwnerManager_$1472", + "typeIdentifier": "t_contract$_OwnerManager_$1504", "typeString": "contract OwnerManager" } }, - "id": 2557, + "id": 2610, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "isOwner", "nodeType": "MemberAccess", - "referencedDeclaration": 1422, - "src": "2080:29:20", + "referencedDeclaration": 1454, + "src": "2200:29:20", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view external returns (bool)" } }, - "id": 2560, + "id": 2613, "isConstant": false, "isLValue": false, "isPure": false, @@ -3554,11 +3796,29 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2080:41:20", + "src": "2200:41:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "4d6574686f642063616e206f6e6c792062652063616c6c656420627920616e206f776e6572", + "id": 2614, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2243:39:20", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_4df072353ff501a1071e1cc3e2eb3ee0ebb21a35321efe90c0960bf2f4356640", + "typeString": "literal_string \"Method can only be called by an owner\"" + }, + "value": "Method can only be called by an owner" } ], "expression": { @@ -3566,23 +3826,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_4df072353ff501a1071e1cc3e2eb3ee0ebb21a35321efe90c0960bf2f4356640", + "typeString": "literal_string \"Method can only be called by an owner\"" } ], - "id": 2553, + "id": 2606, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "2072:7:20", + "referencedDeclaration": 2658, + "src": "2192:7:20", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 2561, + "id": 2615, "isConstant": false, "isLValue": false, "isPure": false, @@ -3590,15 +3854,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2072:50:20", + "src": "2192:91:20", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2562, + "id": 2616, "nodeType": "ExpressionStatement", - "src": "2072:50:20" + "src": "2192:91:20" }, { "expression": { @@ -3608,26 +3872,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2564, + "id": 2618, "name": "isWhitelisted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2454, - "src": "2140:13:20", + "referencedDeclaration": 2503, + "src": "2301:13:20", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 2566, + "id": 2620, "indexExpression": { "argumentTypes": null, - "id": 2565, + "id": 2619, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2544, - "src": "2154:2:20", + "referencedDeclaration": 2597, + "src": "2315:2:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3638,11 +3902,29 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2140:17:20", + "src": "2301:17:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "546172676574206163636f756e74206973206e6f742077686974656c6973746564", + "id": 2621, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2320:35:20", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_9a154d7dadc01125e34b410c8bdd8fd2546fbbac90b22b0d92787a072cf6fc42", + "typeString": "literal_string \"Target account is not whitelisted\"" + }, + "value": "Target account is not whitelisted" } ], "expression": { @@ -3650,23 +3932,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_9a154d7dadc01125e34b410c8bdd8fd2546fbbac90b22b0d92787a072cf6fc42", + "typeString": "literal_string \"Target account is not whitelisted\"" } ], - "id": 2563, + "id": 2617, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "2132:7:20", + "referencedDeclaration": 2658, + "src": "2293:7:20", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 2567, + "id": 2622, "isConstant": false, "isLValue": false, "isPure": false, @@ -3674,15 +3960,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2132:26:20", + "src": "2293:63:20", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2568, + "id": 2623, "nodeType": "ExpressionStatement", - "src": "2132:26:20" + "src": "2293:63:20" }, { "expression": { @@ -3693,12 +3979,12 @@ "arguments": [ { "argumentTypes": null, - "id": 2572, + "id": 2627, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2544, - "src": "2210:2:20", + "referencedDeclaration": 2597, + "src": "2408:2:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3706,12 +3992,12 @@ }, { "argumentTypes": null, - "id": 2573, + "id": 2628, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2546, - "src": "2214:5:20", + "referencedDeclaration": 2599, + "src": "2412:5:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3719,12 +4005,12 @@ }, { "argumentTypes": null, - "id": 2574, + "id": 2629, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2548, - "src": "2221:4:20", + "referencedDeclaration": 2601, + "src": "2419:4:20", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -3736,18 +4022,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2575, + "id": 2630, "name": "Enum", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 30, - "src": "2227:4:20", + "src": "2425:4:20", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_Enum_$30_$", "typeString": "type(contract Enum)" } }, - "id": 2576, + "id": 2631, "isConstant": false, "isLValue": false, "isPure": false, @@ -3755,13 +4041,13 @@ "memberName": "Operation", "nodeType": "MemberAccess", "referencedDeclaration": 29, - "src": "2227:14:20", + "src": "2425:14:20", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_Operation_$29_$", "typeString": "type(enum Enum.Operation)" } }, - "id": 2577, + "id": 2632, "isConstant": false, "isLValue": false, "isPure": true, @@ -3769,7 +4055,7 @@ "memberName": "Call", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2227:19:20", + "src": "2425:19:20", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" @@ -3797,32 +4083,32 @@ ], "expression": { "argumentTypes": null, - "id": 2570, + "id": 2625, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 717, - "src": "2176:7:20", + "referencedDeclaration": 727, + "src": "2374:7:20", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1100", + "typeIdentifier": "t_contract$_ModuleManager_$1118", "typeString": "contract ModuleManager" } }, - "id": 2571, + "id": 2626, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "execTransactionFromModule", "nodeType": "MemberAccess", - "referencedDeclaration": 927, - "src": "2176:33:20", + "referencedDeclaration": 945, + "src": "2374:33:20", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$returns$_t_bool_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation) external returns (bool)" } }, - "id": 2578, + "id": 2633, "isConstant": false, "isLValue": false, "isPure": false, @@ -3830,11 +4116,29 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2176:71:20", + "src": "2374:71:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "436f756c64206e6f742065786563757465207472616e73616374696f6e", + "id": 2634, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2447:31:20", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_b0a2f29e31cc28eee068c27ff93342fb8d9840dcad25c6f669ce8154844930c4", + "typeString": "literal_string \"Could not execute transaction\"" + }, + "value": "Could not execute transaction" } ], "expression": { @@ -3842,23 +4146,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_b0a2f29e31cc28eee068c27ff93342fb8d9840dcad25c6f669ce8154844930c4", + "typeString": "literal_string \"Could not execute transaction\"" } ], - "id": 2569, + "id": 2624, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "2168:7:20", + "referencedDeclaration": 2658, + "src": "2366:7:20", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 2579, + "id": 2635, "isConstant": false, "isLValue": false, "isPure": false, @@ -3866,20 +4174,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2168:80:20", + "src": "2366:113:20", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2580, + "id": 2636, "nodeType": "ExpressionStatement", - "src": "2168:80:20" + "src": "2366:113:20" } ] }, "documentation": "@dev Returns if Safe transaction is to a whitelisted destination.\n @param to Whitelisted destination address.\n @param value Not checked.\n @param data Not checked.\n @return Returns if transaction can be executed.", - "id": 2582, + "id": 2638, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -3887,16 +4195,16 @@ "name": "executeWhitelisted", "nodeType": "FunctionDefinition", "parameters": { - "id": 2549, + "id": 2602, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2544, + "id": 2597, "name": "to", "nodeType": "VariableDeclaration", - "scope": 2582, - "src": "1892:10:20", + "scope": 2638, + "src": "2012:10:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3904,10 +4212,10 @@ "typeString": "address" }, "typeName": { - "id": 2543, + "id": 2596, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1892:7:20", + "src": "2012:7:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3918,11 +4226,11 @@ }, { "constant": false, - "id": 2546, + "id": 2599, "name": "value", "nodeType": "VariableDeclaration", - "scope": 2582, - "src": "1904:13:20", + "scope": 2638, + "src": "2024:13:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3930,10 +4238,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2545, + "id": 2598, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1904:7:20", + "src": "2024:7:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3944,11 +4252,11 @@ }, { "constant": false, - "id": 2548, + "id": 2601, "name": "data", "nodeType": "VariableDeclaration", - "scope": 2582, - "src": "1919:10:20", + "scope": 2638, + "src": "2039:10:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3956,10 +4264,10 @@ "typeString": "bytes" }, "typeName": { - "id": 2547, + "id": 2600, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "1919:5:20", + "src": "2039:5:20", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -3969,20 +4277,20 @@ "visibility": "internal" } ], - "src": "1891:39:20" + "src": "2011:39:20" }, "payable": false, "returnParameters": { - "id": 2552, + "id": 2605, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2551, + "id": 2604, "name": "", "nodeType": "VariableDeclaration", - "scope": 2582, - "src": "1963:4:20", + "scope": 2638, + "src": "2083:4:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3990,10 +4298,10 @@ "typeString": "bool" }, "typeName": { - "id": 2550, + "id": 2603, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "1963:4:20", + "src": "2083:4:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4003,20 +4311,20 @@ "visibility": "internal" } ], - "src": "1962:6:20" + "src": "2082:6:20" }, - "scope": 2583, - "src": "1864:391:20", + "scope": 2639, + "src": "1984:502:20", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" } ], - "scope": 2584, - "src": "289:1968:20" + "scope": 2640, + "src": "289:2199:20" } ], - "src": "0:2258:20" + "src": "0:2489:20" }, "compiler": { "name": "solc", @@ -4026,22 +4334,16 @@ "4": { "events": {}, "links": {}, - "address": "0xc9ecedc3f0aa6ec4dc9b6a46bace62480a607617", - "transactionHash": "0xe39c78298afab44ba85b809e6c6d8050d841d420a98a45615afc3c69a7733e05" - }, - "1527316019334": { - "events": {}, - "links": {}, - "address": "0xa0a04217f63fe5026bc20445af8ded0dffaccbc2", - "transactionHash": "0x10a442e0b3d7b44501719f123d9180db28c9206bfaf6163dfbfc2b987eb0e33f" + "address": "0x81e3453ff605a922a05d9a585c1b2275f7fdff55", + "transactionHash": "0xaa34677376db9fb4b3ff557b445167e4603ce321123da7fdeb5ab56e0897d547" }, "1527420696956": { "events": {}, "links": {}, - "address": "0x00d378002af4eccf8548c93aaf9d2b42d7d57239", - "transactionHash": "0x37296a82258f36484727e72673860ef6ed238e3754263014e3f3ff9a8997b64b" + "address": "0xb361f92c5e54c601ebcc5364dfb57403ed80c65f", + "transactionHash": "0xcb780345b12e792b1e68aeca7100e57f1c01cfc4f65cc1205f3e82c967d7c526" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-27T11:31:46.258Z" + "updatedAt": "2018-05-28T06:08:59.490Z" } \ No newline at end of file From a7076b9a1ac699bfc0a3e4851d3dce26085c191d Mon Sep 17 00:00:00 2001 From: apanizo Date: Tue, 29 May 2018 09:01:04 +0200 Subject: [PATCH 10/14] WA-238 Implementing mustBeInteger validator on threshold and num of owners --- src/components/forms/validator.js | 5 ++++- src/routes/open/components/SafeForm/Confirmations/index.jsx | 4 ++-- src/routes/open/components/SafeForm/DailyLimit/index.jsx | 4 ++-- src/routes/open/components/SafeForm/Owners/index.jsx | 4 ++-- .../safe/component/AddTransaction/MultisigForm/index.jsx | 4 ++-- src/routes/safe/component/Withdrawn/WithdrawnForm/index.jsx | 4 ++-- 6 files changed, 14 insertions(+), 11 deletions(-) diff --git a/src/components/forms/validator.js b/src/components/forms/validator.js index e5a54d22..ba609f24 100644 --- a/src/components/forms/validator.js +++ b/src/components/forms/validator.js @@ -5,7 +5,10 @@ type Field = boolean | string export const required = (value: Field) => (value ? undefined : 'Required') -export const mustBeNumber = (value: number) => +export const mustBeInteger = (value: string) => + (!Number.isInteger(Number(value)) || value.includes('.') ? 'Must be an integer' : undefined) + +export const mustBeFloat = (value: number) => (Number.isNaN(Number(value)) ? 'Must be a number' : undefined) export const greaterThan = (min: number) => (value: string) => { diff --git a/src/routes/open/components/SafeForm/Confirmations/index.jsx b/src/routes/open/components/SafeForm/Confirmations/index.jsx index 68f59761..b757faa6 100644 --- a/src/routes/open/components/SafeForm/Confirmations/index.jsx +++ b/src/routes/open/components/SafeForm/Confirmations/index.jsx @@ -2,7 +2,7 @@ import * as React from 'react' import { Field } from 'react-final-form' import TextField from '~/components/forms/TextField' -import { composeValidators, minValue, mustBeNumber, required } from '~/components/forms/validator' +import { composeValidators, minValue, mustBeInteger, required } from '~/components/forms/validator' import Block from '~/components/layout/Block' import { FIELD_CONFIRMATIONS } from '~/routes/open/components/fields' @@ -14,7 +14,7 @@ const Confirmations = () => ( type="text" validate={composeValidators( required, - mustBeNumber, + mustBeInteger, minValue(1), )} placeholder="Required confirmations*" diff --git a/src/routes/open/components/SafeForm/DailyLimit/index.jsx b/src/routes/open/components/SafeForm/DailyLimit/index.jsx index 34dbd153..6c26b035 100644 --- a/src/routes/open/components/SafeForm/DailyLimit/index.jsx +++ b/src/routes/open/components/SafeForm/DailyLimit/index.jsx @@ -2,7 +2,7 @@ import * as React from 'react' import Field from '~/components/forms/Field' import TextField from '~/components/forms/TextField' -import { composeValidators, mustBeNumber, required, minValue } from '~/components/forms/validator' +import { composeValidators, mustBeFloat, required, minValue } from '~/components/forms/validator' import Block from '~/components/layout/Block' import { FIELD_DAILY_LIMIT } from '~/routes/open/components/fields' @@ -12,7 +12,7 @@ const DailyLimit = () => ( name={FIELD_DAILY_LIMIT} component={TextField} type="text" - validate={composeValidators(required, mustBeNumber, minValue(0))} + validate={composeValidators(required, mustBeFloat, minValue(0))} placeholder="Daily Limit*" text="Daily Limit" /> diff --git a/src/routes/open/components/SafeForm/Owners/index.jsx b/src/routes/open/components/SafeForm/Owners/index.jsx index 71928dcf..fa51f1b3 100644 --- a/src/routes/open/components/SafeForm/Owners/index.jsx +++ b/src/routes/open/components/SafeForm/Owners/index.jsx @@ -6,7 +6,7 @@ import { composeValidators, minValue, maxValue, - mustBeNumber, + mustBeInteger, mustBeEthereumAddress, required, uniqueAddress, @@ -45,7 +45,7 @@ const Owners = (props: Props) => { name={FIELD_OWNERS} component={TextField} type="text" - validate={composeValidators(required, mustBeNumber, maxValue(MAX_NUMBER_OWNERS), minValue(1))} + validate={composeValidators(required, mustBeInteger, maxValue(MAX_NUMBER_OWNERS), minValue(1))} placeholder="Number of owners*" text="Number of owners" /> diff --git a/src/routes/safe/component/AddTransaction/MultisigForm/index.jsx b/src/routes/safe/component/AddTransaction/MultisigForm/index.jsx index f0393c33..20dcd466 100644 --- a/src/routes/safe/component/AddTransaction/MultisigForm/index.jsx +++ b/src/routes/safe/component/AddTransaction/MultisigForm/index.jsx @@ -2,7 +2,7 @@ import * as React from 'react' import Field from '~/components/forms/Field' import TextField from '~/components/forms/TextField' -import { composeValidators, inLimit, mustBeNumber, required, greaterThan, mustBeEthereumAddress } from '~/components/forms/validator' +import { composeValidators, inLimit, mustBeFloat, required, greaterThan, mustBeEthereumAddress } from '~/components/forms/validator' import Block from '~/components/layout/Block' import Heading from '~/components/layout/Heading' import { TX_NAME_PARAM, TX_DESTINATION_PARAM, TX_VALUE_PARAM } from '~/routes/safe/component/AddTransaction/createTransactions' @@ -56,7 +56,7 @@ const WithdrawnForm = ({ balance }: Props) => () => ( name={TX_VALUE_PARAM} component={TextField} type="text" - validate={composeValidators(required, mustBeNumber, greaterThan(0), inLimit(balance, 0, 'available balance'))} + validate={composeValidators(required, mustBeFloat, greaterThan(0), inLimit(balance, 0, 'available balance'))} placeholder="Amount in ETH*" text="Amount in ETH" /> diff --git a/src/routes/safe/component/Withdrawn/WithdrawnForm/index.jsx b/src/routes/safe/component/Withdrawn/WithdrawnForm/index.jsx index df5dbf39..12f0ae26 100644 --- a/src/routes/safe/component/Withdrawn/WithdrawnForm/index.jsx +++ b/src/routes/safe/component/Withdrawn/WithdrawnForm/index.jsx @@ -2,7 +2,7 @@ import * as React from 'react' import Field from '~/components/forms/Field' import TextField from '~/components/forms/TextField' -import { composeValidators, inLimit, mustBeNumber, required, greaterThan, mustBeEthereumAddress } from '~/components/forms/validator' +import { composeValidators, inLimit, mustBeFloat, required, greaterThan, mustBeEthereumAddress } from '~/components/forms/validator' import Block from '~/components/layout/Block' import Heading from '~/components/layout/Heading' import { DESTINATION_PARAM, VALUE_PARAM } from '~/routes/safe/component/Withdrawn/withdrawn' @@ -37,7 +37,7 @@ const WithdrawnForm = ({ limit, spentToday }: Props) => () => ( name={VALUE_PARAM} component={TextField} type="text" - validate={composeValidators(required, mustBeNumber, greaterThan(0), inLimit(limit, spentToday, 'daily limit'))} + validate={composeValidators(required, mustBeFloat, greaterThan(0), inLimit(limit, spentToday, 'daily limit'))} placeholder="Amount in ETH*" text="Amount in ETH" /> From cfdbc8a76115780b5a00cbf4b74f7aee212352b6 Mon Sep 17 00:00:00 2001 From: apanizo Date: Tue, 29 May 2018 09:31:48 +0200 Subject: [PATCH 11/14] WA-238 Fixing error of safes 1+ owners and threshold 1 when sending txs --- .../AddTransaction/createTransactions.js | 3 +- .../Transactions/Collapsed/Confirmations.jsx | 57 +++++++++---------- .../Transactions/Collapsed/index.jsx | 5 +- .../Transactions/Transaction/index.jsx | 1 + 4 files changed, 33 insertions(+), 33 deletions(-) diff --git a/src/routes/safe/component/AddTransaction/createTransactions.js b/src/routes/safe/component/AddTransaction/createTransactions.js index f13db071..aa7fb298 100644 --- a/src/routes/safe/component/AddTransaction/createTransactions.js +++ b/src/routes/safe/component/AddTransaction/createTransactions.js @@ -94,7 +94,8 @@ export const createTransaction = async ( const valueInWei = web3.toWei(txValue, 'ether') const CALL = 0 - if (hasOneOwner(safe)) { + const thresholdIsOne = safe.get('confirmations') === 1 + if (hasOneOwner(safe) || thresholdIsOne) { const txReceipt = await gnosisSafe.execTransactionIfApproved(txDestination, valueInWei, '0x', CALL, nonce, { from: user, gas: '5000000' }) const executedConfirmations: List = buildExecutedConfirmationFrom(safe.get('owners'), user) return storeTransaction(txName, nonce, txDestination, txValue, user, executedConfirmations, txReceipt.tx, safeAddress, safe.get('confirmations')) diff --git a/src/routes/safe/component/Transactions/Collapsed/Confirmations.jsx b/src/routes/safe/component/Transactions/Collapsed/Confirmations.jsx index 8822cffb..0b79b3d7 100644 --- a/src/routes/safe/component/Transactions/Collapsed/Confirmations.jsx +++ b/src/routes/safe/component/Transactions/Collapsed/Confirmations.jsx @@ -21,6 +21,7 @@ const styles = { type Props = Open & WithStyles & { confirmations: List, + threshold: number, } const GnoConfirmation = ({ owner, status, hash }: ConfirmationProps) => { @@ -45,35 +46,31 @@ const GnoConfirmation = ({ owner, status, hash }: ConfirmationProps) => { } const Confirmaitons = openHoc(({ - open, toggle, confirmations, -}: Props) => { - const threshold = confirmations.count() - - return ( - - - - - - - - {open ? : } - - - - - {confirmations.map(confirmation => ( - - ))} - - - - ) -}) + open, toggle, confirmations, threshold, +}: Props) => ( + + + + + + + + {open ? : } + + + + + {confirmations.map(confirmation => ( + + ))} + + + +)) export default withStyles(styles)(Confirmaitons) diff --git a/src/routes/safe/component/Transactions/Collapsed/index.jsx b/src/routes/safe/component/Transactions/Collapsed/index.jsx index 21761f47..b92a0635 100644 --- a/src/routes/safe/component/Transactions/Collapsed/index.jsx +++ b/src/routes/safe/component/Transactions/Collapsed/index.jsx @@ -15,6 +15,7 @@ type Props = { safeName: string, confirmations: ImmutableList, destination: string, + threshold: number, } const listStyle = { @@ -24,7 +25,7 @@ const listStyle = { class Collapsed extends React.PureComponent { render() { const { - confirmations, destination, safeName, + confirmations, destination, safeName, threshold, } = this.props return ( @@ -35,7 +36,7 @@ class Collapsed extends React.PureComponent { - + diff --git a/src/routes/safe/component/Transactions/Transaction/index.jsx b/src/routes/safe/component/Transactions/Transaction/index.jsx index be4a18d5..5d5650f4 100644 --- a/src/routes/safe/component/Transactions/Transaction/index.jsx +++ b/src/routes/safe/component/Transactions/Transaction/index.jsx @@ -82,6 +82,7 @@ class GnoTransaction extends React.PureComponent { safeName={safeName} confirmations={transaction.get('confirmations')} destination={transaction.get('destination')} + threshold={transaction.get('threshold')} /> } From 37c4076d00fec69f99c7951d65de77a7bd0b412c Mon Sep 17 00:00:00 2001 From: apanizo Date: Tue, 29 May 2018 09:33:36 +0200 Subject: [PATCH 12/14] WA-238 Updating smart contracts --- safe-contracts/build/contracts/CreateAndAddModules.json | 6 +++--- safe-contracts/build/contracts/DailyLimitModule.json | 6 +++--- .../build/contracts/GnosisSafePersonalEdition.json | 6 +++--- safe-contracts/build/contracts/GnosisSafeTeamEdition.json | 6 +++--- safe-contracts/build/contracts/Migrations.json | 6 +++--- safe-contracts/build/contracts/MultiSend.json | 6 +++--- safe-contracts/build/contracts/ProxyFactory.json | 6 +++--- safe-contracts/build/contracts/SocialRecoveryModule.json | 6 +++--- safe-contracts/build/contracts/StateChannelModule.json | 6 +++--- safe-contracts/build/contracts/WhitelistModule.json | 6 +++--- 10 files changed, 30 insertions(+), 30 deletions(-) diff --git a/safe-contracts/build/contracts/CreateAndAddModules.json b/safe-contracts/build/contracts/CreateAndAddModules.json index 864dd5f3..ba596baf 100644 --- a/safe-contracts/build/contracts/CreateAndAddModules.json +++ b/safe-contracts/build/contracts/CreateAndAddModules.json @@ -1262,10 +1262,10 @@ "1527420696956": { "events": {}, "links": {}, - "address": "0x6b95b8c9f47aed9b889c543cec1f0b36cba22b95", - "transactionHash": "0x43e2d4d7da24019e4bcdd3c8e6a4a633566d5c2a7519d87f20ba1fc39b5c748c" + "address": "0x251be274c3a4580fc02223ee33edfa9a2dc386e5", + "transactionHash": "0x7e0d20efecc34a31abf9e22cedf9e709811549a444d77d4889739930ad68ffb3" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-28T06:08:59.481Z" + "updatedAt": "2018-05-28T13:58:28.822Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/DailyLimitModule.json b/safe-contracts/build/contracts/DailyLimitModule.json index d0fd0324..7d5a69ad 100644 --- a/safe-contracts/build/contracts/DailyLimitModule.json +++ b/safe-contracts/build/contracts/DailyLimitModule.json @@ -6685,10 +6685,10 @@ "1527420696956": { "events": {}, "links": {}, - "address": "0x557498e7ad8193f837dd25e1c1a056282004314a", - "transactionHash": "0x609ccb6f82d0ea07fe6a3dbe55f81e0b5bf70b08b12a64a681bb2667c0da7713" + "address": "0x904a781310cc19b414bafa5499628cd10173cbad", + "transactionHash": "0x2ec83a0174a651dec98e783aa4e23d0b97e8487f788329f82789da4d5067c614" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-28T06:08:59.478Z" + "updatedAt": "2018-05-28T13:58:28.821Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/GnosisSafePersonalEdition.json b/safe-contracts/build/contracts/GnosisSafePersonalEdition.json index 60a03dae..4f153f12 100644 --- a/safe-contracts/build/contracts/GnosisSafePersonalEdition.json +++ b/safe-contracts/build/contracts/GnosisSafePersonalEdition.json @@ -9850,10 +9850,10 @@ "1527420696956": { "events": {}, "links": {}, - "address": "0x58ae455dab5137699c13bc2cf9637714c2172cb6", - "transactionHash": "0xfda1becb511b1d4beeb0f6f7a9d1b95aad7ee26b0d43dfbfb93e244853299a6c" + "address": "0x5aba3ebfac41cb9be55a7ab67b506c960982e427", + "transactionHash": "0x370c8b71ac770f90d44d7bc1f447930a01806b3d8d7b218b21e4020865c45321" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-28T06:08:59.465Z" + "updatedAt": "2018-05-28T13:58:28.830Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/GnosisSafeTeamEdition.json b/safe-contracts/build/contracts/GnosisSafeTeamEdition.json index 7cffce25..5332bcd2 100644 --- a/safe-contracts/build/contracts/GnosisSafeTeamEdition.json +++ b/safe-contracts/build/contracts/GnosisSafeTeamEdition.json @@ -6862,10 +6862,10 @@ "1527420696956": { "events": {}, "links": {}, - "address": "0x951aad4e4620ce64d8c072f551fcaed12425fe85", - "transactionHash": "0x1817ac338c1a78b56552121e12b7bc3e6968e8d9fdfa73c48dd482bfa1cc2827" + "address": "0xb25140d7a0383c103745ce78d394f13ba4cf05ce", + "transactionHash": "0x6443dda4014bb6968582b264cb829cade880976d4c08e3f3c038cbc7d180f619" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-28T06:08:59.455Z" + "updatedAt": "2018-05-28T13:58:28.817Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/Migrations.json b/safe-contracts/build/contracts/Migrations.json index f182f637..201d1044 100644 --- a/safe-contracts/build/contracts/Migrations.json +++ b/safe-contracts/build/contracts/Migrations.json @@ -1384,10 +1384,10 @@ "1527420696956": { "events": {}, "links": {}, - "address": "0xf73d9d696980438e73abe252b508f2db3ad4c72b", - "transactionHash": "0x91576b3419f784105bdd4f493f68d2cc6f57975bd21641a7433eb6e705180b3b" + "address": "0x3058a32c81f9e74ace6fa808b1906af0252c7638", + "transactionHash": "0x025b6461e9bfe4546ffada7cbf308b8eb4c12287d93fd6079297fb9c847de4df" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-28T06:08:59.489Z" + "updatedAt": "2018-05-28T13:58:28.833Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/MultiSend.json b/safe-contracts/build/contracts/MultiSend.json index 6dae7109..e47d2fe3 100644 --- a/safe-contracts/build/contracts/MultiSend.json +++ b/safe-contracts/build/contracts/MultiSend.json @@ -346,10 +346,10 @@ "1527420696956": { "events": {}, "links": {}, - "address": "0xdcf4ea4891d890a882fbeb6bab32192bac5b54e7", - "transactionHash": "0x172dfa14dab8d0f5c74e8a33b1bcecd25b4dd2a8a71a9e361889a5944d4c5b86" + "address": "0xe423b2291101fb206218ce4eeb03150e94446086", + "transactionHash": "0xa78e4749df5af5dff57145c85a9c9ca882d3b61e6125da675388fdda421622a2" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-28T06:08:59.482Z" + "updatedAt": "2018-05-28T13:58:28.823Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/ProxyFactory.json b/safe-contracts/build/contracts/ProxyFactory.json index ac92cb35..f736d283 100644 --- a/safe-contracts/build/contracts/ProxyFactory.json +++ b/safe-contracts/build/contracts/ProxyFactory.json @@ -997,10 +997,10 @@ "1527420696956": { "events": {}, "links": {}, - "address": "0xac9c7e3390e950803f64d89033b844a248921cb9", - "transactionHash": "0x9e8ad0a8a820c5873b5bd340b74a0bc1c13f39929c67fba109070c785feb5661" + "address": "0x1f7aea763a0714a857aa537a630aa9c1489a9e8d", + "transactionHash": "0xe6856fb57fd2c5da970b640fe9a5f8ee38444b5dbc381bb11bef2bb9cb80d648" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-28T06:08:59.451Z" + "updatedAt": "2018-05-28T13:58:28.811Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/SocialRecoveryModule.json b/safe-contracts/build/contracts/SocialRecoveryModule.json index 3f0dcaa6..2fa5946a 100644 --- a/safe-contracts/build/contracts/SocialRecoveryModule.json +++ b/safe-contracts/build/contracts/SocialRecoveryModule.json @@ -7296,10 +7296,10 @@ "1527420696956": { "events": {}, "links": {}, - "address": "0x4a5d199c1ab0fbd9050ab73c9ba76ae8917b7034", - "transactionHash": "0xe3892577f4aaae9af20ac6bab117e9f6459576dda208c8290ab8fb55c23d0b99" + "address": "0xaba91d2c011e7cc4e8a7b89c7731fc355f5733f4", + "transactionHash": "0x274449b108fc18df74c77e6dcd670fa9c486c1dd6ad7aece13cbedea6a77f75d" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-28T06:08:59.486Z" + "updatedAt": "2018-05-28T13:58:28.837Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/StateChannelModule.json b/safe-contracts/build/contracts/StateChannelModule.json index 8e6ae667..5e3d6992 100644 --- a/safe-contracts/build/contracts/StateChannelModule.json +++ b/safe-contracts/build/contracts/StateChannelModule.json @@ -5867,10 +5867,10 @@ "1527420696956": { "events": {}, "links": {}, - "address": "0x36548eaaea06b7d2c55d596cc9ba1ecd4867e97c", - "transactionHash": "0xad5ee4c64c0071c994cfd5dfd5158880ef6449ca7dd8fde4e8c262501758aa4c" + "address": "0x54385cc32f3e1cf1167a00d1031713005b58810d", + "transactionHash": "0x5f41f6fd32694378659292b40446fc88ab574830bb99b43380355fd9b2454ca4" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-28T06:08:59.474Z" + "updatedAt": "2018-05-28T13:58:28.813Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/WhitelistModule.json b/safe-contracts/build/contracts/WhitelistModule.json index e852e85b..60fc9c8b 100644 --- a/safe-contracts/build/contracts/WhitelistModule.json +++ b/safe-contracts/build/contracts/WhitelistModule.json @@ -4340,10 +4340,10 @@ "1527420696956": { "events": {}, "links": {}, - "address": "0xb361f92c5e54c601ebcc5364dfb57403ed80c65f", - "transactionHash": "0xcb780345b12e792b1e68aeca7100e57f1c01cfc4f65cc1205f3e82c967d7c526" + "address": "0x68493ac3f7b340768f44d3924cbf6f303a104107", + "transactionHash": "0x45669293d5726d8b49af10473522b1c3d6232f5cbded6b626e24d366214501c8" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-28T06:08:59.490Z" + "updatedAt": "2018-05-28T13:58:28.834Z" } \ No newline at end of file From 649243c0d38391c2e042549c9f5873af080bee61 Mon Sep 17 00:00:00 2001 From: apanizo Date: Wed, 30 May 2018 09:29:22 +0200 Subject: [PATCH 13/14] WA-238 Fixing problem increasing threshold in UI Transaction's view --- src/routes/safe/component/Transactions/processTransactions.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/routes/safe/component/Transactions/processTransactions.js b/src/routes/safe/component/Transactions/processTransactions.js index b84ebb53..f8a611dc 100644 --- a/src/routes/safe/component/Transactions/processTransactions.js +++ b/src/routes/safe/component/Transactions/processTransactions.js @@ -125,6 +125,6 @@ export const processTransaction = async ( executedConfirmations, txReceipt.tx, safeAddress, - threshold + 1, + threshold, ) } From 557a2e17af4985597863b9ea5ec78f5322c2c9cf Mon Sep 17 00:00:00 2001 From: apanizo Date: Wed, 30 May 2018 09:36:28 +0200 Subject: [PATCH 14/14] WA-238 Not allowing user who has confirmed tx do it again --- .../Transactions/Transaction/index.jsx | 17 +++++++++++++++-- .../Transactions/Transaction/selector.js | 3 +++ 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/src/routes/safe/component/Transactions/Transaction/index.jsx b/src/routes/safe/component/Transactions/Transaction/index.jsx index 5d5650f4..7ee48833 100644 --- a/src/routes/safe/component/Transactions/Transaction/index.jsx +++ b/src/routes/safe/component/Transactions/Transaction/index.jsx @@ -1,5 +1,6 @@ // @flow import * as React from 'react' +import { List } from 'immutable' import { connect } from 'react-redux' import openHoc, { type Open } from '~/components/hoc/OpenHoc' import ExpandLess from 'material-ui-icons/ExpandLess' @@ -16,6 +17,8 @@ import Collapsed from '~/routes/safe/component/Transactions/Collapsed' import { type Transaction } from '~/routes/safe/store/model/transaction' import Hairline from '~/components/layout/Hairline/index' import Button from '~/components/layout/Button' +import { sameAddress } from '~/wallets/ethAddresses' +import { type Confirmation } from '~/routes/safe/store/model/confirmation' import selector, { type SelectorProps } from './selector' type Props = Open & SelectorProps & { @@ -29,13 +32,17 @@ export const PROCESS_TXS = 'PROCESS TRANSACTION' class GnoTransaction extends React.PureComponent { onProccesClick = () => this.props.onProcessTx(this.props.transaction, this.props.confirmed) + hasConfirmed = (userAddress: string, confirmations: List): boolean => + confirmations.filter((conf: Confirmation) => sameAddress(userAddress, conf.get('owner').get('address')) && conf.get('status')).count() > 0 + render() { const { - open, toggle, transaction, confirmed, safeName, + open, toggle, transaction, confirmed, safeName, userAddress, } = this.props const txHash = transaction.get('tx') const confirmationText = txHash ? 'Already executed' : `${confirmed} of the ${transaction.get('threshold')} confirmations needed` + const userConfirmed = this.hasConfirmed(userAddress, transaction.get('confirmations')) return ( @@ -66,7 +73,13 @@ class GnoTransaction extends React.PureComponent { } - { !txHash && + { !txHash && userConfirmed && + + + + + } + { !txHash && !userConfirmed &&