safe-react/safe-contracts/build/contracts/v0/DailyLimitExtension.json

9134 lines
388 KiB
JSON

{
"contractName": "DailyLimitExtension",
"abi": [
{
"constant": true,
"inputs": [],
"name": "TRANSFER_FUNCTION_IDENTIFIER",
"outputs": [
{
"name": "",
"type": "bytes4"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "NAME",
"outputs": [
{
"name": "",
"type": "string"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "gnosisSafe",
"outputs": [
{
"name": "",
"type": "address"
}
],
"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": true,
"inputs": [],
"name": "VERSION",
"outputs": [
{
"name": "",
"type": "string"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"name": "tokens",
"type": "address[]"
},
{
"name": "_dailyLimits",
"type": "uint256[]"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"constant": false,
"inputs": [
{
"name": "tokens",
"type": "address[]"
},
{
"name": "_dailyLimits",
"type": "uint256[]"
}
],
"name": "setup",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"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": false,
"inputs": [
{
"name": "sender",
"type": "address"
},
{
"name": "to",
"type": "address"
},
{
"name": "value",
"type": "uint256"
},
{
"name": "data",
"type": "bytes"
},
{
"name": "operation",
"type": "uint8"
}
],
"name": "isExecutable",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "today",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
}
],
"bytecode": "0x6060604052341561000f57600080fd5b604051610dbf380380610dbf833981016040528080518201919060200180518201919050506100518282610058640100000000026104e2176401000000009004565b5050610176565b600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156100a057600080fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600090505b82518110156101715781818151811015156100fd57fe5b9060200190602002015160026000858481518110151561011957fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018190555080806001019150506100e6565b505050565b610c3a806101856000396000f3006060604052600436106100a4576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806328814f03146100a9578063430e47f8146101435780637de7edef146101aa57806381c5e03b146101e3578063a3f4df7e14610225578063a84173ae146102b3578063b74e452b14610308578063cde09ca914610331578063d7bffc92146103f9578063ffa1ad7414610454575b600080fd5b34156100b457600080fd5b610141600480803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919050506104e2565b005b341561014e57600080fd5b610156610600565b60405180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200191505060405180910390f35b34156101b557600080fd5b6101e1600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610624565b005b34156101ee57600080fd5b610223600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506106e9565b005b341561023057600080fd5b610238610790565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561027857808201518184015260208101905061025d565b50505050905090810190601f1680156102a55780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156102be57600080fd5b6102c66107c9565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561031357600080fd5b61031b6107ef565b6040518082815260200191505060405180910390f35b341561033c57600080fd5b6103df600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803560ff16906020019091905050610807565b604051808215151515815260200191505060405180910390f35b341561040457600080fd5b610430600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610afc565b60405180848152602001838152602001828152602001935050505060405180910390f35b341561045f57600080fd5b610467610b26565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104a757808201518184015260208101905061048c565b50505050905090810190601f1680156104d45780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561052a57600080fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600090505b82518110156105fb57818181518110151561058757fe5b906020019060200201516002600085848151811015156105a357fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055508080600101915050610570565b505050565b7fa9059cbb0000000000000000000000000000000000000000000000000000000081565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561068057600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141515156106a657600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561074557600080fd5b80600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055505050565b6040805190810160405280601581526020017f4461696c79204c696d697420457874656e73696f6e000000000000000000000081525081565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600062015180428115156107ff57fe5b064203905090565b6000806000806000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561086b57600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f54bf6e8b6000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b151561093057600080fd5b6102c65a03f1151561094157600080fd5b50505060405180519050151561095657600080fd5b6000600281111561096357fe5b86600281111561096f57fe5b14151561097b57600080fd5b6000875114801561098c5750600088115b806109a45750600087511180156109a35750600088145b5b15156109af57600080fd5b6000875114156109c85760009350889250879150610a4d565b8893506020870151905060248701519250604487015191507fa9059cbb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141515610a4c57600080fd5b5b60008373ffffffffffffffffffffffffffffffffffffffff1614151515610a7357600080fd5b600082111515610a8257600080fd5b610a8c8483610b5f565b15610aea5781600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001016000828254019250508190555060019450610aef565b600094505b5050505095945050505050565b60026020528060005260406000206000915090508060000154908060010154908060020154905083565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b600080600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060020154610bb06107ef565b1115610bd157610bbe6107ef565b8160020181905550600081600101819055505b80600001548382600101540111158015610bf45750806001015483826001015401115b15610c025760019150610c07565b600091505b50929150505600a165627a7a72305820f7f238174a987b01a6474c913fd8e1b521a4e9437201243a233835e7739be3730029",
"deployedBytecode": "0x6060604052600436106100a4576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806328814f03146100a9578063430e47f8146101435780637de7edef146101aa57806381c5e03b146101e3578063a3f4df7e14610225578063a84173ae146102b3578063b74e452b14610308578063cde09ca914610331578063d7bffc92146103f9578063ffa1ad7414610454575b600080fd5b34156100b457600080fd5b610141600480803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919050506104e2565b005b341561014e57600080fd5b610156610600565b60405180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200191505060405180910390f35b34156101b557600080fd5b6101e1600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610624565b005b34156101ee57600080fd5b610223600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506106e9565b005b341561023057600080fd5b610238610790565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561027857808201518184015260208101905061025d565b50505050905090810190601f1680156102a55780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156102be57600080fd5b6102c66107c9565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561031357600080fd5b61031b6107ef565b6040518082815260200191505060405180910390f35b341561033c57600080fd5b6103df600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803560ff16906020019091905050610807565b604051808215151515815260200191505060405180910390f35b341561040457600080fd5b610430600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610afc565b60405180848152602001838152602001828152602001935050505060405180910390f35b341561045f57600080fd5b610467610b26565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104a757808201518184015260208101905061048c565b50505050905090810190601f1680156104d45780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561052a57600080fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600090505b82518110156105fb57818181518110151561058757fe5b906020019060200201516002600085848151811015156105a357fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055508080600101915050610570565b505050565b7fa9059cbb0000000000000000000000000000000000000000000000000000000081565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561068057600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141515156106a657600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561074557600080fd5b80600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055505050565b6040805190810160405280601581526020017f4461696c79204c696d697420457874656e73696f6e000000000000000000000081525081565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600062015180428115156107ff57fe5b064203905090565b6000806000806000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561086b57600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f54bf6e8b6000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b151561093057600080fd5b6102c65a03f1151561094157600080fd5b50505060405180519050151561095657600080fd5b6000600281111561096357fe5b86600281111561096f57fe5b14151561097b57600080fd5b6000875114801561098c5750600088115b806109a45750600087511180156109a35750600088145b5b15156109af57600080fd5b6000875114156109c85760009350889250879150610a4d565b8893506020870151905060248701519250604487015191507fa9059cbb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141515610a4c57600080fd5b5b60008373ffffffffffffffffffffffffffffffffffffffff1614151515610a7357600080fd5b600082111515610a8257600080fd5b610a8c8483610b5f565b15610aea5781600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001016000828254019250508190555060019450610aef565b600094505b5050505095945050505050565b60026020528060005260406000206000915090508060000154908060010154908060020154905083565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b600080600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060020154610bb06107ef565b1115610bd157610bbe6107ef565b8160020181905550600081600101819055505b80600001548382600101540111158015610bf45750806001015483826001015401115b15610c025760019150610c07565b600091505b50929150505600a165627a7a72305820f7f238174a987b01a6474c913fd8e1b521a4e9437201243a233835e7739be3730029",
"sourceMap": "247:5028:5:-;;;1209:134;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1309:27;1315:6;1323:12;1309:5;;;;;:27;;;:::i;:::-;1209:134;;247:5028;;1585:424;1900:9;1838:1;1823:10;;;;;;;;;;;1815:24;;;1807:33;;;;;;;;1874:10;1850;;:35;;;;;;;;;;;;;;;;;;1912:1;1900:13;;1895:107;1919:6;:13;1915:1;:17;1895:107;;;1987:12;2000:1;1987:15;;;;;;;;;;;;;;;;;;1951:11;:22;1963:6;1970:1;1963:9;;;;;;;;;;;;;;;;;;1951:22;;;;;;;;;;;;;;;:33;;:51;;;;1934:3;;;;;;;1895:107;;;1585:424;;;:::o;247:5028::-;;;;;;;",
"deployedSourceMap": "247:5028:5:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1585:424;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;401:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2155:186;;;;;;;;;;;;;;;;;;;;;;;;;;;;2569:162;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;296:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;511:28:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5157:116;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3233:1338;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;617:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;355:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1585:424:5;1900:9;1838:1;1823:10;;;;;;;;;;;1815:24;;;1807:33;;;;;;;;1874:10;1850;;:35;;;;;;;;;;;;;;;;;;1912:1;1900:13;;1895:107;1919:6;:13;1915:1;:17;1895:107;;;1987:12;2000:1;1987:15;;;;;;;;;;;;;;;;;;1951:11;:22;1963:6;1970:1;1963:9;;;;;;;;;;;;;;;;;;1951:22;;;;;;;;;;;;;;;:33;;:51;;;;1934:3;;;;;;;1895:107;;;1585:424;;;:::o;401:67::-;;;:::o;2155:186::-;852:10;;;;;;;;;;;830:33;;:10;:33;;;822:42;;;;;;;;2298:1;2282:11;2274:25;;;;2266:34;;;;;;;;2323:11;2310:10;;:24;;;;;;;;;;;;;;;;;;2155:186;:::o;2569:162::-;852:10;;;;;;;;;;;830:33;;:10;:33;;;822:42;;;;;;;;2714:10;2682:11;:18;2694:5;2682:18;;;;;;;;;;;;;;;:29;;:42;;;;2569:162;;:::o;296:53::-;;;;;;;;;;;;;;;;;;;;:::o;511:28::-;;;;;;;;;;;;;:::o;5157:116::-;5219:4;5259:6;5253:3;:12;;;;;;;;5246:3;:20;5239:27;;5157:116;:::o;3233:1338::-;3397:4;3744:13;3767:16;3793:14;3980:25;852:10;;;;;;;;;;;830:33;;:10;:33;;;822:42;;;;;;;;3502:10;;;;;;;;;;;:18;;;3521:6;3502:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3494:35;;;;;;;;3560:25;3547:38;;;;;;;;:9;:38;;;;;;;;;3539:47;;;;;;;;3686:1;3671:4;:11;:16;:29;;;;;3699:1;3691:5;:9;3671:29;:62;;;;3718:1;3704:4;:11;:15;:29;;;;;3732:1;3723:5;:10;3704:29;3671:62;3663:71;;;;;;;;3836:1;3821:4;:11;:16;3817:470;;;3861:1;3853:9;;3887:2;3876:13;;3912:5;3903:14;;3817:470;;;3964:2;3956:10;;4084:4;4078;4074:3;4068:5;4046:44;;4135:4;4129;4125:3;4119:5;4107:34;;4184:4;4178;4174:3;4168:5;4158:32;;4247:28;4225:50;;;:18;:50;;;;4217:59;;;;;;;;3817:470;4316:1;4304:8;:13;;;;4296:22;;;;;;;;4345:1;4336:6;:10;4328:19;;;;;;;;4425:27;4438:5;4445:6;4425:12;:27::i;:::-;4421:122;;;4501:6;4468:11;:18;4480:5;4468:18;;;;;;;;;;;;;;;:29;;;:39;;;;;;;;;;;4528:4;4521:11;;;;4421:122;4559:5;4552:12;;874:1;3233:1338;;;;;;;;;;;:::o;617:50::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;355:40::-;;;;;;;;;;;;;;;;;;;;:::o;4577:488::-;4664:4;4684:29;4716:11;:18;4728:5;4716:18;;;;;;;;;;;;;;;4684:50;;4758:10;:18;;;4748:7;:5;:7::i;:::-;:28;4744:126;;;4813:7;:5;:7::i;:::-;4792:10;:18;;:28;;;;4858:1;4834:10;:21;;:25;;;;4744:126;4920:10;:21;;;4910:6;4886:10;:21;;;:30;:55;;:125;;;;;4990:10;:21;;;4981:6;4957:10;:21;;;:30;:54;4886:125;4879:157;;;5032:4;5025:11;;;;4879:157;5053:5;5046:12;;4577:488;;;;;;:::o",
"source": "pragma solidity 0.4.19;\nimport \"../Extension.sol\";\nimport \"../GnosisSafe.sol\";\n\n\n/// @title Daily Limit Extension - Allows to transfer limited amounts of ERC20 tokens and Ether without confirmations.\n/// @author Stefan George - <stefan@gnosis.pm>\ncontract DailyLimitExtension is Extension {\n\n string public constant NAME = \"Daily Limit Extension\";\n string public constant VERSION = \"0.0.1\";\n bytes4 public constant TRANSFER_FUNCTION_IDENTIFIER = hex\"a9059cbb\";\n\n DailyLimitExtension masterCopy;\n GnosisSafe public gnosisSafe;\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 modifier onlyGnosisSafe() {\n require(msg.sender == address(gnosisSafe));\n _;\n }\n\n /// @dev Constructor function triggers setup function.\n /// @param tokens List of token addresses. Ether is represented with address 0x0.\n /// @param _dailyLimits List of daily limits in smallest unit (e.g. Wei for Ether). \n /// First entry of array corresponds to first entry in token address array.\n function DailyLimitExtension(address[] tokens, uint256[] _dailyLimits)\n public\n {\n setup(tokens, _dailyLimits);\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 // gnosisSafe can only be 0 at initalization of contract.\n // Check ensures that setup function can only be called once.\n require(address(gnosisSafe) == 0);\n gnosisSafe = GnosisSafe(msg.sender);\n for (uint256 i = 0; i < tokens.length; i++)\n dailyLimits[tokens[i]].dailyLimit = _dailyLimits[i];\n }\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(DailyLimitExtension _masterCopy)\n public\n onlyGnosisSafe\n {\n require(address(_masterCopy) != 0);\n masterCopy = _masterCopy;\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 onlyGnosisSafe\n {\n dailyLimits[token].dailyLimit = dailyLimit;\n }\n\n /// @dev Returns if Safe transaction is a valid daily limit transaction.\n /// @param sender Safe owner sending Safe 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 operation Only Call operations are allowed.\n /// @return Returns if transaction can be executed.\n function isExecutable(address sender, address to, uint256 value, bytes data, GnosisSafe.Operation operation)\n public\n onlyGnosisSafe\n returns (bool)\n {\n // Only Safe owners are allowed to execute daily limit transactions.\n require(gnosisSafe.isOwner(sender));\n require(operation == GnosisSafe.Operation.Call);\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 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 if (isUnderLimit(token, amount)) {\n dailyLimits[token].spentToday += amount;\n return true;\n }\n return false;\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/extensions/DailyLimitExtension.sol",
"ast": {
"absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/extensions/DailyLimitExtension.sol",
"exportedSymbols": {
"DailyLimitExtension": [
1418
]
},
"id": 1419,
"nodeType": "SourceUnit",
"nodes": [
{
"id": 1083,
"literals": [
"solidity",
"0.4",
".19"
],
"nodeType": "PragmaDirective",
"src": "0:23:5"
},
{
"absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Extension.sol",
"file": "../Extension.sol",
"id": 1084,
"nodeType": "ImportDirective",
"scope": 1419,
"sourceUnit": 19,
"src": "24:26:5",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafe.sol",
"file": "../GnosisSafe.sol",
"id": 1085,
"nodeType": "ImportDirective",
"scope": 1419,
"sourceUnit": 964,
"src": "51:27:5",
"symbolAliases": [],
"unitAlias": ""
},
{
"baseContracts": [
{
"arguments": [],
"baseName": {
"contractScope": null,
"id": 1086,
"name": "Extension",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 18,
"src": "279:9:5",
"typeDescriptions": {
"typeIdentifier": "t_contract$_Extension_$18",
"typeString": "contract Extension"
}
},
"id": 1087,
"nodeType": "InheritanceSpecifier",
"src": "279:9:5"
}
],
"contractDependencies": [
18
],
"contractKind": "contract",
"documentation": "@title Daily Limit Extension - Allows to transfer limited amounts of ERC20 tokens and Ether without confirmations.\n @author Stefan George - <stefan@gnosis.pm>",
"fullyImplemented": true,
"id": 1418,
"linearizedBaseContracts": [
1418,
18
],
"name": "DailyLimitExtension",
"nodeType": "ContractDefinition",
"nodes": [
{
"constant": true,
"id": 1090,
"name": "NAME",
"nodeType": "VariableDeclaration",
"scope": 1418,
"src": "296:53:5",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_string_memory",
"typeString": "string memory"
},
"typeName": {
"id": 1088,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "296:6:5",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string storage pointer"
}
},
"value": {
"argumentTypes": null,
"hexValue": "4461696c79204c696d697420457874656e73696f6e",
"id": 1089,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "326:23:5",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_d825d71e418e7ec5e1c3c51592576f08c81f26d9ede420759434d9e0a688c12f",
"typeString": "literal_string \"Daily Limit Extension\""
},
"value": "Daily Limit Extension"
},
"visibility": "public"
},
{
"constant": true,
"id": 1093,
"name": "VERSION",
"nodeType": "VariableDeclaration",
"scope": 1418,
"src": "355:40:5",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_string_memory",
"typeString": "string memory"
},
"typeName": {
"id": 1091,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "355:6:5",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string storage pointer"
}
},
"value": {
"argumentTypes": null,
"hexValue": "302e302e31",
"id": 1092,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "388:7:5",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_ae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc199163811885",
"typeString": "literal_string \"0.0.1\""
},
"value": "0.0.1"
},
"visibility": "public"
},
{
"constant": true,
"id": 1096,
"name": "TRANSFER_FUNCTION_IDENTIFIER",
"nodeType": "VariableDeclaration",
"scope": 1418,
"src": "401:67:5",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes4",
"typeString": "bytes4"
},
"typeName": {
"id": 1094,
"name": "bytes4",
"nodeType": "ElementaryTypeName",
"src": "401:6:5",
"typeDescriptions": {
"typeIdentifier": "t_bytes4",
"typeString": "bytes4"
}
},
"value": {
"argumentTypes": null,
"hexValue": "a9059cbb",
"id": 1095,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "455:13:5",
"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": 1098,
"name": "masterCopy",
"nodeType": "VariableDeclaration",
"scope": 1418,
"src": "475:30:5",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_DailyLimitExtension_$1418",
"typeString": "contract DailyLimitExtension"
},
"typeName": {
"contractScope": null,
"id": 1097,
"name": "DailyLimitExtension",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 1418,
"src": "475:19:5",
"typeDescriptions": {
"typeIdentifier": "t_contract$_DailyLimitExtension_$1418",
"typeString": "contract DailyLimitExtension"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 1100,
"name": "gnosisSafe",
"nodeType": "VariableDeclaration",
"scope": 1418,
"src": "511:28:5",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_GnosisSafe_$963",
"typeString": "contract GnosisSafe"
},
"typeName": {
"contractScope": null,
"id": 1099,
"name": "GnosisSafe",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 963,
"src": "511:10:5",
"typeDescriptions": {
"typeIdentifier": "t_contract$_GnosisSafe_$963",
"typeString": "contract GnosisSafe"
}
},
"value": null,
"visibility": "public"
},
{
"constant": false,
"id": 1104,
"name": "dailyLimits",
"nodeType": "VariableDeclaration",
"scope": 1418,
"src": "617:50:5",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1111_storage_$",
"typeString": "mapping(address => struct DailyLimitExtension.DailyLimit storage ref)"
},
"typeName": {
"id": 1103,
"keyType": {
"id": 1101,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "626:7:5",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Mapping",
"src": "617:31:5",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1111_storage_$",
"typeString": "mapping(address => struct DailyLimitExtension.DailyLimit storage ref)"
},
"valueType": {
"contractScope": null,
"id": 1102,
"name": "DailyLimit",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 1111,
"src": "637:10:5",
"typeDescriptions": {
"typeIdentifier": "t_struct$_DailyLimit_$1111_storage_ptr",
"typeString": "struct DailyLimitExtension.DailyLimit storage pointer"
}
}
},
"value": null,
"visibility": "public"
},
{
"canonicalName": "DailyLimitExtension.DailyLimit",
"id": 1111,
"members": [
{
"constant": false,
"id": 1106,
"name": "dailyLimit",
"nodeType": "VariableDeclaration",
"scope": 1111,
"src": "702:18:5",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 1105,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "702:7:5",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 1108,
"name": "spentToday",
"nodeType": "VariableDeclaration",
"scope": 1111,
"src": "730:18:5",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 1107,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "730:7:5",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 1110,
"name": "lastDay",
"nodeType": "VariableDeclaration",
"scope": 1111,
"src": "758:15:5",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 1109,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "758:7:5",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"name": "DailyLimit",
"nodeType": "StructDefinition",
"scope": 1418,
"src": "674:106:5",
"visibility": "public"
},
{
"body": {
"id": 1123,
"nodeType": "Block",
"src": "812:70:5",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 1119,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 1114,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2089,
"src": "830:3:5",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 1115,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "830:10:5",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1117,
"name": "gnosisSafe",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1100,
"src": "852:10:5",
"typeDescriptions": {
"typeIdentifier": "t_contract$_GnosisSafe_$963",
"typeString": "contract GnosisSafe"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_GnosisSafe_$963",
"typeString": "contract GnosisSafe"
}
],
"id": 1116,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "844:7:5",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": "address"
},
"id": 1118,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "844:19:5",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "830:33:5",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 1113,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2092,
"src": "822:7:5",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 1120,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "822:42:5",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1121,
"nodeType": "ExpressionStatement",
"src": "822:42:5"
},
{
"id": 1122,
"nodeType": "PlaceholderStatement",
"src": "874:1:5"
}
]
},
"id": 1124,
"name": "onlyGnosisSafe",
"nodeType": "ModifierDefinition",
"parameters": {
"id": 1112,
"nodeType": "ParameterList",
"parameters": [],
"src": "809:2:5"
},
"src": "786:96:5",
"visibility": "internal"
},
{
"body": {
"id": 1138,
"nodeType": "Block",
"src": "1299:44:5",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1134,
"name": "tokens",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1127,
"src": "1315:6:5",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
{
"argumentTypes": null,
"id": 1135,
"name": "_dailyLimits",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1130,
"src": "1323:12:5",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
"typeString": "uint256[] memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
},
{
"typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
"typeString": "uint256[] memory"
}
],
"id": 1133,
"name": "setup",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1187,
"src": "1309:5:5",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$",
"typeString": "function (address[] memory,uint256[] memory)"
}
},
"id": 1136,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1309:27:5",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1137,
"nodeType": "ExpressionStatement",
"src": "1309:27:5"
}
]
},
"id": 1139,
"implemented": true,
"isConstructor": true,
"isDeclaredConst": false,
"modifiers": [],
"name": "DailyLimitExtension",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 1131,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1127,
"name": "tokens",
"nodeType": "VariableDeclaration",
"scope": 1139,
"src": "1238:16:5",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
},
"typeName": {
"baseType": {
"id": 1125,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1238:7:5",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 1126,
"length": null,
"nodeType": "ArrayTypeName",
"src": "1238:9:5",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
"typeString": "address[] storage pointer"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 1130,
"name": "_dailyLimits",
"nodeType": "VariableDeclaration",
"scope": 1139,
"src": "1256:22:5",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
"typeString": "uint256[] memory"
},
"typeName": {
"baseType": {
"id": 1128,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1256:7:5",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 1129,
"length": null,
"nodeType": "ArrayTypeName",
"src": "1256:9:5",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
"typeString": "uint256[] storage pointer"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "1237:42:5"
},
"payable": false,
"returnParameters": {
"id": 1132,
"nodeType": "ParameterList",
"parameters": [],
"src": "1299:0:5"
},
"scope": 1418,
"src": "1209:134:5",
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "public"
},
{
"body": {
"id": 1186,
"nodeType": "Block",
"src": "1661:348:5",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 1153,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1150,
"name": "gnosisSafe",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1100,
"src": "1823:10:5",
"typeDescriptions": {
"typeIdentifier": "t_contract$_GnosisSafe_$963",
"typeString": "contract GnosisSafe"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_GnosisSafe_$963",
"typeString": "contract GnosisSafe"
}
],
"id": 1149,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "1815:7:5",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": "address"
},
"id": 1151,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1815:19:5",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 1152,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1838:1:5",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "1815:24:5",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 1148,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2092,
"src": "1807:7:5",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 1154,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1807:33:5",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1155,
"nodeType": "ExpressionStatement",
"src": "1807:33:5"
},
{
"expression": {
"argumentTypes": null,
"id": 1161,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 1156,
"name": "gnosisSafe",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1100,
"src": "1850:10:5",
"typeDescriptions": {
"typeIdentifier": "t_contract$_GnosisSafe_$963",
"typeString": "contract GnosisSafe"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 1158,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2089,
"src": "1874:3:5",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 1159,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "1874:10:5",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 1157,
"name": "GnosisSafe",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 963,
"src": "1863:10:5",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_GnosisSafe_$963_$",
"typeString": "type(contract GnosisSafe)"
}
},
"id": 1160,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1863:22:5",
"typeDescriptions": {
"typeIdentifier": "t_contract$_GnosisSafe_$963",
"typeString": "contract GnosisSafe"
}
},
"src": "1850:35:5",
"typeDescriptions": {
"typeIdentifier": "t_contract$_GnosisSafe_$963",
"typeString": "contract GnosisSafe"
}
},
"id": 1162,
"nodeType": "ExpressionStatement",
"src": "1850:35:5"
},
{
"body": {
"expression": {
"argumentTypes": null,
"id": 1183,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1174,
"name": "dailyLimits",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1104,
"src": "1951:11:5",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1111_storage_$",
"typeString": "mapping(address => struct DailyLimitExtension.DailyLimit storage ref)"
}
},
"id": 1178,
"indexExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1175,
"name": "tokens",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1142,
"src": "1963:6:5",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
"id": 1177,
"indexExpression": {
"argumentTypes": null,
"id": 1176,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1164,
"src": "1970:1:5",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "1963:9:5",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "1951:22:5",
"typeDescriptions": {
"typeIdentifier": "t_struct$_DailyLimit_$1111_storage",
"typeString": "struct DailyLimitExtension.DailyLimit storage ref"
}
},
"id": 1179,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"memberName": "dailyLimit",
"nodeType": "MemberAccess",
"referencedDeclaration": 1106,
"src": "1951:33:5",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1180,
"name": "_dailyLimits",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1145,
"src": "1987:12:5",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
"typeString": "uint256[] memory"
}
},
"id": 1182,
"indexExpression": {
"argumentTypes": null,
"id": 1181,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1164,
"src": "2000:1:5",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "1987:15:5",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "1951:51:5",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 1184,
"nodeType": "ExpressionStatement",
"src": "1951:51:5"
},
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 1170,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 1167,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1164,
"src": "1915:1:5",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "<",
"rightExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 1168,
"name": "tokens",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1142,
"src": "1919:6:5",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
"id": 1169,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "1919:13:5",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "1915:17:5",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 1185,
"initializationExpression": {
"assignments": [
1164
],
"declarations": [
{
"constant": false,
"id": 1164,
"name": "i",
"nodeType": "VariableDeclaration",
"scope": 1187,
"src": "1900:9:5",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 1163,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1900:7:5",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 1166,
"initialValue": {
"argumentTypes": null,
"hexValue": "30",
"id": 1165,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1912:1:5",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"nodeType": "VariableDeclarationStatement",
"src": "1900:13:5"
},
"loopExpression": {
"expression": {
"argumentTypes": null,
"id": 1172,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "++",
"prefix": false,
"src": "1934:3:5",
"subExpression": {
"argumentTypes": null,
"id": 1171,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1164,
"src": "1934:1:5",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 1173,
"nodeType": "ExpressionStatement",
"src": "1934:3:5"
},
"nodeType": "ForStatement",
"src": "1895:107:5"
}
]
},
"id": 1187,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": false,
"modifiers": [],
"name": "setup",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 1146,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1142,
"name": "tokens",
"nodeType": "VariableDeclaration",
"scope": 1187,
"src": "1600:16:5",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
},
"typeName": {
"baseType": {
"id": 1140,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1600:7:5",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 1141,
"length": null,
"nodeType": "ArrayTypeName",
"src": "1600:9:5",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
"typeString": "address[] storage pointer"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 1145,
"name": "_dailyLimits",
"nodeType": "VariableDeclaration",
"scope": 1187,
"src": "1618:22:5",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
"typeString": "uint256[] memory"
},
"typeName": {
"baseType": {
"id": 1143,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1618:7:5",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 1144,
"length": null,
"nodeType": "ArrayTypeName",
"src": "1618:9:5",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
"typeString": "uint256[] storage pointer"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "1599:42:5"
},
"payable": false,
"returnParameters": {
"id": 1147,
"nodeType": "ParameterList",
"parameters": [],
"src": "1661:0:5"
},
"scope": 1418,
"src": "1585:424:5",
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "public"
},
{
"body": {
"id": 1206,
"nodeType": "Block",
"src": "2256:85:5",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 1199,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1196,
"name": "_masterCopy",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1189,
"src": "2282:11:5",
"typeDescriptions": {
"typeIdentifier": "t_contract$_DailyLimitExtension_$1418",
"typeString": "contract DailyLimitExtension"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_DailyLimitExtension_$1418",
"typeString": "contract DailyLimitExtension"
}
],
"id": 1195,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "2274:7:5",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": "address"
},
"id": 1197,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2274:20:5",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 1198,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2298:1:5",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "2274:25:5",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 1194,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2092,
"src": "2266:7:5",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 1200,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2266:34:5",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1201,
"nodeType": "ExpressionStatement",
"src": "2266:34:5"
},
{
"expression": {
"argumentTypes": null,
"id": 1204,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 1202,
"name": "masterCopy",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1098,
"src": "2310:10:5",
"typeDescriptions": {
"typeIdentifier": "t_contract$_DailyLimitExtension_$1418",
"typeString": "contract DailyLimitExtension"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 1203,
"name": "_masterCopy",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1189,
"src": "2323:11:5",
"typeDescriptions": {
"typeIdentifier": "t_contract$_DailyLimitExtension_$1418",
"typeString": "contract DailyLimitExtension"
}
},
"src": "2310:24:5",
"typeDescriptions": {
"typeIdentifier": "t_contract$_DailyLimitExtension_$1418",
"typeString": "contract DailyLimitExtension"
}
},
"id": 1205,
"nodeType": "ExpressionStatement",
"src": "2310:24:5"
}
]
},
"id": 1207,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": false,
"modifiers": [
{
"arguments": [],
"id": 1192,
"modifierName": {
"argumentTypes": null,
"id": 1191,
"name": "onlyGnosisSafe",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1124,
"src": "2237:14:5",
"typeDescriptions": {
"typeIdentifier": "t_modifier$__$",
"typeString": "modifier ()"
}
},
"nodeType": "ModifierInvocation",
"src": "2237:14:5"
}
],
"name": "changeMasterCopy",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 1190,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1189,
"name": "_masterCopy",
"nodeType": "VariableDeclaration",
"scope": 1207,
"src": "2181:31:5",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_DailyLimitExtension_$1418",
"typeString": "contract DailyLimitExtension"
},
"typeName": {
"contractScope": null,
"id": 1188,
"name": "DailyLimitExtension",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 1418,
"src": "2181:19:5",
"typeDescriptions": {
"typeIdentifier": "t_contract$_DailyLimitExtension_$1418",
"typeString": "contract DailyLimitExtension"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "2180:33:5"
},
"payable": false,
"returnParameters": {
"id": 1193,
"nodeType": "ParameterList",
"parameters": [],
"src": "2256:0:5"
},
"scope": 1418,
"src": "2155:186:5",
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "public"
},
{
"body": {
"id": 1223,
"nodeType": "Block",
"src": "2672:59:5",
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 1221,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1216,
"name": "dailyLimits",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1104,
"src": "2682:11:5",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1111_storage_$",
"typeString": "mapping(address => struct DailyLimitExtension.DailyLimit storage ref)"
}
},
"id": 1218,
"indexExpression": {
"argumentTypes": null,
"id": 1217,
"name": "token",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1209,
"src": "2694:5:5",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "2682:18:5",
"typeDescriptions": {
"typeIdentifier": "t_struct$_DailyLimit_$1111_storage",
"typeString": "struct DailyLimitExtension.DailyLimit storage ref"
}
},
"id": 1219,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"memberName": "dailyLimit",
"nodeType": "MemberAccess",
"referencedDeclaration": 1106,
"src": "2682:29:5",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 1220,
"name": "dailyLimit",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1211,
"src": "2714:10:5",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "2682:42:5",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 1222,
"nodeType": "ExpressionStatement",
"src": "2682:42:5"
}
]
},
"id": 1224,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": false,
"modifiers": [
{
"arguments": [],
"id": 1214,
"modifierName": {
"argumentTypes": null,
"id": 1213,
"name": "onlyGnosisSafe",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1124,
"src": "2653:14:5",
"typeDescriptions": {
"typeIdentifier": "t_modifier$__$",
"typeString": "modifier ()"
}
},
"nodeType": "ModifierInvocation",
"src": "2653:14:5"
}
],
"name": "changeDailyLimit",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 1212,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1209,
"name": "token",
"nodeType": "VariableDeclaration",
"scope": 1224,
"src": "2595:13:5",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 1208,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2595:7:5",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 1211,
"name": "dailyLimit",
"nodeType": "VariableDeclaration",
"scope": 1224,
"src": "2610:18:5",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 1210,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "2610:7:5",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "2594:35:5"
},
"payable": false,
"returnParameters": {
"id": 1215,
"nodeType": "ParameterList",
"parameters": [],
"src": "2672:0:5"
},
"scope": 1418,
"src": "2569:162:5",
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "public"
},
{
"body": {
"id": 1347,
"nodeType": "Block",
"src": "3407:1164:5",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1244,
"name": "sender",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1226,
"src": "3521:6:5",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"expression": {
"argumentTypes": null,
"id": 1242,
"name": "gnosisSafe",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1100,
"src": "3502:10:5",
"typeDescriptions": {
"typeIdentifier": "t_contract$_GnosisSafe_$963",
"typeString": "contract GnosisSafe"
}
},
"id": 1243,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "isOwner",
"nodeType": "MemberAccess",
"referencedDeclaration": 47,
"src": "3502:18:5",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$",
"typeString": "function (address) view external returns (bool)"
}
},
"id": 1245,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3502:26:5",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 1241,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2092,
"src": "3494:7:5",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 1246,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3494:35:5",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1247,
"nodeType": "ExpressionStatement",
"src": "3494:35:5"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_enum$_Operation_$61",
"typeString": "enum GnosisSafe.Operation"
},
"id": 1253,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 1249,
"name": "operation",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1234,
"src": "3547:9:5",
"typeDescriptions": {
"typeIdentifier": "t_enum$_Operation_$61",
"typeString": "enum GnosisSafe.Operation"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 1250,
"name": "GnosisSafe",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 963,
"src": "3560:10:5",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_GnosisSafe_$963_$",
"typeString": "type(contract GnosisSafe)"
}
},
"id": 1251,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "Operation",
"nodeType": "MemberAccess",
"referencedDeclaration": 61,
"src": "3560:20:5",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_enum$_Operation_$61_$",
"typeString": "type(enum GnosisSafe.Operation)"
}
},
"id": 1252,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberName": "Call",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "3560:25:5",
"typeDescriptions": {
"typeIdentifier": "t_enum$_Operation_$61",
"typeString": "enum GnosisSafe.Operation"
}
},
"src": "3547:38:5",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 1248,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2092,
"src": "3539:7:5",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 1254,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3539:47:5",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1255,
"nodeType": "ExpressionStatement",
"src": "3539:47:5"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"id": 1273,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"id": 1264,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 1260,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 1257,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1232,
"src": "3671:4:5",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"id": 1258,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "3671:11:5",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 1259,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3686:1:5",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "3671:16:5",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "BinaryOperation",
"operator": "&&",
"rightExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 1263,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 1261,
"name": "value",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1230,
"src": "3691:5:5",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": ">",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 1262,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3699:1:5",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "3691:9:5",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"src": "3671:29:5",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "BinaryOperation",
"operator": "||",
"rightExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"id": 1272,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 1268,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 1265,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1232,
"src": "3704:4:5",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"id": 1266,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "3704:11:5",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": ">",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 1267,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3718:1:5",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "3704:15:5",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "BinaryOperation",
"operator": "&&",
"rightExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 1271,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 1269,
"name": "value",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1230,
"src": "3723:5:5",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 1270,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3732:1:5",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "3723:10:5",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"src": "3704:29:5",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"src": "3671:62:5",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 1256,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2092,
"src": "3663:7:5",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 1274,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3663:71:5",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1275,
"nodeType": "ExpressionStatement",
"src": "3663:71:5"
},
{
"assignments": [],
"declarations": [
{
"constant": false,
"id": 1277,
"name": "token",
"nodeType": "VariableDeclaration",
"scope": 1348,
"src": "3744:13:5",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 1276,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "3744:7:5",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 1278,
"initialValue": null,
"nodeType": "VariableDeclarationStatement",
"src": "3744:13:5"
},
{
"assignments": [],
"declarations": [
{
"constant": false,
"id": 1280,
"name": "receiver",
"nodeType": "VariableDeclaration",
"scope": 1348,
"src": "3767:16:5",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 1279,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "3767:7:5",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 1281,
"initialValue": null,
"nodeType": "VariableDeclarationStatement",
"src": "3767:16:5"
},
{
"assignments": [],
"declarations": [
{
"constant": false,
"id": 1283,
"name": "amount",
"nodeType": "VariableDeclaration",
"scope": 1348,
"src": "3793:14:5",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 1282,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "3793:7:5",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 1284,
"initialValue": null,
"nodeType": "VariableDeclarationStatement",
"src": "3793:14:5"
},
{
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 1288,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 1285,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1232,
"src": "3821:4:5",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"id": 1286,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "3821:11:5",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 1287,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3836:1:5",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "3821:16:5",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": {
"id": 1316,
"nodeType": "Block",
"src": "3942:345:5",
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 1304,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 1302,
"name": "token",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1277,
"src": "3956:5:5",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 1303,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1228,
"src": "3964:2:5",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "3956:10:5",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 1305,
"nodeType": "ExpressionStatement",
"src": "3956:10:5"
},
{
"assignments": [],
"declarations": [
{
"constant": false,
"id": 1307,
"name": "functionIdentifier",
"nodeType": "VariableDeclaration",
"scope": 1348,
"src": "3980:25:5",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes4",
"typeString": "bytes4"
},
"typeName": {
"id": 1306,
"name": "bytes4",
"nodeType": "ElementaryTypeName",
"src": "3980:6:5",
"typeDescriptions": {
"typeIdentifier": "t_bytes4",
"typeString": "bytes4"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 1308,
"initialValue": null,
"nodeType": "VariableDeclarationStatement",
"src": "3980:25:5"
},
{
"externalReferences": [
{
"functionIdentifier": {
"declaration": 1307,
"isOffset": false,
"isSlot": false,
"src": "4046:18:5",
"valueSize": 1
}
},
{
"amount": {
"declaration": 1283,
"isOffset": false,
"isSlot": false,
"src": "4158:6:5",
"valueSize": 1
}
},
{
"data": {
"declaration": 1232,
"isOffset": false,
"isSlot": false,
"src": "4078:4:5",
"valueSize": 1
}
},
{
"receiver": {
"declaration": 1280,
"isOffset": false,
"isSlot": false,
"src": "4107:8:5",
"valueSize": 1
}
},
{
"data": {
"declaration": 1232,
"isOffset": false,
"isSlot": false,
"src": "4129:4:5",
"valueSize": 1
}
},
{
"data": {
"declaration": 1232,
"isOffset": false,
"isSlot": false,
"src": "4178:4:5",
"valueSize": 1
}
}
],
"id": 1309,
"nodeType": "InlineAssembly",
"operations": "{\n functionIdentifier := mload(add(data, 0x20))\n receiver := mload(add(data, 0x24))\n amount := mload(add(data, 0x44))\n}",
"src": "4019:205:5"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_bytes4",
"typeString": "bytes4"
},
"id": 1313,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 1311,
"name": "functionIdentifier",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1307,
"src": "4225:18:5",
"typeDescriptions": {
"typeIdentifier": "t_bytes4",
"typeString": "bytes4"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"id": 1312,
"name": "TRANSFER_FUNCTION_IDENTIFIER",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1096,
"src": "4247:28:5",
"typeDescriptions": {
"typeIdentifier": "t_bytes4",
"typeString": "bytes4"
}
},
"src": "4225:50:5",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 1310,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2092,
"src": "4217:7:5",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 1314,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4217:59:5",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1315,
"nodeType": "ExpressionStatement",
"src": "4217:59:5"
}
]
},
"id": 1317,
"nodeType": "IfStatement",
"src": "3817:470:5",
"trueBody": {
"id": 1301,
"nodeType": "Block",
"src": "3839:89:5",
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 1291,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 1289,
"name": "token",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1277,
"src": "3853:5:5",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"hexValue": "30",
"id": 1290,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3861:1:5",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "3853:9:5",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 1292,
"nodeType": "ExpressionStatement",
"src": "3853:9:5"
},
{
"expression": {
"argumentTypes": null,
"id": 1295,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 1293,
"name": "receiver",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1280,
"src": "3876:8:5",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 1294,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1228,
"src": "3887:2:5",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "3876:13:5",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 1296,
"nodeType": "ExpressionStatement",
"src": "3876:13:5"
},
{
"expression": {
"argumentTypes": null,
"id": 1299,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 1297,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1283,
"src": "3903:6:5",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 1298,
"name": "value",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1230,
"src": "3912:5:5",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "3903:14:5",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 1300,
"nodeType": "ExpressionStatement",
"src": "3903:14:5"
}
]
}
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 1321,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 1319,
"name": "receiver",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1280,
"src": "4304:8:5",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 1320,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4316:1:5",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "4304:13:5",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 1318,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2092,
"src": "4296:7:5",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 1322,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4296:22:5",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1323,
"nodeType": "ExpressionStatement",
"src": "4296:22:5"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 1327,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 1325,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1283,
"src": "4336:6:5",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": ">",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 1326,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4345:1:5",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "4336:10:5",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 1324,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2092,
"src": "4328:7:5",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 1328,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4328:19:5",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1329,
"nodeType": "ExpressionStatement",
"src": "4328:19:5"
},
{
"condition": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1331,
"name": "token",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1277,
"src": "4438:5:5",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 1332,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1283,
"src": "4445:6:5",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 1330,
"name": "isUnderLimit",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1404,
"src": "4425:12:5",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
"typeString": "function (address,uint256) returns (bool)"
}
},
"id": 1333,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4425:27:5",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": null,
"id": 1344,
"nodeType": "IfStatement",
"src": "4421:122:5",
"trueBody": {
"id": 1343,
"nodeType": "Block",
"src": "4454:89:5",
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 1339,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1334,
"name": "dailyLimits",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1104,
"src": "4468:11:5",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1111_storage_$",
"typeString": "mapping(address => struct DailyLimitExtension.DailyLimit storage ref)"
}
},
"id": 1336,
"indexExpression": {
"argumentTypes": null,
"id": 1335,
"name": "token",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1277,
"src": "4480:5:5",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "4468:18:5",
"typeDescriptions": {
"typeIdentifier": "t_struct$_DailyLimit_$1111_storage",
"typeString": "struct DailyLimitExtension.DailyLimit storage ref"
}
},
"id": 1337,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"memberName": "spentToday",
"nodeType": "MemberAccess",
"referencedDeclaration": 1108,
"src": "4468:29:5",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "+=",
"rightHandSide": {
"argumentTypes": null,
"id": 1338,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1283,
"src": "4501:6:5",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "4468:39:5",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 1340,
"nodeType": "ExpressionStatement",
"src": "4468:39:5"
},
{
"expression": {
"argumentTypes": null,
"hexValue": "74727565",
"id": 1341,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4528:4:5",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "true"
},
"functionReturnParameters": 1240,
"id": 1342,
"nodeType": "Return",
"src": "4521:11:5"
}
]
}
},
{
"expression": {
"argumentTypes": null,
"hexValue": "66616c7365",
"id": 1345,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4559:5:5",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "false"
},
"functionReturnParameters": 1240,
"id": 1346,
"nodeType": "Return",
"src": "4552:12:5"
}
]
},
"id": 1348,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": false,
"modifiers": [
{
"arguments": [],
"id": 1237,
"modifierName": {
"argumentTypes": null,
"id": 1236,
"name": "onlyGnosisSafe",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1124,
"src": "3365:14:5",
"typeDescriptions": {
"typeIdentifier": "t_modifier$__$",
"typeString": "modifier ()"
}
},
"nodeType": "ModifierInvocation",
"src": "3365:14:5"
}
],
"name": "isExecutable",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 1235,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1226,
"name": "sender",
"nodeType": "VariableDeclaration",
"scope": 1348,
"src": "3255:14:5",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 1225,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "3255:7:5",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 1228,
"name": "to",
"nodeType": "VariableDeclaration",
"scope": 1348,
"src": "3271:10:5",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 1227,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "3271:7:5",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 1230,
"name": "value",
"nodeType": "VariableDeclaration",
"scope": 1348,
"src": "3283:13:5",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 1229,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "3283:7:5",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 1232,
"name": "data",
"nodeType": "VariableDeclaration",
"scope": 1348,
"src": "3298:10:5",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
},
"typeName": {
"id": 1231,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "3298:5:5",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes storage pointer"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 1234,
"name": "operation",
"nodeType": "VariableDeclaration",
"scope": 1348,
"src": "3310:30:5",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_enum$_Operation_$61",
"typeString": "enum GnosisSafe.Operation"
},
"typeName": {
"contractScope": null,
"id": 1233,
"name": "GnosisSafe.Operation",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 61,
"src": "3310:20:5",
"typeDescriptions": {
"typeIdentifier": "t_enum$_Operation_$61",
"typeString": "enum GnosisSafe.Operation"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "3254:87:5"
},
"payable": false,
"returnParameters": {
"id": 1240,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1239,
"name": "",
"nodeType": "VariableDeclaration",
"scope": 1348,
"src": "3397:4:5",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 1238,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "3397:4:5",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "3396:6:5"
},
"scope": 1418,
"src": "3233:1338:5",
"stateMutability": "nonpayable",
"superFunction": 17,
"visibility": "public"
},
{
"body": {
"id": 1403,
"nodeType": "Block",
"src": "4674:391:5",
"statements": [
{
"assignments": [
1358
],
"declarations": [
{
"constant": false,
"id": 1358,
"name": "dailyLimit",
"nodeType": "VariableDeclaration",
"scope": 1404,
"src": "4684:29:5",
"stateVariable": false,
"storageLocation": "storage",
"typeDescriptions": {
"typeIdentifier": "t_struct$_DailyLimit_$1111_storage_ptr",
"typeString": "struct DailyLimitExtension.DailyLimit storage pointer"
},
"typeName": {
"contractScope": null,
"id": 1357,
"name": "DailyLimit",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 1111,
"src": "4684:10:5",
"typeDescriptions": {
"typeIdentifier": "t_struct$_DailyLimit_$1111_storage_ptr",
"typeString": "struct DailyLimitExtension.DailyLimit storage pointer"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 1362,
"initialValue": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1359,
"name": "dailyLimits",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1104,
"src": "4716:11:5",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1111_storage_$",
"typeString": "mapping(address => struct DailyLimitExtension.DailyLimit storage ref)"
}
},
"id": 1361,
"indexExpression": {
"argumentTypes": null,
"id": 1360,
"name": "token",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1350,
"src": "4728:5:5",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "4716:18:5",
"typeDescriptions": {
"typeIdentifier": "t_struct$_DailyLimit_$1111_storage",
"typeString": "struct DailyLimitExtension.DailyLimit storage ref"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "4684:50:5"
},
{
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 1367,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"arguments": [],
"expression": {
"argumentTypes": [],
"id": 1363,
"name": "today",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1417,
"src": "4748:5:5",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
"typeString": "function () view returns (uint256)"
}
},
"id": 1364,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4748:7:5",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": ">",
"rightExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 1365,
"name": "dailyLimit",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1358,
"src": "4758:10:5",
"typeDescriptions": {
"typeIdentifier": "t_struct$_DailyLimit_$1111_storage_ptr",
"typeString": "struct DailyLimitExtension.DailyLimit storage pointer"
}
},
"id": 1366,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "lastDay",
"nodeType": "MemberAccess",
"referencedDeclaration": 1110,
"src": "4758:18:5",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "4748:28:5",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": null,
"id": 1382,
"nodeType": "IfStatement",
"src": "4744:126:5",
"trueBody": {
"id": 1381,
"nodeType": "Block",
"src": "4778:92:5",
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 1373,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 1368,
"name": "dailyLimit",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1358,
"src": "4792:10:5",
"typeDescriptions": {
"typeIdentifier": "t_struct$_DailyLimit_$1111_storage_ptr",
"typeString": "struct DailyLimitExtension.DailyLimit storage pointer"
}
},
"id": 1370,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"memberName": "lastDay",
"nodeType": "MemberAccess",
"referencedDeclaration": 1110,
"src": "4792:18:5",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"arguments": [],
"expression": {
"argumentTypes": [],
"id": 1371,
"name": "today",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1417,
"src": "4813:5:5",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
"typeString": "function () view returns (uint256)"
}
},
"id": 1372,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4813:7:5",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "4792:28:5",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 1374,
"nodeType": "ExpressionStatement",
"src": "4792:28:5"
},
{
"expression": {
"argumentTypes": null,
"id": 1379,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 1375,
"name": "dailyLimit",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1358,
"src": "4834:10:5",
"typeDescriptions": {
"typeIdentifier": "t_struct$_DailyLimit_$1111_storage_ptr",
"typeString": "struct DailyLimitExtension.DailyLimit storage pointer"
}
},
"id": 1377,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"memberName": "spentToday",
"nodeType": "MemberAccess",
"referencedDeclaration": 1108,
"src": "4834:21:5",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"hexValue": "30",
"id": 1378,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4858:1:5",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "4834:25:5",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 1380,
"nodeType": "ExpressionStatement",
"src": "4834:25:5"
}
]
}
},
{
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"id": 1397,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 1389,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 1386,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 1383,
"name": "dailyLimit",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1358,
"src": "4886:10:5",
"typeDescriptions": {
"typeIdentifier": "t_struct$_DailyLimit_$1111_storage_ptr",
"typeString": "struct DailyLimitExtension.DailyLimit storage pointer"
}
},
"id": 1384,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "spentToday",
"nodeType": "MemberAccess",
"referencedDeclaration": 1108,
"src": "4886:21:5",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "+",
"rightExpression": {
"argumentTypes": null,
"id": 1385,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1352,
"src": "4910:6:5",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "4886:30:5",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "<=",
"rightExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 1387,
"name": "dailyLimit",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1358,
"src": "4920:10:5",
"typeDescriptions": {
"typeIdentifier": "t_struct$_DailyLimit_$1111_storage_ptr",
"typeString": "struct DailyLimitExtension.DailyLimit storage pointer"
}
},
"id": 1388,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "dailyLimit",
"nodeType": "MemberAccess",
"referencedDeclaration": 1106,
"src": "4920:21:5",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "4886:55:5",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "BinaryOperation",
"operator": "&&",
"rightExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 1396,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 1393,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 1390,
"name": "dailyLimit",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1358,
"src": "4957:10:5",
"typeDescriptions": {
"typeIdentifier": "t_struct$_DailyLimit_$1111_storage_ptr",
"typeString": "struct DailyLimitExtension.DailyLimit storage pointer"
}
},
"id": 1391,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "spentToday",
"nodeType": "MemberAccess",
"referencedDeclaration": 1108,
"src": "4957:21:5",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "+",
"rightExpression": {
"argumentTypes": null,
"id": 1392,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1352,
"src": "4981:6:5",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "4957:30:5",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": ">",
"rightExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 1394,
"name": "dailyLimit",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1358,
"src": "4990:10:5",
"typeDescriptions": {
"typeIdentifier": "t_struct$_DailyLimit_$1111_storage_ptr",
"typeString": "struct DailyLimitExtension.DailyLimit storage pointer"
}
},
"id": 1395,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "spentToday",
"nodeType": "MemberAccess",
"referencedDeclaration": 1108,
"src": "4990:21:5",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "4957:54:5",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"src": "4886:125:5",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": null,
"id": 1400,
"nodeType": "IfStatement",
"src": "4879:157:5",
"trueBody": {
"expression": {
"argumentTypes": null,
"hexValue": "74727565",
"id": 1398,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "5032:4:5",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "true"
},
"functionReturnParameters": 1356,
"id": 1399,
"nodeType": "Return",
"src": "5025:11:5"
}
},
{
"expression": {
"argumentTypes": null,
"hexValue": "66616c7365",
"id": 1401,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "5053:5:5",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "false"
},
"functionReturnParameters": 1356,
"id": 1402,
"nodeType": "Return",
"src": "5046:12:5"
}
]
},
"id": 1404,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": false,
"modifiers": [],
"name": "isUnderLimit",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 1353,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1350,
"name": "token",
"nodeType": "VariableDeclaration",
"scope": 1404,
"src": "4599:13:5",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 1349,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "4599:7:5",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 1352,
"name": "amount",
"nodeType": "VariableDeclaration",
"scope": 1404,
"src": "4614:14:5",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 1351,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "4614:7:5",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "4598:31:5"
},
"payable": false,
"returnParameters": {
"id": 1356,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1355,
"name": "",
"nodeType": "VariableDeclaration",
"scope": 1404,
"src": "4664:4:5",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 1354,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "4664:4:5",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "4663:6:5"
},
"scope": 1418,
"src": "4577:488:5",
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "internal"
},
{
"body": {
"id": 1416,
"nodeType": "Block",
"src": "5229:44:5",
"statements": [
{
"expression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 1414,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 1409,
"name": "now",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2091,
"src": "5246:3:5",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "-",
"rightExpression": {
"argumentTypes": null,
"components": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 1412,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 1410,
"name": "now",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2091,
"src": "5253:3:5",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "%",
"rightExpression": {
"argumentTypes": null,
"hexValue": "31",
"id": 1411,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "5259:6:5",
"subdenomination": "days",
"typeDescriptions": {
"typeIdentifier": "t_rational_86400_by_1",
"typeString": "int_const 86400"
},
"value": "1"
},
"src": "5253:12:5",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"id": 1413,
"isConstant": false,
"isInlineArray": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "TupleExpression",
"src": "5252:14:5",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "5246:20:5",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"functionReturnParameters": 1408,
"id": 1415,
"nodeType": "Return",
"src": "5239:27:5"
}
]
},
"id": 1417,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": true,
"modifiers": [],
"name": "today",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 1405,
"nodeType": "ParameterList",
"parameters": [],
"src": "5171:2:5"
},
"payable": false,
"returnParameters": {
"id": 1408,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1407,
"name": "",
"nodeType": "VariableDeclaration",
"scope": 1417,
"src": "5219:4:5",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 1406,
"name": "uint",
"nodeType": "ElementaryTypeName",
"src": "5219:4:5",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "5218:6:5"
},
"scope": 1418,
"src": "5157:116:5",
"stateMutability": "view",
"superFunction": null,
"visibility": "public"
}
],
"scope": 1419,
"src": "247:5028:5"
}
],
"src": "0:5276:5"
},
"legacyAST": {
"absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/extensions/DailyLimitExtension.sol",
"exportedSymbols": {
"DailyLimitExtension": [
1418
]
},
"id": 1419,
"nodeType": "SourceUnit",
"nodes": [
{
"id": 1083,
"literals": [
"solidity",
"0.4",
".19"
],
"nodeType": "PragmaDirective",
"src": "0:23:5"
},
{
"absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Extension.sol",
"file": "../Extension.sol",
"id": 1084,
"nodeType": "ImportDirective",
"scope": 1419,
"sourceUnit": 19,
"src": "24:26:5",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafe.sol",
"file": "../GnosisSafe.sol",
"id": 1085,
"nodeType": "ImportDirective",
"scope": 1419,
"sourceUnit": 964,
"src": "51:27:5",
"symbolAliases": [],
"unitAlias": ""
},
{
"baseContracts": [
{
"arguments": [],
"baseName": {
"contractScope": null,
"id": 1086,
"name": "Extension",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 18,
"src": "279:9:5",
"typeDescriptions": {
"typeIdentifier": "t_contract$_Extension_$18",
"typeString": "contract Extension"
}
},
"id": 1087,
"nodeType": "InheritanceSpecifier",
"src": "279:9:5"
}
],
"contractDependencies": [
18
],
"contractKind": "contract",
"documentation": "@title Daily Limit Extension - Allows to transfer limited amounts of ERC20 tokens and Ether without confirmations.\n @author Stefan George - <stefan@gnosis.pm>",
"fullyImplemented": true,
"id": 1418,
"linearizedBaseContracts": [
1418,
18
],
"name": "DailyLimitExtension",
"nodeType": "ContractDefinition",
"nodes": [
{
"constant": true,
"id": 1090,
"name": "NAME",
"nodeType": "VariableDeclaration",
"scope": 1418,
"src": "296:53:5",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_string_memory",
"typeString": "string memory"
},
"typeName": {
"id": 1088,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "296:6:5",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string storage pointer"
}
},
"value": {
"argumentTypes": null,
"hexValue": "4461696c79204c696d697420457874656e73696f6e",
"id": 1089,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "326:23:5",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_d825d71e418e7ec5e1c3c51592576f08c81f26d9ede420759434d9e0a688c12f",
"typeString": "literal_string \"Daily Limit Extension\""
},
"value": "Daily Limit Extension"
},
"visibility": "public"
},
{
"constant": true,
"id": 1093,
"name": "VERSION",
"nodeType": "VariableDeclaration",
"scope": 1418,
"src": "355:40:5",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_string_memory",
"typeString": "string memory"
},
"typeName": {
"id": 1091,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "355:6:5",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string storage pointer"
}
},
"value": {
"argumentTypes": null,
"hexValue": "302e302e31",
"id": 1092,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "388:7:5",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_ae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc199163811885",
"typeString": "literal_string \"0.0.1\""
},
"value": "0.0.1"
},
"visibility": "public"
},
{
"constant": true,
"id": 1096,
"name": "TRANSFER_FUNCTION_IDENTIFIER",
"nodeType": "VariableDeclaration",
"scope": 1418,
"src": "401:67:5",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes4",
"typeString": "bytes4"
},
"typeName": {
"id": 1094,
"name": "bytes4",
"nodeType": "ElementaryTypeName",
"src": "401:6:5",
"typeDescriptions": {
"typeIdentifier": "t_bytes4",
"typeString": "bytes4"
}
},
"value": {
"argumentTypes": null,
"hexValue": "a9059cbb",
"id": 1095,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "455:13:5",
"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": 1098,
"name": "masterCopy",
"nodeType": "VariableDeclaration",
"scope": 1418,
"src": "475:30:5",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_DailyLimitExtension_$1418",
"typeString": "contract DailyLimitExtension"
},
"typeName": {
"contractScope": null,
"id": 1097,
"name": "DailyLimitExtension",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 1418,
"src": "475:19:5",
"typeDescriptions": {
"typeIdentifier": "t_contract$_DailyLimitExtension_$1418",
"typeString": "contract DailyLimitExtension"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 1100,
"name": "gnosisSafe",
"nodeType": "VariableDeclaration",
"scope": 1418,
"src": "511:28:5",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_GnosisSafe_$963",
"typeString": "contract GnosisSafe"
},
"typeName": {
"contractScope": null,
"id": 1099,
"name": "GnosisSafe",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 963,
"src": "511:10:5",
"typeDescriptions": {
"typeIdentifier": "t_contract$_GnosisSafe_$963",
"typeString": "contract GnosisSafe"
}
},
"value": null,
"visibility": "public"
},
{
"constant": false,
"id": 1104,
"name": "dailyLimits",
"nodeType": "VariableDeclaration",
"scope": 1418,
"src": "617:50:5",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1111_storage_$",
"typeString": "mapping(address => struct DailyLimitExtension.DailyLimit storage ref)"
},
"typeName": {
"id": 1103,
"keyType": {
"id": 1101,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "626:7:5",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Mapping",
"src": "617:31:5",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1111_storage_$",
"typeString": "mapping(address => struct DailyLimitExtension.DailyLimit storage ref)"
},
"valueType": {
"contractScope": null,
"id": 1102,
"name": "DailyLimit",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 1111,
"src": "637:10:5",
"typeDescriptions": {
"typeIdentifier": "t_struct$_DailyLimit_$1111_storage_ptr",
"typeString": "struct DailyLimitExtension.DailyLimit storage pointer"
}
}
},
"value": null,
"visibility": "public"
},
{
"canonicalName": "DailyLimitExtension.DailyLimit",
"id": 1111,
"members": [
{
"constant": false,
"id": 1106,
"name": "dailyLimit",
"nodeType": "VariableDeclaration",
"scope": 1111,
"src": "702:18:5",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 1105,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "702:7:5",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 1108,
"name": "spentToday",
"nodeType": "VariableDeclaration",
"scope": 1111,
"src": "730:18:5",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 1107,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "730:7:5",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 1110,
"name": "lastDay",
"nodeType": "VariableDeclaration",
"scope": 1111,
"src": "758:15:5",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 1109,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "758:7:5",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"name": "DailyLimit",
"nodeType": "StructDefinition",
"scope": 1418,
"src": "674:106:5",
"visibility": "public"
},
{
"body": {
"id": 1123,
"nodeType": "Block",
"src": "812:70:5",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 1119,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 1114,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2089,
"src": "830:3:5",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 1115,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "830:10:5",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1117,
"name": "gnosisSafe",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1100,
"src": "852:10:5",
"typeDescriptions": {
"typeIdentifier": "t_contract$_GnosisSafe_$963",
"typeString": "contract GnosisSafe"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_GnosisSafe_$963",
"typeString": "contract GnosisSafe"
}
],
"id": 1116,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "844:7:5",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": "address"
},
"id": 1118,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "844:19:5",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "830:33:5",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 1113,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2092,
"src": "822:7:5",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 1120,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "822:42:5",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1121,
"nodeType": "ExpressionStatement",
"src": "822:42:5"
},
{
"id": 1122,
"nodeType": "PlaceholderStatement",
"src": "874:1:5"
}
]
},
"id": 1124,
"name": "onlyGnosisSafe",
"nodeType": "ModifierDefinition",
"parameters": {
"id": 1112,
"nodeType": "ParameterList",
"parameters": [],
"src": "809:2:5"
},
"src": "786:96:5",
"visibility": "internal"
},
{
"body": {
"id": 1138,
"nodeType": "Block",
"src": "1299:44:5",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1134,
"name": "tokens",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1127,
"src": "1315:6:5",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
{
"argumentTypes": null,
"id": 1135,
"name": "_dailyLimits",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1130,
"src": "1323:12:5",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
"typeString": "uint256[] memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
},
{
"typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
"typeString": "uint256[] memory"
}
],
"id": 1133,
"name": "setup",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1187,
"src": "1309:5:5",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$",
"typeString": "function (address[] memory,uint256[] memory)"
}
},
"id": 1136,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1309:27:5",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1137,
"nodeType": "ExpressionStatement",
"src": "1309:27:5"
}
]
},
"id": 1139,
"implemented": true,
"isConstructor": true,
"isDeclaredConst": false,
"modifiers": [],
"name": "DailyLimitExtension",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 1131,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1127,
"name": "tokens",
"nodeType": "VariableDeclaration",
"scope": 1139,
"src": "1238:16:5",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
},
"typeName": {
"baseType": {
"id": 1125,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1238:7:5",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 1126,
"length": null,
"nodeType": "ArrayTypeName",
"src": "1238:9:5",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
"typeString": "address[] storage pointer"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 1130,
"name": "_dailyLimits",
"nodeType": "VariableDeclaration",
"scope": 1139,
"src": "1256:22:5",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
"typeString": "uint256[] memory"
},
"typeName": {
"baseType": {
"id": 1128,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1256:7:5",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 1129,
"length": null,
"nodeType": "ArrayTypeName",
"src": "1256:9:5",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
"typeString": "uint256[] storage pointer"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "1237:42:5"
},
"payable": false,
"returnParameters": {
"id": 1132,
"nodeType": "ParameterList",
"parameters": [],
"src": "1299:0:5"
},
"scope": 1418,
"src": "1209:134:5",
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "public"
},
{
"body": {
"id": 1186,
"nodeType": "Block",
"src": "1661:348:5",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 1153,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1150,
"name": "gnosisSafe",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1100,
"src": "1823:10:5",
"typeDescriptions": {
"typeIdentifier": "t_contract$_GnosisSafe_$963",
"typeString": "contract GnosisSafe"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_GnosisSafe_$963",
"typeString": "contract GnosisSafe"
}
],
"id": 1149,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "1815:7:5",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": "address"
},
"id": 1151,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1815:19:5",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 1152,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1838:1:5",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "1815:24:5",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 1148,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2092,
"src": "1807:7:5",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 1154,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1807:33:5",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1155,
"nodeType": "ExpressionStatement",
"src": "1807:33:5"
},
{
"expression": {
"argumentTypes": null,
"id": 1161,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 1156,
"name": "gnosisSafe",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1100,
"src": "1850:10:5",
"typeDescriptions": {
"typeIdentifier": "t_contract$_GnosisSafe_$963",
"typeString": "contract GnosisSafe"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 1158,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2089,
"src": "1874:3:5",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 1159,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "1874:10:5",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 1157,
"name": "GnosisSafe",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 963,
"src": "1863:10:5",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_GnosisSafe_$963_$",
"typeString": "type(contract GnosisSafe)"
}
},
"id": 1160,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1863:22:5",
"typeDescriptions": {
"typeIdentifier": "t_contract$_GnosisSafe_$963",
"typeString": "contract GnosisSafe"
}
},
"src": "1850:35:5",
"typeDescriptions": {
"typeIdentifier": "t_contract$_GnosisSafe_$963",
"typeString": "contract GnosisSafe"
}
},
"id": 1162,
"nodeType": "ExpressionStatement",
"src": "1850:35:5"
},
{
"body": {
"expression": {
"argumentTypes": null,
"id": 1183,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1174,
"name": "dailyLimits",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1104,
"src": "1951:11:5",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1111_storage_$",
"typeString": "mapping(address => struct DailyLimitExtension.DailyLimit storage ref)"
}
},
"id": 1178,
"indexExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1175,
"name": "tokens",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1142,
"src": "1963:6:5",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
"id": 1177,
"indexExpression": {
"argumentTypes": null,
"id": 1176,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1164,
"src": "1970:1:5",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "1963:9:5",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "1951:22:5",
"typeDescriptions": {
"typeIdentifier": "t_struct$_DailyLimit_$1111_storage",
"typeString": "struct DailyLimitExtension.DailyLimit storage ref"
}
},
"id": 1179,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"memberName": "dailyLimit",
"nodeType": "MemberAccess",
"referencedDeclaration": 1106,
"src": "1951:33:5",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1180,
"name": "_dailyLimits",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1145,
"src": "1987:12:5",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
"typeString": "uint256[] memory"
}
},
"id": 1182,
"indexExpression": {
"argumentTypes": null,
"id": 1181,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1164,
"src": "2000:1:5",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "1987:15:5",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "1951:51:5",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 1184,
"nodeType": "ExpressionStatement",
"src": "1951:51:5"
},
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 1170,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 1167,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1164,
"src": "1915:1:5",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "<",
"rightExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 1168,
"name": "tokens",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1142,
"src": "1919:6:5",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
"id": 1169,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "1919:13:5",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "1915:17:5",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 1185,
"initializationExpression": {
"assignments": [
1164
],
"declarations": [
{
"constant": false,
"id": 1164,
"name": "i",
"nodeType": "VariableDeclaration",
"scope": 1187,
"src": "1900:9:5",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 1163,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1900:7:5",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 1166,
"initialValue": {
"argumentTypes": null,
"hexValue": "30",
"id": 1165,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1912:1:5",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"nodeType": "VariableDeclarationStatement",
"src": "1900:13:5"
},
"loopExpression": {
"expression": {
"argumentTypes": null,
"id": 1172,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "++",
"prefix": false,
"src": "1934:3:5",
"subExpression": {
"argumentTypes": null,
"id": 1171,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1164,
"src": "1934:1:5",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 1173,
"nodeType": "ExpressionStatement",
"src": "1934:3:5"
},
"nodeType": "ForStatement",
"src": "1895:107:5"
}
]
},
"id": 1187,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": false,
"modifiers": [],
"name": "setup",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 1146,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1142,
"name": "tokens",
"nodeType": "VariableDeclaration",
"scope": 1187,
"src": "1600:16:5",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
},
"typeName": {
"baseType": {
"id": 1140,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1600:7:5",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 1141,
"length": null,
"nodeType": "ArrayTypeName",
"src": "1600:9:5",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
"typeString": "address[] storage pointer"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 1145,
"name": "_dailyLimits",
"nodeType": "VariableDeclaration",
"scope": 1187,
"src": "1618:22:5",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
"typeString": "uint256[] memory"
},
"typeName": {
"baseType": {
"id": 1143,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1618:7:5",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 1144,
"length": null,
"nodeType": "ArrayTypeName",
"src": "1618:9:5",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
"typeString": "uint256[] storage pointer"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "1599:42:5"
},
"payable": false,
"returnParameters": {
"id": 1147,
"nodeType": "ParameterList",
"parameters": [],
"src": "1661:0:5"
},
"scope": 1418,
"src": "1585:424:5",
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "public"
},
{
"body": {
"id": 1206,
"nodeType": "Block",
"src": "2256:85:5",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 1199,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1196,
"name": "_masterCopy",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1189,
"src": "2282:11:5",
"typeDescriptions": {
"typeIdentifier": "t_contract$_DailyLimitExtension_$1418",
"typeString": "contract DailyLimitExtension"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_DailyLimitExtension_$1418",
"typeString": "contract DailyLimitExtension"
}
],
"id": 1195,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "2274:7:5",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": "address"
},
"id": 1197,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2274:20:5",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 1198,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2298:1:5",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "2274:25:5",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 1194,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2092,
"src": "2266:7:5",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 1200,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2266:34:5",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1201,
"nodeType": "ExpressionStatement",
"src": "2266:34:5"
},
{
"expression": {
"argumentTypes": null,
"id": 1204,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 1202,
"name": "masterCopy",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1098,
"src": "2310:10:5",
"typeDescriptions": {
"typeIdentifier": "t_contract$_DailyLimitExtension_$1418",
"typeString": "contract DailyLimitExtension"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 1203,
"name": "_masterCopy",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1189,
"src": "2323:11:5",
"typeDescriptions": {
"typeIdentifier": "t_contract$_DailyLimitExtension_$1418",
"typeString": "contract DailyLimitExtension"
}
},
"src": "2310:24:5",
"typeDescriptions": {
"typeIdentifier": "t_contract$_DailyLimitExtension_$1418",
"typeString": "contract DailyLimitExtension"
}
},
"id": 1205,
"nodeType": "ExpressionStatement",
"src": "2310:24:5"
}
]
},
"id": 1207,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": false,
"modifiers": [
{
"arguments": [],
"id": 1192,
"modifierName": {
"argumentTypes": null,
"id": 1191,
"name": "onlyGnosisSafe",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1124,
"src": "2237:14:5",
"typeDescriptions": {
"typeIdentifier": "t_modifier$__$",
"typeString": "modifier ()"
}
},
"nodeType": "ModifierInvocation",
"src": "2237:14:5"
}
],
"name": "changeMasterCopy",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 1190,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1189,
"name": "_masterCopy",
"nodeType": "VariableDeclaration",
"scope": 1207,
"src": "2181:31:5",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_DailyLimitExtension_$1418",
"typeString": "contract DailyLimitExtension"
},
"typeName": {
"contractScope": null,
"id": 1188,
"name": "DailyLimitExtension",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 1418,
"src": "2181:19:5",
"typeDescriptions": {
"typeIdentifier": "t_contract$_DailyLimitExtension_$1418",
"typeString": "contract DailyLimitExtension"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "2180:33:5"
},
"payable": false,
"returnParameters": {
"id": 1193,
"nodeType": "ParameterList",
"parameters": [],
"src": "2256:0:5"
},
"scope": 1418,
"src": "2155:186:5",
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "public"
},
{
"body": {
"id": 1223,
"nodeType": "Block",
"src": "2672:59:5",
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 1221,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1216,
"name": "dailyLimits",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1104,
"src": "2682:11:5",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1111_storage_$",
"typeString": "mapping(address => struct DailyLimitExtension.DailyLimit storage ref)"
}
},
"id": 1218,
"indexExpression": {
"argumentTypes": null,
"id": 1217,
"name": "token",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1209,
"src": "2694:5:5",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "2682:18:5",
"typeDescriptions": {
"typeIdentifier": "t_struct$_DailyLimit_$1111_storage",
"typeString": "struct DailyLimitExtension.DailyLimit storage ref"
}
},
"id": 1219,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"memberName": "dailyLimit",
"nodeType": "MemberAccess",
"referencedDeclaration": 1106,
"src": "2682:29:5",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 1220,
"name": "dailyLimit",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1211,
"src": "2714:10:5",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "2682:42:5",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 1222,
"nodeType": "ExpressionStatement",
"src": "2682:42:5"
}
]
},
"id": 1224,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": false,
"modifiers": [
{
"arguments": [],
"id": 1214,
"modifierName": {
"argumentTypes": null,
"id": 1213,
"name": "onlyGnosisSafe",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1124,
"src": "2653:14:5",
"typeDescriptions": {
"typeIdentifier": "t_modifier$__$",
"typeString": "modifier ()"
}
},
"nodeType": "ModifierInvocation",
"src": "2653:14:5"
}
],
"name": "changeDailyLimit",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 1212,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1209,
"name": "token",
"nodeType": "VariableDeclaration",
"scope": 1224,
"src": "2595:13:5",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 1208,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2595:7:5",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 1211,
"name": "dailyLimit",
"nodeType": "VariableDeclaration",
"scope": 1224,
"src": "2610:18:5",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 1210,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "2610:7:5",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "2594:35:5"
},
"payable": false,
"returnParameters": {
"id": 1215,
"nodeType": "ParameterList",
"parameters": [],
"src": "2672:0:5"
},
"scope": 1418,
"src": "2569:162:5",
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "public"
},
{
"body": {
"id": 1347,
"nodeType": "Block",
"src": "3407:1164:5",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1244,
"name": "sender",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1226,
"src": "3521:6:5",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"expression": {
"argumentTypes": null,
"id": 1242,
"name": "gnosisSafe",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1100,
"src": "3502:10:5",
"typeDescriptions": {
"typeIdentifier": "t_contract$_GnosisSafe_$963",
"typeString": "contract GnosisSafe"
}
},
"id": 1243,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "isOwner",
"nodeType": "MemberAccess",
"referencedDeclaration": 47,
"src": "3502:18:5",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$",
"typeString": "function (address) view external returns (bool)"
}
},
"id": 1245,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3502:26:5",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 1241,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2092,
"src": "3494:7:5",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 1246,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3494:35:5",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1247,
"nodeType": "ExpressionStatement",
"src": "3494:35:5"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_enum$_Operation_$61",
"typeString": "enum GnosisSafe.Operation"
},
"id": 1253,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 1249,
"name": "operation",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1234,
"src": "3547:9:5",
"typeDescriptions": {
"typeIdentifier": "t_enum$_Operation_$61",
"typeString": "enum GnosisSafe.Operation"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 1250,
"name": "GnosisSafe",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 963,
"src": "3560:10:5",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_GnosisSafe_$963_$",
"typeString": "type(contract GnosisSafe)"
}
},
"id": 1251,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "Operation",
"nodeType": "MemberAccess",
"referencedDeclaration": 61,
"src": "3560:20:5",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_enum$_Operation_$61_$",
"typeString": "type(enum GnosisSafe.Operation)"
}
},
"id": 1252,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberName": "Call",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "3560:25:5",
"typeDescriptions": {
"typeIdentifier": "t_enum$_Operation_$61",
"typeString": "enum GnosisSafe.Operation"
}
},
"src": "3547:38:5",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 1248,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2092,
"src": "3539:7:5",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 1254,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3539:47:5",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1255,
"nodeType": "ExpressionStatement",
"src": "3539:47:5"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"id": 1273,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"id": 1264,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 1260,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 1257,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1232,
"src": "3671:4:5",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"id": 1258,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "3671:11:5",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 1259,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3686:1:5",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "3671:16:5",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "BinaryOperation",
"operator": "&&",
"rightExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 1263,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 1261,
"name": "value",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1230,
"src": "3691:5:5",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": ">",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 1262,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3699:1:5",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "3691:9:5",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"src": "3671:29:5",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "BinaryOperation",
"operator": "||",
"rightExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"id": 1272,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 1268,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 1265,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1232,
"src": "3704:4:5",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"id": 1266,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "3704:11:5",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": ">",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 1267,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3718:1:5",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "3704:15:5",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "BinaryOperation",
"operator": "&&",
"rightExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 1271,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 1269,
"name": "value",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1230,
"src": "3723:5:5",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 1270,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3732:1:5",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "3723:10:5",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"src": "3704:29:5",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"src": "3671:62:5",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 1256,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2092,
"src": "3663:7:5",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 1274,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3663:71:5",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1275,
"nodeType": "ExpressionStatement",
"src": "3663:71:5"
},
{
"assignments": [],
"declarations": [
{
"constant": false,
"id": 1277,
"name": "token",
"nodeType": "VariableDeclaration",
"scope": 1348,
"src": "3744:13:5",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 1276,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "3744:7:5",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 1278,
"initialValue": null,
"nodeType": "VariableDeclarationStatement",
"src": "3744:13:5"
},
{
"assignments": [],
"declarations": [
{
"constant": false,
"id": 1280,
"name": "receiver",
"nodeType": "VariableDeclaration",
"scope": 1348,
"src": "3767:16:5",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 1279,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "3767:7:5",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 1281,
"initialValue": null,
"nodeType": "VariableDeclarationStatement",
"src": "3767:16:5"
},
{
"assignments": [],
"declarations": [
{
"constant": false,
"id": 1283,
"name": "amount",
"nodeType": "VariableDeclaration",
"scope": 1348,
"src": "3793:14:5",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 1282,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "3793:7:5",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 1284,
"initialValue": null,
"nodeType": "VariableDeclarationStatement",
"src": "3793:14:5"
},
{
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 1288,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 1285,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1232,
"src": "3821:4:5",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"id": 1286,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "3821:11:5",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 1287,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3836:1:5",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "3821:16:5",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": {
"id": 1316,
"nodeType": "Block",
"src": "3942:345:5",
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 1304,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 1302,
"name": "token",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1277,
"src": "3956:5:5",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 1303,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1228,
"src": "3964:2:5",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "3956:10:5",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 1305,
"nodeType": "ExpressionStatement",
"src": "3956:10:5"
},
{
"assignments": [],
"declarations": [
{
"constant": false,
"id": 1307,
"name": "functionIdentifier",
"nodeType": "VariableDeclaration",
"scope": 1348,
"src": "3980:25:5",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes4",
"typeString": "bytes4"
},
"typeName": {
"id": 1306,
"name": "bytes4",
"nodeType": "ElementaryTypeName",
"src": "3980:6:5",
"typeDescriptions": {
"typeIdentifier": "t_bytes4",
"typeString": "bytes4"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 1308,
"initialValue": null,
"nodeType": "VariableDeclarationStatement",
"src": "3980:25:5"
},
{
"externalReferences": [
{
"functionIdentifier": {
"declaration": 1307,
"isOffset": false,
"isSlot": false,
"src": "4046:18:5",
"valueSize": 1
}
},
{
"amount": {
"declaration": 1283,
"isOffset": false,
"isSlot": false,
"src": "4158:6:5",
"valueSize": 1
}
},
{
"data": {
"declaration": 1232,
"isOffset": false,
"isSlot": false,
"src": "4078:4:5",
"valueSize": 1
}
},
{
"receiver": {
"declaration": 1280,
"isOffset": false,
"isSlot": false,
"src": "4107:8:5",
"valueSize": 1
}
},
{
"data": {
"declaration": 1232,
"isOffset": false,
"isSlot": false,
"src": "4129:4:5",
"valueSize": 1
}
},
{
"data": {
"declaration": 1232,
"isOffset": false,
"isSlot": false,
"src": "4178:4:5",
"valueSize": 1
}
}
],
"id": 1309,
"nodeType": "InlineAssembly",
"operations": "{\n functionIdentifier := mload(add(data, 0x20))\n receiver := mload(add(data, 0x24))\n amount := mload(add(data, 0x44))\n}",
"src": "4019:205:5"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_bytes4",
"typeString": "bytes4"
},
"id": 1313,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 1311,
"name": "functionIdentifier",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1307,
"src": "4225:18:5",
"typeDescriptions": {
"typeIdentifier": "t_bytes4",
"typeString": "bytes4"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"id": 1312,
"name": "TRANSFER_FUNCTION_IDENTIFIER",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1096,
"src": "4247:28:5",
"typeDescriptions": {
"typeIdentifier": "t_bytes4",
"typeString": "bytes4"
}
},
"src": "4225:50:5",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 1310,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2092,
"src": "4217:7:5",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 1314,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4217:59:5",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1315,
"nodeType": "ExpressionStatement",
"src": "4217:59:5"
}
]
},
"id": 1317,
"nodeType": "IfStatement",
"src": "3817:470:5",
"trueBody": {
"id": 1301,
"nodeType": "Block",
"src": "3839:89:5",
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 1291,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 1289,
"name": "token",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1277,
"src": "3853:5:5",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"hexValue": "30",
"id": 1290,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3861:1:5",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "3853:9:5",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 1292,
"nodeType": "ExpressionStatement",
"src": "3853:9:5"
},
{
"expression": {
"argumentTypes": null,
"id": 1295,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 1293,
"name": "receiver",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1280,
"src": "3876:8:5",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 1294,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1228,
"src": "3887:2:5",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "3876:13:5",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 1296,
"nodeType": "ExpressionStatement",
"src": "3876:13:5"
},
{
"expression": {
"argumentTypes": null,
"id": 1299,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 1297,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1283,
"src": "3903:6:5",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 1298,
"name": "value",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1230,
"src": "3912:5:5",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "3903:14:5",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 1300,
"nodeType": "ExpressionStatement",
"src": "3903:14:5"
}
]
}
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 1321,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 1319,
"name": "receiver",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1280,
"src": "4304:8:5",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 1320,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4316:1:5",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "4304:13:5",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 1318,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2092,
"src": "4296:7:5",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 1322,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4296:22:5",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1323,
"nodeType": "ExpressionStatement",
"src": "4296:22:5"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 1327,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 1325,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1283,
"src": "4336:6:5",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": ">",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 1326,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4345:1:5",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "4336:10:5",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 1324,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2092,
"src": "4328:7:5",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 1328,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4328:19:5",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1329,
"nodeType": "ExpressionStatement",
"src": "4328:19:5"
},
{
"condition": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1331,
"name": "token",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1277,
"src": "4438:5:5",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 1332,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1283,
"src": "4445:6:5",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 1330,
"name": "isUnderLimit",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1404,
"src": "4425:12:5",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
"typeString": "function (address,uint256) returns (bool)"
}
},
"id": 1333,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4425:27:5",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": null,
"id": 1344,
"nodeType": "IfStatement",
"src": "4421:122:5",
"trueBody": {
"id": 1343,
"nodeType": "Block",
"src": "4454:89:5",
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 1339,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1334,
"name": "dailyLimits",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1104,
"src": "4468:11:5",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1111_storage_$",
"typeString": "mapping(address => struct DailyLimitExtension.DailyLimit storage ref)"
}
},
"id": 1336,
"indexExpression": {
"argumentTypes": null,
"id": 1335,
"name": "token",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1277,
"src": "4480:5:5",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "4468:18:5",
"typeDescriptions": {
"typeIdentifier": "t_struct$_DailyLimit_$1111_storage",
"typeString": "struct DailyLimitExtension.DailyLimit storage ref"
}
},
"id": 1337,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"memberName": "spentToday",
"nodeType": "MemberAccess",
"referencedDeclaration": 1108,
"src": "4468:29:5",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "+=",
"rightHandSide": {
"argumentTypes": null,
"id": 1338,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1283,
"src": "4501:6:5",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "4468:39:5",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 1340,
"nodeType": "ExpressionStatement",
"src": "4468:39:5"
},
{
"expression": {
"argumentTypes": null,
"hexValue": "74727565",
"id": 1341,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4528:4:5",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "true"
},
"functionReturnParameters": 1240,
"id": 1342,
"nodeType": "Return",
"src": "4521:11:5"
}
]
}
},
{
"expression": {
"argumentTypes": null,
"hexValue": "66616c7365",
"id": 1345,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4559:5:5",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "false"
},
"functionReturnParameters": 1240,
"id": 1346,
"nodeType": "Return",
"src": "4552:12:5"
}
]
},
"id": 1348,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": false,
"modifiers": [
{
"arguments": [],
"id": 1237,
"modifierName": {
"argumentTypes": null,
"id": 1236,
"name": "onlyGnosisSafe",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1124,
"src": "3365:14:5",
"typeDescriptions": {
"typeIdentifier": "t_modifier$__$",
"typeString": "modifier ()"
}
},
"nodeType": "ModifierInvocation",
"src": "3365:14:5"
}
],
"name": "isExecutable",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 1235,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1226,
"name": "sender",
"nodeType": "VariableDeclaration",
"scope": 1348,
"src": "3255:14:5",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 1225,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "3255:7:5",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 1228,
"name": "to",
"nodeType": "VariableDeclaration",
"scope": 1348,
"src": "3271:10:5",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 1227,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "3271:7:5",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 1230,
"name": "value",
"nodeType": "VariableDeclaration",
"scope": 1348,
"src": "3283:13:5",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 1229,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "3283:7:5",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 1232,
"name": "data",
"nodeType": "VariableDeclaration",
"scope": 1348,
"src": "3298:10:5",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
},
"typeName": {
"id": 1231,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "3298:5:5",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes storage pointer"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 1234,
"name": "operation",
"nodeType": "VariableDeclaration",
"scope": 1348,
"src": "3310:30:5",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_enum$_Operation_$61",
"typeString": "enum GnosisSafe.Operation"
},
"typeName": {
"contractScope": null,
"id": 1233,
"name": "GnosisSafe.Operation",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 61,
"src": "3310:20:5",
"typeDescriptions": {
"typeIdentifier": "t_enum$_Operation_$61",
"typeString": "enum GnosisSafe.Operation"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "3254:87:5"
},
"payable": false,
"returnParameters": {
"id": 1240,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1239,
"name": "",
"nodeType": "VariableDeclaration",
"scope": 1348,
"src": "3397:4:5",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 1238,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "3397:4:5",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "3396:6:5"
},
"scope": 1418,
"src": "3233:1338:5",
"stateMutability": "nonpayable",
"superFunction": 17,
"visibility": "public"
},
{
"body": {
"id": 1403,
"nodeType": "Block",
"src": "4674:391:5",
"statements": [
{
"assignments": [
1358
],
"declarations": [
{
"constant": false,
"id": 1358,
"name": "dailyLimit",
"nodeType": "VariableDeclaration",
"scope": 1404,
"src": "4684:29:5",
"stateVariable": false,
"storageLocation": "storage",
"typeDescriptions": {
"typeIdentifier": "t_struct$_DailyLimit_$1111_storage_ptr",
"typeString": "struct DailyLimitExtension.DailyLimit storage pointer"
},
"typeName": {
"contractScope": null,
"id": 1357,
"name": "DailyLimit",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 1111,
"src": "4684:10:5",
"typeDescriptions": {
"typeIdentifier": "t_struct$_DailyLimit_$1111_storage_ptr",
"typeString": "struct DailyLimitExtension.DailyLimit storage pointer"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 1362,
"initialValue": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1359,
"name": "dailyLimits",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1104,
"src": "4716:11:5",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1111_storage_$",
"typeString": "mapping(address => struct DailyLimitExtension.DailyLimit storage ref)"
}
},
"id": 1361,
"indexExpression": {
"argumentTypes": null,
"id": 1360,
"name": "token",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1350,
"src": "4728:5:5",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "4716:18:5",
"typeDescriptions": {
"typeIdentifier": "t_struct$_DailyLimit_$1111_storage",
"typeString": "struct DailyLimitExtension.DailyLimit storage ref"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "4684:50:5"
},
{
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 1367,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"arguments": [],
"expression": {
"argumentTypes": [],
"id": 1363,
"name": "today",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1417,
"src": "4748:5:5",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
"typeString": "function () view returns (uint256)"
}
},
"id": 1364,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4748:7:5",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": ">",
"rightExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 1365,
"name": "dailyLimit",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1358,
"src": "4758:10:5",
"typeDescriptions": {
"typeIdentifier": "t_struct$_DailyLimit_$1111_storage_ptr",
"typeString": "struct DailyLimitExtension.DailyLimit storage pointer"
}
},
"id": 1366,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "lastDay",
"nodeType": "MemberAccess",
"referencedDeclaration": 1110,
"src": "4758:18:5",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "4748:28:5",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": null,
"id": 1382,
"nodeType": "IfStatement",
"src": "4744:126:5",
"trueBody": {
"id": 1381,
"nodeType": "Block",
"src": "4778:92:5",
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 1373,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 1368,
"name": "dailyLimit",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1358,
"src": "4792:10:5",
"typeDescriptions": {
"typeIdentifier": "t_struct$_DailyLimit_$1111_storage_ptr",
"typeString": "struct DailyLimitExtension.DailyLimit storage pointer"
}
},
"id": 1370,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"memberName": "lastDay",
"nodeType": "MemberAccess",
"referencedDeclaration": 1110,
"src": "4792:18:5",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"arguments": [],
"expression": {
"argumentTypes": [],
"id": 1371,
"name": "today",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1417,
"src": "4813:5:5",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
"typeString": "function () view returns (uint256)"
}
},
"id": 1372,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4813:7:5",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "4792:28:5",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 1374,
"nodeType": "ExpressionStatement",
"src": "4792:28:5"
},
{
"expression": {
"argumentTypes": null,
"id": 1379,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 1375,
"name": "dailyLimit",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1358,
"src": "4834:10:5",
"typeDescriptions": {
"typeIdentifier": "t_struct$_DailyLimit_$1111_storage_ptr",
"typeString": "struct DailyLimitExtension.DailyLimit storage pointer"
}
},
"id": 1377,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"memberName": "spentToday",
"nodeType": "MemberAccess",
"referencedDeclaration": 1108,
"src": "4834:21:5",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"hexValue": "30",
"id": 1378,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4858:1:5",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "4834:25:5",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 1380,
"nodeType": "ExpressionStatement",
"src": "4834:25:5"
}
]
}
},
{
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"id": 1397,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 1389,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 1386,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 1383,
"name": "dailyLimit",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1358,
"src": "4886:10:5",
"typeDescriptions": {
"typeIdentifier": "t_struct$_DailyLimit_$1111_storage_ptr",
"typeString": "struct DailyLimitExtension.DailyLimit storage pointer"
}
},
"id": 1384,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "spentToday",
"nodeType": "MemberAccess",
"referencedDeclaration": 1108,
"src": "4886:21:5",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "+",
"rightExpression": {
"argumentTypes": null,
"id": 1385,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1352,
"src": "4910:6:5",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "4886:30:5",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "<=",
"rightExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 1387,
"name": "dailyLimit",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1358,
"src": "4920:10:5",
"typeDescriptions": {
"typeIdentifier": "t_struct$_DailyLimit_$1111_storage_ptr",
"typeString": "struct DailyLimitExtension.DailyLimit storage pointer"
}
},
"id": 1388,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "dailyLimit",
"nodeType": "MemberAccess",
"referencedDeclaration": 1106,
"src": "4920:21:5",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "4886:55:5",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "BinaryOperation",
"operator": "&&",
"rightExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 1396,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 1393,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 1390,
"name": "dailyLimit",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1358,
"src": "4957:10:5",
"typeDescriptions": {
"typeIdentifier": "t_struct$_DailyLimit_$1111_storage_ptr",
"typeString": "struct DailyLimitExtension.DailyLimit storage pointer"
}
},
"id": 1391,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "spentToday",
"nodeType": "MemberAccess",
"referencedDeclaration": 1108,
"src": "4957:21:5",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "+",
"rightExpression": {
"argumentTypes": null,
"id": 1392,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1352,
"src": "4981:6:5",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "4957:30:5",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": ">",
"rightExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 1394,
"name": "dailyLimit",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1358,
"src": "4990:10:5",
"typeDescriptions": {
"typeIdentifier": "t_struct$_DailyLimit_$1111_storage_ptr",
"typeString": "struct DailyLimitExtension.DailyLimit storage pointer"
}
},
"id": 1395,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "spentToday",
"nodeType": "MemberAccess",
"referencedDeclaration": 1108,
"src": "4990:21:5",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "4957:54:5",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"src": "4886:125:5",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": null,
"id": 1400,
"nodeType": "IfStatement",
"src": "4879:157:5",
"trueBody": {
"expression": {
"argumentTypes": null,
"hexValue": "74727565",
"id": 1398,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "5032:4:5",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "true"
},
"functionReturnParameters": 1356,
"id": 1399,
"nodeType": "Return",
"src": "5025:11:5"
}
},
{
"expression": {
"argumentTypes": null,
"hexValue": "66616c7365",
"id": 1401,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "5053:5:5",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "false"
},
"functionReturnParameters": 1356,
"id": 1402,
"nodeType": "Return",
"src": "5046:12:5"
}
]
},
"id": 1404,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": false,
"modifiers": [],
"name": "isUnderLimit",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 1353,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1350,
"name": "token",
"nodeType": "VariableDeclaration",
"scope": 1404,
"src": "4599:13:5",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 1349,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "4599:7:5",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 1352,
"name": "amount",
"nodeType": "VariableDeclaration",
"scope": 1404,
"src": "4614:14:5",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 1351,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "4614:7:5",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "4598:31:5"
},
"payable": false,
"returnParameters": {
"id": 1356,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1355,
"name": "",
"nodeType": "VariableDeclaration",
"scope": 1404,
"src": "4664:4:5",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 1354,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "4664:4:5",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "4663:6:5"
},
"scope": 1418,
"src": "4577:488:5",
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "internal"
},
{
"body": {
"id": 1416,
"nodeType": "Block",
"src": "5229:44:5",
"statements": [
{
"expression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 1414,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 1409,
"name": "now",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2091,
"src": "5246:3:5",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "-",
"rightExpression": {
"argumentTypes": null,
"components": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 1412,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 1410,
"name": "now",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2091,
"src": "5253:3:5",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "%",
"rightExpression": {
"argumentTypes": null,
"hexValue": "31",
"id": 1411,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "5259:6:5",
"subdenomination": "days",
"typeDescriptions": {
"typeIdentifier": "t_rational_86400_by_1",
"typeString": "int_const 86400"
},
"value": "1"
},
"src": "5253:12:5",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"id": 1413,
"isConstant": false,
"isInlineArray": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "TupleExpression",
"src": "5252:14:5",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "5246:20:5",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"functionReturnParameters": 1408,
"id": 1415,
"nodeType": "Return",
"src": "5239:27:5"
}
]
},
"id": 1417,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": true,
"modifiers": [],
"name": "today",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 1405,
"nodeType": "ParameterList",
"parameters": [],
"src": "5171:2:5"
},
"payable": false,
"returnParameters": {
"id": 1408,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1407,
"name": "",
"nodeType": "VariableDeclaration",
"scope": 1417,
"src": "5219:4:5",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 1406,
"name": "uint",
"nodeType": "ElementaryTypeName",
"src": "5219:4:5",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "5218:6:5"
},
"scope": 1418,
"src": "5157:116:5",
"stateMutability": "view",
"superFunction": null,
"visibility": "public"
}
],
"scope": 1419,
"src": "247:5028:5"
}
],
"src": "0:5276:5"
},
"compiler": {
"name": "solc",
"version": "0.4.19+commit.c4cbbb05.Emscripten.clang"
},
"networks": {
"4": {
"events": {},
"links": {},
"address": "0xa79d02e23d840830c4f6c623a2b60310769c3a4b",
"transactionHash": "0xb3a98f4a3e8373b6de6b63eaf25e88a3593003119f1df8a30a020f4c9a6cc322"
},
"42": {
"events": {},
"links": {},
"address": "0xd563051ec0a4aa4756dd1f0d21ef2e6ef0fae3e2",
"transactionHash": "0xdec49def750774a696ff6d1de86b27d3eac5967850d8f56e85f7c93bfaf17592"
},
"1525342778744": {
"events": {},
"links": {},
"address": "0x1b701c69619a38a7b779bef1f8a72dec2b9f402f",
"transactionHash": "0xe329bfbfb0449b969df0e144a935e7f94e58f4e7188f6c6626faf1d7ee7ded84"
},
"1525789101965": {
"events": {},
"links": {},
"address": "0xee471df0173d120eface5e5cf69a05cc4d1ce78a",
"transactionHash": "0xfd1473bdb9d32d9cef56f6fc22af6034ebd9f2aeb8d55ce0985f29b4086514a2"
}
},
"schemaVersion": "2.0.0",
"updatedAt": "2018-05-08T14:18:44.022Z"
}